Oracle BPM Advanced Boot Camp Report APIs

Oracle BPM Advanced Boot Camp Report

From July 9th – 13th I joined the Oracle BPM Advanced boot camp in Lisbon Portugal.

During this full week of training at a beautiful location David Read and Susana Santos helped a group of 25 student through the development of a POC case. David Read is an Oracle Senior Principal Product Manager and Susana Santos a Pre-sales consultant of Oracle Lisbon.

The case was about a bank card issuer who has difficulties with managing customer requests for credit limit increases. The current process is largely manual with little transparency. Customers frequently become frustrated with the long processing time and the lack of visibility into the process.

During the week we have to implement the following process in small teams (2 or 3 people). I was in a team with Tiago from Lisbon and Simon from London.

Oracle BPM Advanced Boot Camp Report CCI2

In the rest of this post I will go through a day by day review.

Day 1

Susana led the introduction and gave an overview of the workshop. To my opinion the introduction was a bit to free format which made it difficult to follow.

After that David gave a best practices presentation about setting up a BPM environment. Some of the most useful things mentioned:

  • JDeveloper
    • Increase MaxPermSize
    • Configure SVN
  • Domain Creation
    • Disable any unnecessary applications or adapters
  • Server Configuration
    • Disabling B2B and disabling the refresh of the related materialized views.
    • How to Select Sun or Jrockit, setting the heap size.
    • Update start script to enable external memory configuration
    • Set min/max memory to the same value
    • Reduce ODL log levels to WARN (then enable INFO as needed)
    • Avoid empty listen address on multi-homed servers
    • For development only used the admin service to save memory


Then Susana gave a best practices presentation of the BPM Development Lifecycle. The following topics game along:

  • Development environment overview
    • Jdeveloper with required SOA and BPM extensions
    • scripting tool (Ant and WLST)
    • Version control (subversion)
    • WebLogic Server
    • Unit testing from EM, TestCase, SOAPUI, etc.
      Been through composite unit testing, Business Rules unit testing.
      Loadrunner understand correlation.
      oats (oracle application test service) added correlation support recently.
  • Team Development
    • Special attention was there for UI integration. To my opinion one of the most complicated topics during the process implementation.
  • Managing Code Lines
    • BPM instances are bound to the composite’s version.
      PS4FP enables updates to an existing version without going stale.
      Instances cannot be migrated to a newer version (planned in PS6)
      Alternative approach is to merge changes to prior version(s).
      Update breaking points e.g.: keep the same number of tokens, can’t delete things, stay at same level (not on sub processes), can’t create new path.
  • Integration Testing
    • Continuous Integration (CI) with help of a tool like Hudson.
  • Migration from test to production
    • Overall strategy is outlined


The last topic of the day before starting with the case where the design best practices. David treated the following:

  • Architecture/design best practices
    • Structure
      • Enabling Reuse (Shared Artifact in MDS, Process as a Service, Callable Sub processes)
      • Hiding Complexity (Sub processes)
      • Managing Complexity (refactoring)
    • Capabilities
      • Enabling Flexibility (listen and process events, correlation)
      • Improving Visibility (Business indicators, flex fields, max 60 of these)
    • Scalability and Performance
      • Instance state size
      • Optimizing transformations and logic
      • Human Workflow Payload design and loopbacks
      • Session state size
    • Communicating the Design
      • Enabling multiple views (Tutor export, Simulation models, Composer, Collaboration View)
  • Exception handling best practices
    • Boundary Events
    • Event Sub Process (Interrupting and non-interrupting)
    • Policy based fault handling framework

The day ended with a start of the POC case. About 3 hours to develop the high-level Process model without any implementations.

Day 2

Day 2 started with an explanation of Accessing process instance data and BPM APIs by David.

Accessing process instance data focused on ways to find instances. Could be done with EM, query and reporting or custom applications. Also could make use of Composite Sensors, BI Views, Externalized properties, Flex fields and exposed query API.

The presentation about which API is used at which moment I found the most interesting one during the week. It really gave me insight in how things work under the hood. The following picture show a number of these APIs.

Oracle BPM Advanced Boot Camp Report APIs

We also came in the field of creating a custom workspace. A demo of a custom workspace can be found at

After that Susana gave presentations about the BPM-ADF Integration and Business Rules.

To my opinion, the Business Rules presentation was a bit the story in the book. If you ever have used the Business Rules component there was nothing new underneath the horizon. Unless you think the special attention given to testing is new.

For me the BMP-ADF integration was more interesting. Because I am not specialized in ADF (yet) I experienced this as one of the toughest parts.

  • ADF to BPM/SOA
    • Web-service Datacontrol (of an existing Service based on WSDL)
    • POJO Datacontrol (Bean Model)
    • EDN Events (suppliers and consumers)
  • BPM/SOA to ADF
    • ADF BC Business Services

The day ended with the POC case. About 5 hours we continued on de case. We worked on:

  • Credit Card Web Application for submitting requests.
  • Basic, happy-path process – deployed and running
  • Management reports

At this point in time we started to experience problems with the case. Problems like:

  • Instable network connection
  • Inexplicable behavior of the Virtual Machine (like running the same wizard twice with different outcome). Most likely caused by memory issues.
  • We start making changes in the data model. Causes rework.
  • Splitting the work over the team members in such a small project was not that easy.

Day 3

Susana gave a presentation about how Notifications Works.
Notification can be divided into two areas:  Workflow Participants (human tasks) and Ad-hoc Notification (sending a message). Different way to use notification where described and how to configure UMS.

Next David talked about correlation. Correlation can be automatic (implicit) or message based.
Because of time zone issues it is better not to use dates as part of the correlation key.
The table dlv-subscription contains all pending jobs.

Than policy-based fault handling was explained by Susana. It was a description of the Fault Management Framework.

Again finish with the POC case. Today we worked for 6 hours on the following topics:

  • Custom task form for approval
  • Business Rules implementation
  • Notification implementation

Today we experienced the same kind of issues as yesterday. Especially the human task forms caused some perplexing.

Day 4

Day 4 started with Workspace Customization and Users, Groups, Roles, Identity Providers etc.

Susana started with explaining Oracle Platform Security Services (OPSS).


Oracle BPM Advanced Boot Camp Report opss1

In workspace associate users to roles (not in JDeveloper). From Jdev it only works during the initial deployment. Reason for this is to avoid unintentionally overwriting associated users in working environments.

Ovd (Oracle Virtual Directory) is interesting when multiple users stores are used concurrently. E.g. ldap and database users.
It is better to use the db store (only oracle db) or ldap store (only oid) instead of the jazn.policies file store.


David finished the day by giving and overview of the Product Roadmap. expected in September. 12c end of year or early next year.

  • gets batch update funtionality (update all composites that fullfill a defined filter/criteria – select multiple instances).
  • ucm integration
  • parametric roles
  • alter flow (change position in flow). redo functionality.
  • case management functionality via file mutation. In 12 it will be possible via a GUI.
  • simple form can stay within the project (it is ADF but not a separate ‘ADF’ project).
  • Proces migration functionality. E.g. process version 1.0 –> 1.1. Initially via a script.


  • migratie tool from 10g
  • bpm in cloud
  • bam gaat naar adf. integration with bi
  • business rules get a major facelift to make it more user frendly
  • dynamic case management
  • run bpm processes on integrated WLS.

Today was the last possibility to work on the POC case. In the final 6 hours we need to work on:

  • Canceling and suspending processes
  • The end-to-end complete solution

Unfortunately caused by all kinds of issue my team did not manage to get the end-to-end solution completed.

Day 5

All 9 team gave a presentation of their POC case. I noticed that all teams where experiencing the same kind of issues during the week.


The boot camp training was very useful to get some extra hands-on experience in BPM, network in the Oracle community and get a boost in my personal development with Oracle BPM.
Caused by the issues mentioned earlier It was not that productive as I had hoped in advance.
The primary focus of the case was on integration (a very  important field). Other areas like more complex BPM modeling where not handle. Probably a nice topic for the next boot camp.

Ill end this post by giving my complements to Jurgen Kress and his team for the perfect organization and implementation of the boot camp.