We are in discussion of project architecture. We are thinking to keep common processes in separate deployment module (i.e separate project). These processes will be called from other main processes available in separate project. For example I have three independent projects deployed separately (A, B and C). Here A and B projects need to call common process from C project as sub-process.
We can expose rest service and use process from other module, but we want to keep relation as parent and subprocess from two different module. Is there any information or example available on this?
Thanks & Regards,
Hello @pithvajignesh ,
if all projects are deployed to the same server (tomcat/wildfly) then this will work.
I my opinion, keeping complex processes separated in order to have smaller maintenance units and projects that are easier to understand could be a good practice.
When making changes, you should keep in mind the interaction between the processes could change, which could affect other processes (in other projects).
Same is also possible in an embedded scenario, where you can use processes from multiple modules as dependencies.
Hope this helps
You can create three process applications: A, B and C. Deploy them so that they all use the same process DB. Then you can call C from A and from B via a Call Activity. Just be sure to configure the process engines so that they have “deploymentAware” set to “true”.
@fml2 and @jonathan.lukas ,
Thanks for your reply, Can you please help me to clarify the below mentioned points?
@fml2 You saying call activity to be configured with sub-process reference which is in different application. Will this work? Will we face any error while deployment as sub-process is not available within application? I want to keep parent and sub-process relationship as we have in one application.
- I need to following hybrid Camunda model where DB will be common for all services, is this correct?
- Each Spring boot microservice application with embedded engine with “deploymentAware” set to “true”. is this true?
Is anything important I missed or needs to be considered specifically in this approach?
Thanks & Regards,
“Yes” to all of your questions.
One more point: You have to add async points at some places (e.g. “async before” at the call activities) so that the engine has a chance to switch the context. Otherwise it will be forced to execute the whole process (including the sub-processes) in one thread and hence in one application (e.g. in A) where you don’t have the code for C.
@fml2 That’s Really True. Many Thanks for highlighting this point . I noted