Introduction
Oracle Business Rules 11g – Choices with BPM 11g
There are essentially three choices available when using Business Rules with BPM 11g, each has its own benefits and drawbacks, this blog will explain....
- Business Rules included statically inside the Parent BPM process
- Business Rules contained within their own project/composite and exposed as a webservice
- Business Rules included in a simple BPM project exposed as a webservice
Main Article
There are several touch-points for business rules that need to be understood before deciding which of the above options to choose....
BPM Studio (JDev)....
- historically the starting point for development of rules
- interacts only with design-time MDS partition
- clearly has the ability to “deploy” rules to runtime MDS partition, although this would be restricted to development.
- complete granular security model can be implemented as part of VCS.
SOA Composer....
- One place to dynamically change rules at runtime
- Interacts only with runtime MDS partition
- Manual effort required to keep design-time MDS partition and runtime MDS partition rules in sync...
- Export composite from EM
- Unpack archive
- Extract rules
- Manually update project in Studio / Composer...
- ...OR Cut-and-paste
- No granular security at level of rules or composite... full granular RBAC in BPM 12c (expected)
BPM Composer (Design-time)....
- as this matures it is also possible to develop and alter rules here
- at the time of writing this is restricted to only those rules included statically in a BPM project (PS4FP)
- interacts with design-time MDS partition
- ability to “deploy” rules as part of a BPM composite to runtime MDS partition
- ability to provide workflow to follow in order to deploy (extra level of security)
- security provides separation at the level of the BPM project... partial RBAC
BPM Composer (Runtime)
Any user having the “soaadmin” application role (such as “weblogic”) can view & edit “Runtime Projects” in BPM Composer....
Changes to rules for “runtime projects” are against runtime MDS partition.... i.e. any changes are immediate and do not require re-deploy, exactly as in SOA Composer described previously, and have the same limitations with regards synchronization....
Business Rules inside the Parent Process
For...
- Simplest solution
- Rules available for creation / modification inside BPM Composer
Against...
- Cannot manage the lifecycle of rules separate to the process... modifying and re-deploying the rules also re-deploys the process itself
Business Rules inside Separate Project Exposed as a WebService
For...
- Logical solution
- lifecycle of rules separate to the process
- rules can easily be re-used from other processes
- easy to mediate to different rules services (with same signature) from single BPM process
- process calls mediator
- mediator connected to one abstract external reference
- mediator uses content based routing (and if necessary DVM for another level of abstraction) to change” endpointURI” of called service
Against...
- Rules not available for creation / modification inside BPM Composer
Business Rules Included in Simple BPM Project Exposed as WebService
As above, but include “BPM” when creating project....
For...
- lifecycle of rules separate to the process
- rules can easily be re-used from other processes
- easy to mediate to different rules services (with same signature) from the same BPM process
- Rules available for creation / modification inside BPM Composer
- Modifications to rules inside BPM Composer affect dev MDS, no synchronization issues
Against...
Recommendations ?
As stated there are pro's and con's to each option. An elegant solution is to include rules in a separate BPM project and have business users work on them from within BPM Composer....
- they will likely be familiar with the BPM Composer UI
- access control can be provided at a sufficiently granular level
- they will be working against design-time MDS partition
- workflow can be put in place to protect deployment of changed rules
- in terms of immediacy... will there be any notable difference between updating directly in SOA Composer or updating in BPM Composer and redeploying ?
Mark Foster
Director
Director - Oracle A-Team