How much do we really know about our business processes:
- Number of started / completed / aborted processes
- Success / failure rate
- Turnaround time
- Root cause of failures
During my latest customer engagement i used some basic process mining and analysis techniques. Process mining is a process management technique that allows for the analysis of business processes based on event logs. The basic idea is to extract knowledge from event logs recorded by an information system. Process mining aims at improving this by providing techniques and tools for discovering process, control, data, organizational, and social structures from event logs.
The customer faced some problems where processes failed for unknown reasons. Their TIBCO BPM engine logs all its BPM activity in a single database table. The documentation revealed the data structure and a hierarchical query was constructed to retrieve all events for a specific set of processes for the last month. The collected event log was imported into a process mining tool and analysed. This allowed me to find the root cause of the problem. More advanced applications can include can be found at the processmining website.
Process mining usually operates on historic data, but for real situational awareness you need real-time data. Complex Event Processing allows to collect and process business process events in real time. This enables for building real-time business process dashboards.
For more information:
For those interested in the hierarchical query for TIBCO BPM on an Oracle database I provide this example:tibc
with events (“Session”, “Time”,”Proces”, “ID”, “Level”,”Path”,”Message”,”Type”,”Activity”,”Sub-Process”,”Sub-Process-ID”)
( select MANAGED_OBJ_ID, EVENT_TIMESTAMP, MANAGED_OBJ_NAME, MANAGED_OBJ_ID, 1, MANAGED_OBJ_NAME,message,managed_obj_type,app_act_name,SUB_PROC_NAME,SUB_PROC_INS_ID
MANAGED_OBJ_NAME = ‘MobileOrderProcess’
— and managed_obj_id = ‘pvm:0a124rrn’
select m.”Session”, d.EVENT_TIMESTAMP, d.MANAGED_OBJ_NAME,d.MANAGED_OBJ_ID,m.”Level” + 1,concat(m.”Path”,CONCAT(‘/’,MANAGED_OBJ_NAME)),d.message,d.managed_obj_type,d.app_act_name,d.SUB_PROC_NAME,d.SUB_PROC_INS_ID
from ec_event d join events m
on (m.”Sub-Process-ID” = d.MANAGED_OBJ_ID)
order by “Session”,”Time”