If you take a closer look at the Imixs Workflow Project you may ask yourself if the project is different to other Workflow Engines like JBoss JBPM or Activiti. In this blog will try to do a short comparison of JBPM and Imixs-Workflow. This comparison is not in technical detail but it should give an overview about the goals of the two open source projects. First I want to point out that Imixs-Workflow and JBPM are not rivals in the BPM market. Both projects are open source, both projects try to find solutions for similar but not equal problems in business process management and at least, both project use the same Eclipse-BPMN modeling platform.
In general JBPM and Imixs Workflow follow different goals in the area of business process management. Where JBPM is more focusing on the technical aspects of a workflow, the Imixs Workflow try to support the users needs during a business process. JBPM gives you – as a developer – the possibility to control the flow (workflow) in a business process. In JBPM you can implement modules taking care about the current state of a process instance and you can implement event handlers to control the transition from one state to another.
The Imixs-Workflow tries to provide the end-user with informations about the running tasks and the engine take care about typical functionality of a human based workflow management system.
Let’s begin with the Imixs-Modeler. With this technical modeling tool you describe a business process mostly started by a user. In each transition (BPMN Event) you describe what should happen with the process instance. Therefore the Imixs Modeler provides a set of Workflow Plugins providing typical workflow functionality like:
- Email notification (e.g. when a new task was started)
- Process documentation (what happens during a workflow of a process instance)
- Access Control (who should be able access or modify a process instance)
- Creation of Versions of a process instance
- …and so on..
The Imixs-Workflow Plugins are comparable to JBPM ActionHandlers. But the goal of the Imixs-Workflow project is to provide precise implementations of these functions. So for example you can use the Imixs Modeler out of the box and configure an email notification which will be executed by the Imixs-Workflow engine.
Another example is the workflow History. This allows you to describe what happens to a process during the process life cycle from a human perspective. This workflow history can be displayed by an application to document the process flow. As you can see these are less technical aspects and this is one of the differences to JBPM, which is more answering the question how technical modules play together during a workflow transition. So the Imixs-Workflow project is more focusing on human needs during a business process (like routing, notification and documentation).
But one of the most important features of the Imixs-Workflow is the access control of a process instance. It is possible to define in each transition and state who is allowed to read or modify the process instance (workitem). These settings will be processed by the AccessPlugin.
A typical scenario for this feature is a publishing process fully controlled by the workflow engine. Imagine you have a document which is edited by a team of web-authors. This document has a read and write restriction, so only the editor-team is able to read or modify the document. When the document goes through a publishing process a chief-editor can publish the document to the internet. Now the workflow engine release the read restriction and restrict the write access to a chief-editor team. So as a result, this document is now readable by anonymous web users but only editable by the chief-editor. The hole functionality is completely controlled by the workflow engine and the model description. There is no need to implement this behavior inside the application.
You can see the Imixs-Workflow is more focusing what an actor in a business process can do with a document or what should happen with a document. To get all this functionality into your application you can easily embed the Imixs-Workflow Engine into your business application.
As you can see on GitHub, the Imixs-Workflow project consists of a variety of sub-projects and libraries. There are many adapters, examples and infrastructure modules and of course the Eclipse based Modeler project Imixs-BPMN.
All parts are highly extensible. Also the Imixs Modeler allows to implement an application specific plugin and control elements. But if you want start with the Imixs Workflow “out of the Box” the Imixs-Workflow engine is the most interesting part of the project. This is a full featured workflow management system based on the Java Enterprise spec. This implementation allows to control any business process in any kind of Java Enterprise application. You can check out the “imixs-workflow-jsf-sample” which is a workflow demo application and also a good starting point to begin an individual workflow app.
As I explained at the beginning I don’t want to go in technical details but give an overview what the Imixs Workflow is different to JBPM. If you have any comments please let me know.