2 Replies Latest reply on Jul 5, 2011 10:41 AM by byungwoojun

    Is there dynamic process instance flow monitoring?

    byungwoojun Newbie

      I am using jBPM 5.0 and started using jBPM 5.1. From the jBPM console, I can monitor running process instances (e.g., start, signal, delete, terminate, diagram, instance data). For a process flow with intermediate message event(s), I can see the process instance from the console while it is waiting for the message event(s). However, for a synchronous process flow (without any intermediate mesage event(s)), there is little (most likely no) chance to monitor it. If the flow is successfully ended, the processInstanceInfo and other associated tables will NOT have the record(s) - already deleted when the procsss ended. The console server provides REST services, but many of the service interfaces require process instance ids, which are available to outside (e.g., caller) after the StartProcess is done. So, I don't know how to monitor the synchronous process flow. Even asychronous process flow monitoring seems to be pretty static, to me.


      I have a use case that I need to see (display) running process flow progress more dynamically. For example, a process flow consists of 7 service tasks, and some of service tasks take time (e.g., calling external services). I want to have a monitoring capability showing where a process instance is running at(e.g., the 3rd service task is being executed, then, the 4th, the 5th, so on).


      To my knowledge, jBPM 5 flushes process instance data into database tables when a process instance is ended, suspended or stopped at intermediate events. So, using the database tables is not too promising for this. One thing I can think of is use of the ProcessEventListener. I can use the before/afterProcessStarted, before/afterNodeTriggered events, etc., for example, to store the process instance id, the running node names and other data into a custom database tables. Then, by polling the database tables, a GUI (either enhanced console) can display the real-time process status.


      However, if there is built-in jBPM functionalities to support this use case, I'd like to use them.


      Any suggestions will be appreciated.



        • 1. Re: Is there dynamic process instance flow monitoring?
          Kris Verlaenen Master

          Yes, you should take a look at the history log.  While normal persitence (ProcessInstanceInfo) only contains the current state, the history log contains information about what the current state is but also what nodes were executed etc.  The console actually also queries this history log to show you the current state, but you could also query it to get information about process instances that were completed, etc.


          The documentation should hopefully get you started:



          The code itself can be found in the jbpm-bam module.



          • 2. Re: Is there dynamic process instance flow monitoring?
            byungwoojun Newbie

            Thanks Kris for your reply!

            To my understanding, the ProcessInstanceLog, NodeInstanceLog and VariableInstanceLog tables entries are commited (as history entries) when a process flow ends or hits an intermediate message event or timer - not during the process flow is running. Until the commit, querying this history log returns empty. My observation could be wrong. In our use case, we want to see the real-time progress of a running process flow before ends or hits the intermediate message event. Can we do this?



            BTW, I am using JPAKnowledgeService.newStatefulKnowledgeSession.


            Thanks again!