The Imixs-Workflow Model

The Imixs-Workflow Model separates the process definition from the Workflow implementation. For this purpose, the interface ‘org.imixs.workflow.Model’ provides methods to navigate through a Workflow Model with its different elements. A workflow model has a unique version ID which allows to manage different workflow models inside one Workflow Management System.

A Workflow Model can be defined using the Imixs-BPMN modeling tool.

The Task Element

A ‘Task Element’ describes the unambiguously status of a running process instance within the process.

A ‘Task’ can be identified by a unique ID in each model. A model cannot contain several Task elements having the same ID. The following attributes must be at least provided by an instance of a ‘Task Element’:

  • numProcessID - an integer unique identifier for the ‘Task’ inside the model
  • txtName - The name for the Entity
  • txtWorkflowGroup - The name of the WorkflowGroup the Task belongs to.

The Event Element

On the contrary, the ‘Task Element’, the ‘Event Element’ defines all information required to process a Workitem. The ‘Event Element’ defines the process flow of a Workitem from one ‘Task’ to another.

An ‘Event Element’ is assigned to a ‘Task’. The ID of each ‘Event’ must be unique inside a collection of events assigned to the same ‘Task’. The following attributes must be at least provided by an instance of a ‘Event Element’:

  • numProcessID - an integer ID which associates the ‘Event’ to a ‘Task Element’
  • numActivityID - an integer unique identifier for the ‘Event’
  • numNextID - an Integer ID which defines the next ‘Task’ a workitem is assigned to after processing.
  • txtName - The name for the Entity

The Process Flow

When a Workitem is processed by the Imixs-Workflow engine, the properties ‘$modelVersion’, ‘$ProcessID’ and ‘$ActivityID’ are verified against the current workflow model. Depending on the information of the assigned ‘Event’ the WorkflowKernel updates the status of the Workitem (‘$ProcessID’) after a Workitem was processed successful.

The Model Interface

The Interface ‘org.imixs.workflow.Model’ defines the following methods:

Method Description
getVersion() returns the workflow model version
getDefinition() returns a ItemCollection holding general model information (e.g. the plug-in list)
getTask(taskId) returns a task by its id
getEvent(taskId,eventId) returns an event by its id
getGroups() returns a list of all workflow groups defined in the model
findAllTasks() returns a list of all task elements defined in the model
findAllEventsByTask(taskId) returns a list of all event elements assigned to a task
findAllTasksByGroup(workflowgroup) returns a list of all task elements assigned to a workflow group

The ModelManager

The interface ModelManager stores instances of a Model. A Model instance is uniquely identified by the ModelVersion. The IModelManager is used by the WorkflowKernel to manage the process-model of a workitem.

The Interface ‘org.imixs.workflow.ModelManager’ defines the following methods:

Method Description
getModel(version) Returns a Model by version. The method throws a ModelException in case the model version did not exits.
addModel(model ) Adds a new Model to the ModelManager.
removeModel(version) Removes a Model from the ModelManager.
getModelByWorkitem(workitem) Returns a Model matching a given workitem. The method throws a ModelException in case the model version did not exits..

The Imixs ModelService

The Imixs-Workflow engine provides the ModelService which provides additional methods to managed different models in one application.