Running BPMN models in a BPM system often requires to take care about the internal version of a BPMN model. This occurs, for example, in scenarios where you run multiple instances of an active process in a live system with different versions of the same BPMN model.
The Imixs-Workflow Engine provides a nice mechanism to manage different versions of a BPMN 2.0 model. This allows to setup complex production environments with different models and different model versions at the same time. A model version, which is placed as an extension element of a BPMN 2.0 model can be evaluated by the Imixs-Workflow engine:
Each time a running process instance is updated, the Imixs-Workflow engine compares the internal model version with the model versions provided by the model repository of the workflow management system. In case the current model version is no longer available Imixs-Workflow automatically upgrades an active process instance to the latest version in the repository. Therefore the engine verifies the task ID and the process name with the corresponding models. This mechanism allows to upgrade process instances at run time to a new version. It is also possible to handle different versions of a model at the same time. In this case each process instance is processed by the model version from which it was started.
Versioning with SCM
Another aspect of versioning BPMN models is the usage of source code management systems. Those systems can store BPMN model files in a repository. SCM systems like Git or Subversion providing a version history based on the source code file – in this case the BPMN model file. With the help of a source code management system, you can go back and force in the history of a single BPMN file.
Versioning of Process Instances
In contrast to the versioning of a whole BPMN model, versioning of a process instance means that only the data of a running process is versioned. The Imixs-Workflow Engine supports this feature which allows to store different versions of the same process instance during the live-cycle of a process. In this case not the BPMN model is versioned but a specific process instance with all relevant business- and workflow-data. Versioning of process instances is used to fork a process or to archive the state of a process before changes are stored in the process repository. Also in this case different versions of a concrete process instance have different versions of the same BPMN model. Versioning process instances is a powerful feature to manage long running process instances in complex workflow management environments.
Imixs-Workflow and the Imxis-BPMN Modelling Tool offers a wide range and powerful functionality to version BPMN models and process instances. With the latest release of the Imixs-Workflow Engine the open source project supports a nice automatic upgrade mechanism of workflow models based on BPMN 2.0.