How to Manage Model Versions

In the following short tutorial I will explain how you can manage multiple versions of a workflow model and how Imixs-Workflow supports multiple model versions in a productive business application.

The Imixs-Model-Management

The Imixs-Workflow engine supports multiple model versions from the same process model. Each time a running process instance is updated, the Imixs-Workflow engine applies the same model version as the process instance was created with. Therefor the Imixs-Workflow engine compares the internal model version with the model versions provided by the model repository. In case the current model version is no longer supported, the active process instance will be automatically upgraded to the latest version available in the repository. With this feature it is possible to manage different versions of the same workflow process. To distinguish different model versions, you need a versioning concept.

Semantic Versioning

The concept of “Semantic Versioning” from Tom Preston-Werner will be the basis for the versioning method of process models. Applying the semantic versioning, the version number is separated into three digits:

  1. 2. 3 
  |  |  |-- patch level
  |  |-------- minor version 
  |-------------- major version

Major Version

The first digit indicates the major version number. This is in our case the general main release of a model.  The major version number should only be increased if a general redesign of  whole the process model was done.

Minor Version

The minor version number is used for new functions and enhancements in the process flow. For example after adding a new task or a new event, the minor version number should be increased.

Patch Level

The last digit is used for the Patch Level of a model. It indicates bug fixes or changes of naming or wording.

The semantic versioning can be perfectly used for the BPMN model file. This helps you to manage different version within your modellng tool:

invoicing-1.0.0.bpmn

We typically prefix the filename with the process name to maintain different workflows in the same directory.  In the example above we have an Invoicing workflow in the version 1.0.0. The model file itself should also be stored in a code repository like Git. This allows you to remove deprecated models from your code base.

The Model Version

Also the Imixs-Workflow Model holds a separate version number. This version number is mandatory and can be maintained in the Workflow Profile of the Imixs-BPMN modeling tool:

We prefix the version number again with the process name followed by a two-digit version number. Applied to the “Semantic Versioning” only the Major and Minor Version number is used here!

The reason for this shorter version number is, that the model repository of a business application should not hold different patch levels of the same model. Remember, the patch level is only used to  indicates bug fixes or changes of naming or wording. Only if the model is extended functional the minor version number is increased or in case of a new process variant the major version number:

Modelversion    File Version            Comment 
----------------------------------------------------------   
invocing-1.0    invocing-1.0.0.bpmn     First draft
                invocing-1.0.1.bpmn     typo
invocing-1.1    invocing-1.1.0.bpmn     additional approval
                invocing-1.1.1.bpmn     change mail message
                invocing-1.1.2.bpmn     change history text
invocing-2.0    invocing-2.0.0.bpmn     new Invoicing process

In this example version 1.0 of the Invoicing process was first patch with a typo and next extended with an additional approval, which leads to Minor version 1.1. In this version again then some text changes were made. And finally a complete new Invoicing process was designed, with leads to the new Major version 2.0.

From the view of the running process instances only 3 different model versions exist. From the view of the code repository the model file exists in 6 different versions.

Conclusion

With the concept of “Semantic Versioning” process models can be easily handled in different versions. Even if you need to patch an already running model, you don’t need to worry about polluting the model repository of your business application if you use only 2 digits for internal model version.

How to Model Business Rules?

Today, when you design a modern business application, you have to deal more and more with constantly changing business rules. The reason for this is that not only the software industry follows the agile path. Business processes are also subject to a permanent change. At the same time, however, business processes are becoming increasingly complex as more and more information is influencing our business world. In the following I will show how business processes and their rules can be modeled with the help of BPMN.

Continue reading “How to Model Business Rules?”

Imixs-BPMN for Eclipse Oxygen

With the new version 1.8, Imixs-BPMN is now available for all current Eclipse platforms and also fully integrated into the latest version of Eclipse Oxygen.

Imixs-BPMN in  based on the Open Source BPMN modelling tooling for Eclipse Oxygen, which is currently available in version 1.4.3. See the Eclipse BPMN Homepage for what’s new. The current version 1.8 of Imixs-BPMN can be installed from here.

Imixs-BPMN takes the full advantage of all the capabilities from the BPMN 2.0 standard and complements them with the requirements to a modern workflow management system. Imixs-BPMN enhances the Eclipse BPMN2 modelling Framework with the aspects of a human-centric workflow model executable on the Imixs-Workflow Engine.

The Imixs-Workflow engine provides a set of modern Java Enterprise Services to create and manage process instances based on a BPMN 2.0 definition. The Imixs-Workflow engine can be embedded into a Java Enterprise application as well be deployed into a Microservice Architecture as a Docker Container. See the Imixs-Microservice Project for more details.

Also for older versions of the Eclipse Platforms (Eclipse Mars, Eclipse Neon) Imixs-BPMN is still are available.

Imixs-BPMN – Version 1.4.7 Released

The open source project Imixs-BPMN has released version 1.4.7. Besides the integration into the Eclipse platform Oxygen, the new version offers various improvements in modeling business processes based on the BPMN 2.0 standard.

Imixs Workflow is a human centric workflow engine that allows to model and to execute human-2-human business processes. Based on the Eclipse platform, Imixs-BPMN offers a professional and stable platform for modeling within the BPMN 2.0 standard. Both, responsibilities and access rights, as well as individual business rules can be modelled graphically.

Version 1.4.7 now represents business rules – so called ‘ conditions ‘ – and access rights (ACL) in a graphical way. This makes it easier to create process models and control them during the design phase.

In addition, Imixs-BPMN now supports so-called ‘Conditional-Events’ and ‘Split-Events’. The former can be used to model decisions based on business rules. Split-Events support parallelism. Split-Events play an important role for the mapping of audit-safe business processes. These new features increase the transparency of complex processes within an organisation.

Imixs-BPMN is open source and part of the Imixs-Workflow technology. The IMIXS Software Solutions GmbH supports enterprises and organisations in the development and implementation of digital business processes.

Imixs-BPMN – Data Objects

With the latest version 4.2.5, the Imixs-Workflow Engine, is now supporting BPMN Data Objects. This kind of model element can be used to model more complex wokflows processing input data:

With this new feature any kind of data object – e.g. a XML or HTML templates – can be associated with a BPMN Task. As a result, the task element will provide these data objects in the new item ‘dataObject’. This item can be injected into a running process instance. See the following code example which is injecting a ‘Invoice HTML template’ into a workitem:

...
ItemCollection task = model.getTask(1000);
List<List<String>> dataObjects = task.getItemValue("dataObjects");
if (dataObjects.size()>0) {
    List<String> firstDataObject = (List<String>) dataObjects.get(0);
    String templateName = firstDataObject.get(0);
    String content = firstDataObject.get(1);
    logger.info("DataObject name=" + templateName);
    logger.info("DataObject content=" + content);
  }
  if ("Invoice Template".equals(templateName) {
    // inject data...
    workitem.repalceItemValue("htmldocument",content);
  }
}
....

DataObjects are part of Imixs-Office-Workflow Version 3.2  to provide an easy and flexible way to create documents and templates during a business process.

BPMN 2.0 – Conditional Events

With version 4.2.0 the Imixs-Workflow engine supports conditional events. A conditional event can be defined with one of the BPMN Gateways  ExclusiveInclusive or EventBased.

Conditional Events

The conditions are defined as boolean rule expressions for each output of the gateway. A condition can be defined with the Script language JavaScript. The following example evaluates the workitem attribute ‘_budget’ for a value greater than 100:

(workitem._budget && workitem._budget[0]>100)

With Conditional Events, Imixs-BPMN offers a significant extension of the modeling possibilities for BPMN 2.0 models to be executed within the Imixs-Workflow engine. Find further details about the modelling with Imixs-BPMN here.

Email Templates with Imixs-Workflow

With the latest release of Imixs-Workflow the open source workflow engine supports now Email Templates. With this new feature the email output can be based on a XSL Template. This opens up a powerful way to configure the mail content of more complex e-mail messages during the lifecycle of a business process.

Email Templates

The new template mode can be easily configured using the Imixs-BPMN Modeling Tool by putting a valid XSL document into the mail body definition. The template will be processed automatically with the XML representation of the current workitem.

See the following XSL Template example:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 <xsl:output method="html" media-type="text/html" indent="no"
 encoding="ISO-8859-1" />
 <xsl:template match="/">
  <html>
    <body>
     <h1>Welcome</h1>
     <h2>
       <xsl:value-of select="document/item[@name='txtname']/value" />
     </h2>
    </body>
  </html>
 </xsl:template>
</xsl:stylesheet>

Imixs-Workflow supports the BPMN 2.0 standard and is build up on the Java EE specification. For that reason, it is easy to connect the open source workflow engine with a mail host in various ways. Open Source Mail servers as also Microsoft Exchange are supported. Find more details about the Imixs-MailPlugin in the plugin section of the project documentation.

New Release – Imixs-BPMN Report 1.4.6

The new version 1.4.6 of the Imixs-BPMN Plugin is released. The new release includes bugfixes and enhancements. The Imixs-BPMN Report Plugin which is part of the Imixs-BPMN modelling tool now provides a new feature to directly include the content of a XSL file into a report definition:

Imixs-BPMN Report 1.4.6

Reports allow the extraction of information from a Imixs-Workflow instance. Imixs-Workflow provides a flexible REST-API to customize the output of a report. This includes the XSL Transformation. With this feature, workflow information can be transformed in any kind of output, like XML, JSON and also different document formats like PDF or MS-Word or MS-Excel.

The workflow business suite Imixs-Office-Workflow includes a management dashboard with different char diagrams to visualize relevant business process data.

Imixs-Office-Workflow with Imixs-BPMN Report 1.4.6

Imixs-BPMN is based on the Eclipse BPMN2 Project. The installation guide for Imixs-BPMN can be found here.

Don’t model Business Behavior in Objects!

During the past years I saw many projects where nearly any kind of business requirements was modeled into the technical object model, independent of the reason of the requirement. In many cases, modelling business requirements into a technical object model is quite ok and I agree with it in general. But also modelling business requirements into the affected business objects can lead into a ugly and complicated data structure. Let’s look into a short example to illustrate my thoughts: Continue reading “Don’t model Business Behavior in Objects!”