I visited a customer recently who asked a very interesting question…. they’d been performing a series of stress tests of their Business Process Management project made up of many & complex Business Process Management processes and they wanted to know if there were any activities/paths in any of their processes which they hadn’t traversed… sort of like “Clover” for Business Process Management, This led me to thinking about Business Process Management auditing and cross-referencing this with the Business Process Management activities.
BPMN Code Coverage: The Theory
Let us take a look at the relevant tables in the SOAINFRA schema….
Providing that the audit level has been set sufficiently high (for example “Production” would do), this table stores details of all BPMN activities instantiated at any given time.
BPM_CUBE_ACTIVITY & BPM_CUBE_PROCESS
These tables are a static view of all activities in all deployed process at any given time.
Deployed Business Process Management activities not in BPM_AUDIT_QUERY
It became obvious that selecting all activities in the join of BPM_CUBE_ACTIVITY and BPM_CUBE_PROCESS for a given deployed process/composite which did not exist in BPM_AUDIT_QUERY during a given time period would highlight activities not invoked as part of out testing. As a result I ended up with a piece of SQL thus….
…i.e. which activities in processes “BpmClover” and “BpmCallable” were not traversed in the last 24 hours.
BPMN Code Coverage: The Practice
I needed a fairly simple process to test with, not too complex but with a good selection of activities, human tasks, boundary events, gateways etc… and ended up with the following (not BPMN best practices by any means)….
…i.e. a main process and a callable sub-process. Read the complete article here.
For regular information on Oracle SOA Suite become a member in the SOA & BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account required) If you need support with your account please contact the Oracle Partner Business Center.