I’m trying to understand the correct way to do this in Flowable - (As a background, I have only used Flowable from a Modeling perspective using the Flowable apps, and dont know much about the Flowable source code).
Here’s the requirement we are looking to implement:
We have a requirement to add “Business Domain” specific BPMN Tasks (i.e. similar to java service task , script task, HTTP Task etc., BUT at a higher Business Domain level. E.g. a BOMN Task that would update a SCADA system / ERP with some specific domain logic, that can be re-used in multiple business processes via the Modeler). At a high level, the idea is to create a repository of BPMN Tasks useful for a particular Business Domain that our users can pick and choose from the Flowable Modeler UI palette when modeling the Process.
We are interested in what is the right way to “extend” (rather than “modify”) Flowable to achieve the above requirement. I.e. ideally, we are hoping there is an established way of “extending” Flowable based on Open-Closed Principle (OCP), without modifying the existing source code files (too much at least).
When I searched, I found the following pull request that adds the “HTTP Task” functionality to Flowable:
We want something similar to the above, but the Tasks we add will be more “business domain” related. Also, from the “HTTP Task” pull request, it looks like the implementation of that functionality has modified a lot of the Flowable source code to add the Http Task functionality (hence, it looks more of “modification”, rather than “extension”? Again, apologies for my limited knowledge of Flowable source).
Would we have to go by the same approach used above for the HTTP Task, or, is there an easier way of doing it with minimal code changes?
To generalize the requirement, basically, we are looking at the correct way to “extend” Flowable with “custom” BPMN elements, while minimizing direct “modification” of the existing Flowable source code as much as possible (i.e. ideally, we are looking for an approach where we can drop in the new business domain tasks we create as “plugin” jars that would be picked by Flowable, and a similar approach on the UI side).
Could you please advice on the best way going about our requirement?
Thank You for reading this long post!