Deployment

The Imixs-Workflow engine can be deployed in various ways depending on the kind of the application and server environment. As the Imixs-Workflow engine is based on Java EE, the components are typically deployed into a container (EJB or Web Container). The deployment descriptors are used to configure the details of an environment and giving the flexibility to setup the Imixs-Workflow for custom environments and infrastructure.

Maven

All components of Imixs-Workflow are build with Maven which makes it easy to add them into a Maven based project. The following example adds the latest release of the Imixs-Workflow Engine and REST API to a project:

<properties>
    .....
    <org.imixs.workflow.version>3.9.0</org.imixs.workflow.version>
</properties>
...
<dependency>
    <groupId>org.imixs.workflow</groupId>
    <artifactId>imixs-workflow-engine</artifactId>
    <version>${org.imixs.workflow.version}</version>
</dependency>
<dependency>
    <groupId>org.imixs.workflow</groupId>
    <artifactId>imixs-workflow-jax-rs</artifactId>
    <version>${org.imixs.workflow.version}</version>
</dependency>

Read the section Maven for further details.

Database

The Imixs-Workflow Engine stores the workflow model and its process instances into a database using the Java Persistence API (JPA). Therefore a database pool need to be provided together with the container the workflow engine is deployed to. The configuration is done via the persistence.xml file deployed together with the Imixs-Workflow Engine. See the following example:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="org.imixs.workflow.jee.jpa" transaction-type="JTA">    
       <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>  
       <jta-data-source>jdbc/workflow-db</jta-data-source>
       <jar-file>lib/imixs-workflow-engine-${org.imixs.workflow.version}.jar</jar-file>
       <properties>
         <property name="eclipselink.target-database" value="Auto" />
         <property name="eclipselink.ddl-generation" value="create-tables" />
         <property name="eclipselink.deploy-on-startup" value="true" />
       </properties>          
    </persistence-unit>
</persistence> 

Note that the jar-file must match the deployed version of the Imixs-Workflow engine jar. See the section Deployment Guide for further details.

Security

Each back-end call to the Imixs-Workflow engine have to propagate an applicable user principal and security role to be verified by the Imixs EntityService layer.
The security concept of Imixs-Workflow defines the following roles:

  • org.imixs.ACCESSLEVEL.NOACCESS
  • org.imixs.ACCESSLEVEL.READACCESS
  • org.imixs.ACCESSLEVEL.AUTHORACCESS
  • org.imixs.ACCESSLEVEL.EDITORACCESS
  • org.imixs.ACCESSLEVEL.MANAGERACCESS

Each user accessing the Imixs-Workflow Engine need to be assigned at least to one of these roles. To deploy the Imixs-Workflow engine a corresponding security realm have to be configured inside the application server. See the section Security for further details.