Imixs Docker

The Imixs-Workflow project supports several Docker Images to run Imixs-Workflow in a containerized infrastructure. The Imixs Docker Images are hosted on Docker Hub and can be installed and extended in various ways.

The Imixs Microservice

The subproject Imixs-Microservice provides a WebService Interface which can be used to interact with the Imixs-Workflow-Engine over the Imixs Rest API. The ‘Imixs-Microsoervice’ is a Java EE Web Module which extends the Imixs-Workflow Engine providing a Rest Service for Human Centric Workflow Applications. This service can be used as a single Microservice or bundled with a Java EE Business Application. See also the Deployment Guide for details.

How to run a Imixs Docker Container

To use Imixs-Workflow out of the box, you can create a ‘docker-compose’ file:

version: '3.3'
services:
  db:
    image: postgres:9.6.1
    environment:
      POSTGRES_PASSWORD: adminadmin
      POSTGRES_DB: workflow
  app:
    image: imixs/imixs-microservice
    environment:
      WILDFLY_PASS: adminadmin
      POSTGRES_HOST: "db"
      POSTGRES_USER: "postgres"
      POSTGRES_PASSWORD: "adminadmin"
      POSTGRES_DATABASE: "workflow"
      POSTGRES_CONNECTION: "jdbc:postgresql://db/workflow"
    ports:
      - "8080:8080"

Run start imixs-wokflow with docker-compose run:

$ docker-compose up

Note: The container is linked to the postgres container providing a database name ‘workflow’. See the docker project home for more information.

Testing the Imixs-Microservice

Using the command-line tool ‘curl’ makes it easy to test the Imixs-Microservice. Here are some examples.

NOTE: As Imixs-Workflow is a human-centric Workflow Engine only authenticated users (Actors) can interact with the engine. Therefore it is necessary to authenticate against the Imixs-Rest service API. Imixs-Microservice provides a User-Management-Service to register and authenticate users. The default user has the userid ‘admin’ and the default password ‘adminadmin’. This user is used in the following examples.

Deploy a new BPMN model

With the following command a BPMN model created with the Imixs-BPMN Modeling Tool can be deployed into the Imixs-Microservce.

curl --user admin:adminadmin --request POST \
	-Tticket.bpmn \
	http://localhost:8080/imixs-microservice/model/bpmn/

Request the Deployed Model Version

The following command returns the model versions deployed into the service:

curl --user admin:adminadmin -H \
	"Accept: application/xml" \
	http://localhost:8080/imixs-microservice/model/

Request the Task List

To request the current task list for the user ‘admin’ run:

curl --user admin:adminadmin -H \
	"Accept: application/json" \
	http://localhost:8080/imixs-microservice/workflow/tasklist/creator/admin

Create a new Process Instance

The next example shows how to post a new Workitem in JSON Format. The request post a JSON structure for a new workitem with the txtWorkflowGroup ‘Ticket’, the ProcessID 1000 and ActivityID 10. The result is a new process instance controlled by Imixs-Workflow Engine

curl --user admin:adminadmin -H "Content-Type: application/json" -H "Accept: application/json"  -d \
'{"item":[
        {"name": "$modelversion", "value":["1.0"]},
        {"name": "$taskid", "value": [1000] },
        {"name": "$eventid", "value": [10] },
        {"name": "_subject", "value": ["some data...","more data..."]}
     ]}' \
    http://localhost:8080/api/workflow/workitem

Read a Process Instance

After posting a new process instance the Imixs-Workflow engine will retrun a datastructure includign the uniqueid of the created process instance. The uniqueid is used to request a single Workitem from the Imixs-Microservice. See the following curl example to request a workitem by it's $UniqueID in JSON format:

curl --user admin:adminadmin -H \
	"Accept: application/json" \
	http://localhost:8080/imixs-microservice/workflow/workitem/14b65352f58-259f4f9b

This example returns the content of the Workitem with the UniqueID ‘14b65352f58-259f4f9b’. You can also restrict the result to a subset of properties when you add the query parameter ‘items’:

For more details read the section Imixs-Rest API