Imixs-Workflow Microservice

Imixs-Workflow provides a flexible Rest Service API to be used in any kind of modern microservice architecture.

Model your Business Process with BPMN

Read more....


Build your Workflow Application on Java EE

Read more....

The Microservice Architecture

Imixs-Workflow is based on the Java Enterprise Edition and provides a REST Service API which can be used from any software platform (Java, .Net, PHP, ...). The Imixs-Workflow engine can be deployed on modern Java EE Web Servers like GlassFish, JBoss or Wildfly and can be integrated into any modern microservice architecture or operating-system-level virtualization like Docker.

The Rest API

Imixs-Workflow provides a WebService Interface which can be used to interact with the Imixs-Workflow Engine via a Rest API. Any business object can be created, updated and read as a process instance in JSON or XML format.


How To Upload a BPMN Workflow Model

Running the Imixs-Workflow Engine as a Rest Service on a Web Server, a BPMN Workflow model - created with the Imixs-BPMN modeler - can be deployed by using the Rest Service interface. Imixs-Workflow validates the model and creates a model representation within the Imixs-Workflow engine. To deploy a new BPMN model the command-line tool curl can be used. See the following example:

curl --user USERID:PASSWORD --request POST \
-Tmodel.bpmn http://localhost:8080/workflow/rest-service/model/bpmn

How to Create and Manage a Process Instance

A new process instance based on a BPMN Workflow model can be created and managed via the Rest API. The following example illustrates how to create a new process instance by using the media type 'JSON'.

POST = http://localhost/workflow/rest-service/workflow/workitem.json

To create a valid process instance the following attributes are mandatory:

  • $modelversion = the version of a deployed model
  • $processid = the start process (task)
  • $activityid = the activity to be processed by the engine

See the following JSON Example based on the JAX-RS Jersey API:

 {"item":[
     {"name":"type","value":{"@type":"xs:string","$":"workitem"}},
     {"name":"$modelversion","value":{"@type":"xs:string","$":"1.0.0"}},
     {"name":"$processid","value":{"@type":"xs:int","$":"10"}}, 
     {"name":"$activityid","value":{"@type":"xs:int","$":"10"}}, 
     {"name":"_subject","value":{"@type":"xs:string","$":"Some data.."}}
   ]}  

Once a new process instance was created, Imixs-Workflow returns a new data object describing the state of the new business object - called the 'workitem':

{"item":[
   {"name":"$uniqueid","value":{"@type":"xs:string","$":"141cb98aecc-18544f1b"}},
   {"name":"$modelversion","value":{"@type":"xs:string","$":"my-model-definition-0.0.2"}},
   {"name":"$processid","value":{"@type":"xs:int","$":"2000"}},
   {"name":"namcreator","value":{"@type":"xs:string","$":"admin"}}, 
   {"name":"namcurrenteditor","value":{"@type":"xs:string","$":"admin"}}, 
   {"name":"namowner","value":{"@type":"xs:string","$":"admin"}}, 
   {"name":"$isauthor","value":{"@type":"xs:boolean","$":"true"}},
   {"name":"_subject","value":{"@type":"xs:string","$":"JUnit Test-0001"}}, 
   {"name":"txtworkflowstatus","value":{"@type":"xs:string","$":"New ticket created"}}, 
   {"name":"txtworkflowresultmessage","value":{"@type":"xs:string","$":""}}
  ]}

The workitem includes the attribute '$uniqueid' which identifies the process instance for later processing. Also workflow information like the current status or the owner of a running process instance are returned by the service.

To change the status of a process instance a workitem can be updated and send back to the workflow engine by the POST method. The workflow engine will process the workitem based on the corresponding workflow activity (event) defined in the BPMN model. See the following example which updates the atributes '_subject' and '_customdata' and triggers the BPMN event with the id:1.

POST = http://localhost/workflow/rest-service/workflow/workitem.json
 {"item":[
     {"name":"$uniqueid","value":{"@type":"xs:string","$":"141cb98aecc-18544f1b"}},
     {"name":"$activityid","value":{"@type":"xs:int","$":"1"}}, 
     {"name":"_subject","value":{"@type":"xs:string","$":"Some usefull data.."}}
     {"name":"_customdata","value":{"@type":"xs:string","$":"Some data.."}}
   ]}  

A workitem is a flexible data structure and can define any kind of data to be stored together with the process instance. Read more about the Imixs REST Service API.

Docker

To use Imixs-Workflow out of the box, the Imixs-Microservice is also deployable as a docker image which can be deployed into a Docker Environment. The Docker container makes it easy to run the Imixs-Microservice in a virtualized operating-system-level. Read more about the Imixs Docker Container.