How to manage different process path execution for the same process model instance

We plan to embed processes in our spring/angular application. In some circumstances, the execution path may change intentionnaly after some discovering. Returning in a previous step and continue in a different path is simple in the application. We would like to avoid to model all the returning way from every steps in the process model.
Does Flowable offer any features that allow to cancel an execution and rebuild a new process instance at some point regarding previous cancelled execution ?

The short answer is yes, but how and what’s best may depend on the details and realities of what you need. Programmatically, you can look at some of the options in the Dynamic BPMN Service:
https://flowable.org/docs/javadocs/org/flowable/engine/DynamicBpmnService.html

Also, may be what you’re looking for specifically is:
https://www.flowable.org/docs/javadocs/org/flowable/engine/runtime/ChangeActivityStateBuilder.html

Cheers
Paul.

1 Like

Thank you answering Paul.

As I understand Dynamic Process Execution intent, it allow to change and/or to inject tasks (sub-process ?) dynamically during execution by using BynamicBpmnService API.

It seem very valuable at first look.

In our case, we have quite complex process model, several phases into (intermediate event), several tasks for each phase, different path execution depending for gateway, different candidate group and/or users.

During the execution, real life will cause the execution path currently executed to chagne, some of the already task executed will be lost, some will stay effective depending on the change.

As you know, as I know, managing all the possible way to return from a given execution point to a previous one is a mess and give us very poor return. So we are not interested to loose capacity on this and we are searching a way to benefit from BPMS instead creating resources consumption. This the reason we would like to model only allowed normal path, not all the real life path with all the exceptions that will occur.

I several ways to achieve this goal :

  1. suspend (or delete) a currently executing process instance and create and rebuild a new one until some recovery point from the suspended process history
  2. terminating the currently executing process instance by using a cancel signal and create and rebuild a new one until some recovery point from the suspended process history
  3. eliminating the unexecuted part of the model and append a complete new path from the same model with tasks executed until recovery point by using the suspended process history

Point 3 is reflecting my understanding of Dynamic Process Execution, is it correct ?

Any comments (critics) are very welcome.

From what you’re saying about your process, I’m wondering whether it might be better to cast it as a case management (CMMN) problem, still keeping process significant in that, but using a case as the dynamic manager of what can happen, and staging / phasing of steps at a higher level. Have you considered that option?

If you want to stick to pure process as the approach, then ChangeActivityState gives you “goto”, or the Dynamic BPMN is lterally building the individual process a chunk at a time. These are coding based solutions - I think you may find enough in CMMN to give what you’re looking for, which is a model-based solution.

Cheers
Paul.

Thanks for your recommandation. CMMN is seek at upper level. The need of such process at this level of complexity inside a case still necessary. As i understand “lterally building the individual process a chunk at a time” you mean that it is not possible to append a model to an executing process but only tasks at current execution point. Is this correct ?

You can inject complete process fragments, not just tasks. And, of course, you can have nested cases, or even processes calling cases.

It seem very interesting and valuable.
Do you think it is possible for your consultancy services to create a simple test case representing the different way to achieve our goals by using flowable in some days ?

Can you fill in the Contact form at https://flowable.com/about/contact/ then I’ll make sure someone gets in contact. We try and keep this forom clear of commercial discussions.

Cheers
Paul.

Done, with reference to our conversation.
Thank a lot for your answers, I appreciate.

Hello Paul, seem no one has answered so far, have I used the right channel ? Michel

Yes. I’m checking on the status. Paul.

1 Like