Hi all,
I am starting a new project right now and I would like it to be as futureproof as possible towards future migration to Camunda 8. I discovered this recommendation (Deciding about your Camunda 7 stack) in the docs and I can say I really like the concept. However I am missing a substitution to one core feature I have been using since the beginning and that is the ability to call expressions on CDI injected beans to handle some business logic.
To be specific I usually implement custom business logic for usertask assignment. This business logic takes into account several parameters decided using data loaded form database. For example working hours, worker substitutions, task id, process instance history.
<userTask id="task" name="Task" camunda:assignee="#{assignmentManager.getAssignee(execution)}" />
But with the recommended approach I do not see a way how to reproduce this.
The only approach which would be compatible with the paradigm of this approach would be to always call a service task first which decides the assignee using External task and then call the User task itself. But I don’t like this approach because it would make the process definition harder to read and I see the readability of the models crucial in order to be able to discuss it with the business users and that is one of the biggest advantages of using Camunda in the first place.
Other approaches which came to my mind always needed either custom extension to process engine (which seems as NO NO in the paradign) or a container managed installation with a service deployed alongside Camunda.
Could you someone please advice whether I am missing something and my head is stuck with the old paradigm or point me in a direction which could lead to a solution (I know I can always switch back to embedded engine but that does not seem to be futureproof enough).
Thanks
Adam