Since the arrival of Oracle Fusion Middleware 11G both Business Process Management (BPM) and Business Process Execution Language (BPEL) are integral part of the Oracle SOA Suite. BPM and BPEL have distinctive usage areas but certainly also overlapping functionality. The question I’ve got recently quite a few times is, when to use what, and when can both BPM and BPEL be used to strengthen the solution
What is Business Process Management (BPM)
First a short recap of the use cases for using BPM:
- Helps in structuring work that needs to be done, whether this be automated or manually.
- Be able to get insight in work that has been done, learn from it and improve your current work process.
- Be able to change your processes and know where a process change impact your systems and what people need to do.
- Shift towards ‘build-to-change’ processes, as opposed to ‘build-to-last’ back-office applications
- Ensure that compliance is maintained during any changes to processes
In order to bring standardization into the Business Process Modeling Notation (BPMN) world Oracle, SAP and IBM joined forces to come up with a standard and structure for Business Modeling. This standard is executed as part of the Object Management Group () aimed at standardization in the Software world. The name of this specification is BPMN 2.0 and is due to be ratified. The aim of this project was threefold,
- Create a simple and understandable methodology
- Make sure that the model is interchangeable between vendors
- Aim for a directly run-able model
Oracle has standardized its BPM stack according to the BPMN20 specification and implemented it as integral part of the Oracle Fusion Middleware 11G. This implementation is very visual and aligns with the BPMN20 requirement ‘aim for a directly run-able model’.
The credo of Oracle around BPM is “What you see is what you execute”.
Oracle has two tools to model BPM processes, first of all the Process Composer and is browser based. This tool helps modeling in workshops in a fast way, and avoids having Business to work with the more technically aimed JDeveloper. The second BPM tool is executed within Oracle JDeveloper. It contains the same elements as the Process Composer, and the ability to get into more (technical) detail. When is BPM best used?
- BPM is aimed at delivering Business Functionality, the process definitions depict how the Business sees their processes and abstracts all technical details
- The processes to be delivered contain Human Interaction
- The process is still unclear, workshops are needed to define and refine the process flow
- The process contains loop backs to previous activities, for instance and end-user enters his credit card in Human Task, the credit card is validated but returns a false, you’d like to pass the control to the previous Human Task to re-enter the credit card. This loop back behavior is typically used in conjunction with Human Tasks.
Business Process Execution Language (BPEL) is created out of an effort to standardize process execution, just like Web Services helped in standardizing communication between applications. The standard is defined as part of the OASIS standard group. Oracle BPEL is also visibly aimed. Within JDeveloper BPEL is developed by dragging and dropping BPEL elements and connecting these elements together. Experience has led to the conclusion that BPEL is more aimed at technical integration, or Straight Through Processing (STP) type of functionality, with functionality pretty much set and done.
Though very visually aimed, however BPEL is too technical to be used by Business Analysts and end-users.
Oracle’s credo ‘Reuse to the max’, how can BPM and BPEL work in unison
Oracle Fusion Middleware is aimed at maximum reuse of components across the stack. Reuse of components across the Oracle 11G Fusion Middleware stack, like for instance a Database Adapter, is essential. It improves stability and predictability of the solution. A new component like BPM just is one of the components plugging into the stack and reuses all other components. On run-time level the BPM and BPEL component share the same run-time. As a result of this design principle the BPM part of Fusion Middleware reuses components in the stack like GUI (ADF/Webcenter), Adapters from the integration framework, Oracle Platform Security Services (OPSS), Business Rules etc. All the needed functionality for an application is combined into one single container, implemented via the Service Component Architecture (SCA), see also my SCA Blog. In Oracle Fusion Middleware SCA is used to glue all components used together. Here an example of BPM, BPEL, a Mediator and a Database
Adapter working together in a single application.
How can BPM and BPEL combined strengthen a solution?
BPM is aimed at delivering Business Functionality via processes. It should be avoided to include technical functionality within the BPM processes. These technical process functionalities should be delegated to a BPEL process. This separation of duties avoids difficult explanations to end users when discussing the functionality. Two main types of technical functionalities can be identified. First of all, technical system integration like Straight Through Processing (STP). One simple call from within the BPM process to BPEL, which in turn handles all the complex integration of functionality and data within the BPEL process. Another aspect where BPEL helps the BPM solution is with correlation functionality. The current Oracle BPM solution offers no functionality for waiting for an event, in the middle of the process, that is not directly connected to the BPM process. Correlation support that is supported within Oracle BPM is Request-Reply type of functionality. BPEL can help BPM with the waiting process for an (not correlated) event by acting as a listener. See also the following blog by Rafael Andrade how to use the combined BPM/BPEL functionality. Concluding, within Oracle 11G BPM and BPEL coexist. Both BPM and BPEL have their own use case, and can strengthen one-another to create a solution.