Search code examples
design-patternsworkflowjdeveloperbpmn

BPMN Modeling Pattern to create another task without leaving the first


I am modeling a BPMN workflow using Oracle JDeveloper 11.0.6 which has to satisfy following requirements

  • "Process owner" issues a task to have customer's background check. at the same time he/she will progress to "pending for check result". I designed this using parallel gateway to split flow to "pending for check result" and "make background check"
  • "Administrative officer" will have a manaul process (not in the model) to perform background check in "make background check" human task. When he/shee issue a task, work flow will progress to "enter check result" human task. When the background check is completed he/she will fill data in a form to end "enter check result" task. This branch will then proceed to closing parallel gateway
  • In "pending for check result" human task, "process owner" will keep looking whether result is entered by "administrative officer" yet. However, he/she may start another process called "request additional documents" which will not make human task "pending for check result" changes its state.
  • When "process owner" sees that information entered by "administrative officer" is complete, he/she will click end task button to tell workflow that this task is completed. The flow will move on to another approval tasks before the process is ended.

My users has strict requirements that the "pending for check result" task must not be completed until chcek result is completed ("process owner" will click a button to confirm this). Calling "request additional document" must not change the state of "pending for check result" either.

Currently, I plan to add a button in ADF form to call a web service. This service will call "request additional documents" process without changing anything in current tasks ("pending for check result"). The problem is that this solution cannot be seen by people looking only at the workflow. They have to track down the code to understand entire flow (or reading my description).

My question is: Can we have a human task creating another human task or calling another process in BPMN without making the caller task changing its state? If it is possible, how to do it?


Solution

  • this is just an opinion, not a real solution

    I don't know what are the restrictions imposed by the JDeveloper tool or what are some limitations imposed by a workflow interpreting engine, e.g. making state changes or sending notifications etc.

    But from the BPMN language perspective alone I'm not aware of any reason why "human task" vs. "automatic machine task" should make a big difference. In case of power outage a human can execute a "task" with paper and pencil or with screws and screwdriver, the process model would not change. On the other hand even in small post office you can occasionally lease a letter sorting machine and replace the human by a machine, handling the same task serving the same purpose

    Gregor Polancic in his blog article blog.goodlearning.com: Common BPMN modeling mistakes: Activities says:

    ...complex real world activity should be modeled as a task if it cannot be additionally decomposed into sub-elements, whereas a simple activity can be modeled as a sub-process if a modeler decides to additionally decompose it...

    I'd expect the answer to your problem to lie somewhere in the terms subprocess and subtask and the behavior should be visible by looking at the workflow diagram.

    A few pictures to pin on the noticeboard. No thick manuals written in lawyer speak