Tuesday, November 19, 2013

Why you may consider NOT using the Terminate End Event in Oracle BPM Suite

In this article I explain why you should try to avoid using the Terminate End Event in Oracle BPM 11g.

According to the BPMN specification, the Terminate End Event is supposed to terminate a process instance at the level at which it is raised, including any ongoing activity for sub-processes. But is should not terminate any higher level (parent) process.

With OBPM 11g it works differently (at least up to PS6), as raising a Terminate End Event will actually terminate the composite's instance. Except for human tasks, because as clearly stated in the documentation: "Human tasks are independent from BPMN processes. If you terminate a BPMN process while it runs a user task, the associated human tasks keeps running independently". The reason is that the human workflow engine runs separately from the BPM engine.

In the process below this will result in the situation that the Review Data task will still show in Workspace, while the associated process instance is already terminated. That was not the original intention of this model.


This flow shows what actually happens:


Conclusion: before considering using the Terminate End Event be well aware of its behavior. Consider alternate types of modeling, like raising a business exception that is caught by the parent process, which then uses an Update Task activity to withdraw all human tasks before actually ending. In this way you can prevent any human doing accidentally doing work for nothing.

Such a model would look like this:


3 comments:

Anonymous said...

good article. nice info

Denature Sip said...

good articel... thanks
pengobatan herbal penyakit sipilis
cara pengobatan herbal penyakit sipilis
pengobatan herbal untuk penyakit sipilis
pengobatan herbal utk penyakit sipilis
pengobatan herbal atasi penyakit sipilis
pengobatan tradisional penyakit sipilis

Shoaib Khan said...

Hi,

I have a basic query here. Like a normal process if I have used End Event in my process and let say the process has completed. After that If someone wants to see the data of the process like after a month or so, is it possible to retreive that data and present in a human task?

For instance I created an Order processing application which has Data input human task and data approval human task. Once both human task is completed i'm simply pointing to End Event.

What if after a month that Order data needs to be reviewed by someone, who might be Approval manager or someone just want to see all application and its data submitted by human tasks.