Comparison of Flowable Open Source and Flowable Work / Engage

Background

Flowable Work and Engage are built on top of the Flowable Open Source engines and add a lot of additional functionality, including action definitions, analytics, security, user definitions, etc. This guide describes where the Open Source engines are used as-is in Flowable Work / Engage and for which parts different logic is applied.

The Common Open Source Foundation

The Flowable Open Source project focuses on providing engines supporting the BPMN 2.0, CMMN 1.1 and DMN 1.1 / 1.2 Object Management Group (OMG) standards. Flowable Work and Engage use the BPMN, CMMN and DMN engines as-is. When a new feature is needed in, for example, Flowable Work which requires a change in the CMMN engine, then the feature is implemented in the Flowable Open Source project and then used in Flowable Work. This means that a BPMN, CMMN or DMN model created with Flowable Open Source can be deployed without any changes in Flowable Work and Engage.

Also at the database level there is no difference in the tables used for the BPMN, CMMN and DMN engines. The Open Source tables are exactly the same as the Flowable Work / Engage tables for the BPMN, CMMN and DMN engines. This also includes all the service modules that are used by these engines:

  • Flowable engine common (flowable-engine-common), this includes the ACT_GE_PROPERTY and ACT_GE_BYTEARRAY tables.

  • Flowable entity link service (flowable-entitylink-service), this includes the ACT_RU_ENTITYLINK and ACT_HI_ENTITYLINK tables.

  • Flowable identity link service (flowable-identitylink-service), this includes the ACT_RU_IDENTITYLINK and ACT_HI_IDENTITYLINK tables.

  • Flowable job service (flowable-job-service), this includes the ACT_RU_JOB, ACT_RU_TIMER_JOB, ACT_RU_SUSPENDED_JOB, ACT_RU_DEADLETTER_JOB and ACT_RU_HISTORY_JOB tables.

  • Flowable task service (flowable-task-service), this includes the ACT_RU_TASK and ACT_HI_TASKINST tables.

  • Flowable variable service (flowable-variable-service), this includes the ACT_RU_VARIABLE and ACT_HI_VARINST tables.

In Flowable Work and Engage there is support for additional service task types to make it easier to for example initialize variables, create a document based on a template, or create a conversation. These are regular service tasks using an expression or delegate expression pointing to a Spring Bean, which is implemented in the Flowable Work and Engage code.

The Difference with the App Engines

The Flowable Open Source project provides an App engine that can be used to deploy app zip files which can contain BPMN, CMMN, DMN, and Form models. The App engine stores a deployment reference for each model that is part of the app zip file. This enables support for using different versions of for example a form model within different apps. A process in app A, for example, uses version 1 of form B, and another process in app C uses version 2 of form B. Because the App engine stores the deployment references these different references to a form are resolved correctly.

In Flowable Work and Engage the same concept of an App engine is used for an even broader set of different model types. In Flowable Work and Engage there is additional support for Page, Action definition, Document definition, Template definition, Data Object definition models, amongst others. Because the App engine has additional features in Flowable Work and Engage, there is a different implementation of this engine. It still implements the Open Source App engine API (the module flowable-app-engine-api) and extends it with additional service methods that are available, to for example retrieve the Page models of an app.

An app created with Flowable Open Source that only contains BPMN, CMMN or DMN models can be deployed on the App engine for Flowable Work / Engage. There is no support for deploying apps created with Flowable Work / Engage on the Flowable Open Source App engine.

The Differences with the Content Engines

In the Flowable Open Source project, a Content engine is available to store content items on the file system. There is logic to automatically store and retrieve files that are uploaded with a start or task form. In Flowable Work and Engage the requirements for the Content engine are more advanced. There is support to manage document definitions which can be used to categorize content items and to add metadata information to a content item. There is also additional support for rendition items which are created when a content item gets stored in the Content engine. A rendition item can be a thumbnail of the first page of a document or a PDF rendition that can be used to preview the document in the browser.

Because of these additional requirements, a different implementation of the Open Source Content engine is created for Flowable Work and Engage. This Content engine also uses different table names and is therefore not compatible with the Open Source at the database level. The Work / Engage version of the Content engine does implement the Open Source Content engine API module (flowable-content-api) and extends it with additional service methods to for example query document definitions or get the rendition items of a content item.

To summarise, there is no compatibility between the Open Source Content engine and the Flowable Platform Content engine other than the support for the Open Source content engine API as implemented in the flowable-content-api module.

The Differences with the Form Engines

The form definition JSON format of the Open Source Form engine is different from the JSON format of the Flowable Work / Engage form definition. The version of Flowable Work / Engage provides support for a lot more form field types, supports multi-column layouts, advanced visibility and enabled state configuration, support for chart and data table form field types, etc. There is no support for the Open Source form definition JSON format in Flowable Work / Engage.

The Form engine implementation is similar to the app and Content engines. The Flowable Work / Engage Form engine has a different code base than the Open Source Form engine. Also at the database level the Flowable Work / Engage Form engine uses different tables and table names than those used in the Open Source Form engine. The Flowable Work / Engage Form engine does implement the Open Source Form engine API (flowable-form-api) and extends it with additional service methods.

To summarise, forms created with Flowable Open Source are not supported in Flowable Work / Engage. There is no compatibility between the Open Source Form engine and the Flowable Platform Form engine other than the support for the Open Source Form engine API that is implemented in the flowable-form-api module.

The Differences with the IDM engines

Flowable Open Source provides a basic IDM engine that manages users, groups and the memberships of users in groups. In Flowable Work / Engage additional functionality is implemented to provide support for user accounts that can, for example, refer to a WhatsApp or WeChat account, user definitions to allow for advanced definitions of user roles, user task and conversation filters, etc. User variables are also supported with an identity where additional information about a user can be stored.

Because of these additional requirements, a different implementation of the Open Source IDM engine is created for Flowable Work and Engage. This IDM engine also uses different table names and is therefore not compatible with the Open Source also on database level. The Work / Engage version of the IDM engine does implement the Open Source IDM engine API module (flowable-idm-api) and extends it with additional service methods to for example query user definitions or get the user accounts for a user.

To summarise, there is s no compatibility between the Open Source IDM engine and the Flowable Platform IDM engine other than the support for the Open Source idm engine API that is implemented in the flowable-idm-api module.

The Differences from a Modeling Perspective

The above sections describe the differences between Flowable Open Source and Flowable Work / Engage from an engine perspective. In addition to the engine perspective, there is also the modeling perspective with the differences between the Open Source Flowable Modeler and Flowable Design tooling, focusing on the model support.

A BPMN, CMMN and DMN model that is exported as XML from the Open Source Flowable Modeler can be deployed on Flowable Work / Engage without any changes. This is also true for an app created with the Open Source Flowable Modeler, which only include BPMN, CMMN or DMN models.

A Form model created with the Open Source Flowable Modeler cannot be deployed on Flowable Work / Engage and is not compatible with the Form model that is created with Flowable Design.