Search code examples
jbpmbpmnbusiness-process-managementcamundabonita

Business process management systems abstraction


There are some good BPM software: jBPM, Bonita BPM, Camunda BPM, Activity and so on.

Most of them supports some API to integrate with them, for example jBPM provide KieServicesClient interface and implementations to work with it. It works, but can work only with jBPM. And same thing with others.

I want possibility for my application to switch between concrete bpm engines. Is there a standard for it? Abstraction level for processes, tasks and other thing that used in bpm engines? One interface for all of them.


Solution

  • There is no standard which covers the APIs. However, if the process engine of your choice follows the BPMN 2 standard (and it should!) then the object model and terminology it operates with will be standardized. As a result the APIs should turn out very similar.

    You can abstract the engine used by architecture best practices such as loose coupling, which nowadays likely leads you to using the REST APIs of the products. These should be mature, following de facto standards (https://martinfowler.com/articles/richardsonMaturityModel.html).

    Comparing for instance the

    Use the BPMN2 standard, couple loosely, technology agnostic, preferably via REST and avoid using proprietary (server-side) objects on client side to create a good abstraction.