Thursday, November 8, 2012

BPMN Process Monitoring using IBM Business Monitor 7.5

Business Process Modeling Notation (BPMN) Process Monitoring functionality has been introduced in BPM V7.5 Advanced by integrating with IBM Business Monitor V7.5. Similar to a BPEL process and a mediation flow, a BPMN process (BPD in the process application) can also be monitored using Business Monitor. I’d like to share with everyone my recent experience of BPMN process monitoring implementation, which might be helpful for you in any of your projects implemented using BPM 7.5 and later.

Please find below the steps involved in the process monitoring implementation using Process Designer and Integration Designer.

Process Designer:
After a BPD (Business Process Definition) is created in a process application, the tracking definitions have to be added in the BPD. These tracking definitions can be added using Intermediate Tracking Event in the BPD. Before adding the tracking definition, a tracking group has to be created containing all the fields, which need to be tracked in the BPD. A tracking group and can either be created from Performance tab in the left panel under the process application or from the intermediate tracking event in the BPD. Please look at the screen shot below for the tracking group.

After the tracking group is created with all the fields, to be tracked, drag and drop an intermediate event from the palette in the BPD, where you want to define tracking. Please look at the screen shot below for the intermediate event and the implementation part of it.

The tracking group has to be selected or created and the tracked fields should be assigned values (either from process variables or hard coded values) as shown above. Similarly, we can add multiple tracking events in BPD where ever you want to define the tracking. Finally, we need to enable process monitoring in the process app settings (under Monitor Settings) for the process application as shown below.

Integration Designer:
After the changes are done in the Process Designer, a monitor model has to be created using the Integration Designer. A monitor model can either be generated from the process application directly(right click the process app in Business Integration view) or created separately. If we want to create and define our own monitor model instead of generating from the existing process app with predefined inbound events and metrics, we have to create a monitoring project and then create a monitor model. After opening the monitor model in the monitor model editor, we need to define the monitoring context, inbound events and metrics. Before defining the event parts in the inbound event, we would need to know the event(CBE) xml structure for the events emitted from the BPMN process.

We can look at the actual event data using either CBE browser(after enabling event data store) or Event Recording(after enabling event recording) in the admin console in our local test environment, as shown below.

The type/format of the events(emitted from BPD) differs from that of a BPEL process.
is the namespace of the XML Catalog, defined for the events emitted from a BPD. It contains the predefined data types(like mon:eventPointData ), which needs to be selected while adding the event type in the event parts of the inbound event.

In a BPEL process or a mediation component, we have an option to configure any activity or a variable to emit events, so that we can limit the number of events getting emitted to the Business Monitor. However, in BPD, events will get emitted for each and every activity in the BPD and I believe there is no option to control or filter the events getting emitted to the Business Monitor. So, its better to filter the events in the monitor side (receiving end) by adding a filter in the inbound event. Since we have added the tracking events in the BPD, we just need to filter only those events in the monitor side in order to consume the data for the metrics, as long as we don’t need data from the other activities. The following condition would filter out only the tracked events

xs:string(Task_Created_or_Completed/EventPointData/mon:kind) = 'EVENT_THROWN'

After the inbound event is defined, we have to create all the metrics, triggers, timers, counters, cubes, dimensions, KPIs etc., based on our reporting requirements. The reports can be viewed in the Business Space during runtime, after the process app and the monitor model are deployed.

Parthasarathi Jayapathi, a Consultant at Prolifics, has over 8 years of IT experience having expertise in the IBM WebSphere suite of products. Partha has worked with many customers implementing SOA and Integration solutions using IBM and J2EE technologies. He is specialized and certified in BPM V7.5, WebSphere Process Server, WebSphere ESB, WebSphere Business Monitor and WebSphere Lombardi Edition with extensive design and development background. He holds a BE degree in Computer Science, graduated in 2003 from Bharathiar University, India.