Business Activity Monitoring - Sending Events from Business Process Execution Language to IBM Business Monitor
DaveHay 100000GC6F Comments (2) Visits (9217)
Whilst I've used IBM Business Monitor (aka BAM == Business Activity Monitoring) for quite some time now, last week was my first opportunity to get involved in the monitoring of Business Process Execution Language (BPEL) applications, and it was definitely an opportunity to learn a few lessons.
Most importantly, it highlighted the need to read, really really read, the documentation
So we are using BPM Advanced 188.8.131.52 and Business Monitor 184.108.40.206, both running on AIX, against a shared DB2 back-end.
Having successfully used BAM to monitor events from Business Process Modelling Notation (BPMN) applications on this infrastructure, we assumed that all of the hard work, in terms of infrastructure configuration, was completed.
However, our testers reported that, whilst their application started OK, it threw up a number JNDI-related exceptions during use.
The exceptions included: -
CEMEM0003E: The specified emitter factory was not found in JNDI
Caused by: java
ror: CWWBE0013E: An error occurred during the event handling of 'activityFailed' in the observer plug-in type
sed by: com.
Caused by: java
We spent a long time trying to resolve this.
Initially, we confirmed that BPM was already happily emitting events to BAM, via the Service Integration Bus (in essence, one configures a remote Messaging Engine, hosted by BAM, within the BPM SIBus configuration).
For the record, this means that the BPM applications, running on the AppCluster, emits events, which are passed via the Common Event Infrastructure (CEI) framework, running on the SupCluster, to the SIBus, hosted by the MECluster.
After consultation with the wider IBM team, we determined that the process that BPEL uses to emit events from BPM to BAM is completely different to that used by BPMN, which is good to know
The solution was, as is often the case, very simple.
In essence, it is necessary to "tell" the AppCluster, hosting the BPEL applications, that CEI is hosted by the SupCluster.
Of course, this IS documented here: -
Optional: If you are migrating to IBM BPM V8.5 from an earlier version, or if CEI and Business Process Choreographer are deployed on different clusters, configure the CEI emitter factory:
is the name of the application cluster
is the name of the support cluster
is an optional parameter that specifies whether to synchronize the changes to all nodes. By defa
An example of configuring the CEI emitter factory follows:
The important phrase is: -
if CEI and Business Process Choreographer are deployed on different clusters, configure the CEI emitter factory:
That IS the important part.
We're using the so-called Gold Standard BPM topology, aka
Therefore, we DO have CEI and BPC on different clusters, respectively SupCluster and AppCluster.
Following the so-called above, we "told" AppTarget where SupCluster is: -
WASX7209I: Connected to process "dmgr" on node dmgr using SOAP connector; The type of process is: DeploymentManager
WASX7303I: The following options are passed to the scripting environment and are available as arguments that are stored in the argv variable: "[-a, AppCluster, -s, SupCluster]"
XXXX0000I: Updating configuration on server AppClusterMember1 on node AppSrv01Node.
XXXX0000I: Current value: com/
XXXX0000I: New value : cell
XXXX0000I: Configuration is being saved.
XXXX0000I: Synchronizing the configuration across all nodes.
Return: If the command is successfully invoked, a value of 1 is returned.
Once we did this, and restarted the entire BPM Deployment Environment, we no longer saw the JNDI/CEI exceptions, and events emitted by our BPEL application started showing up in BAM.