The Imixs Workflow Engine
After you have defined your business model and created a workitem containing your business data you can run the Imixs Workflow engine to process the workitem. When a workitem is processed by the workflow engine the workitem becomes a process instance of the current workflow process. From this moment the workflow engine controls the workitem until the business process is completed.
Run the workflow engine
A workitem can be processed by calling the method processWorkItem() from the WorkflowService. As the Imixs-Workflow Engine is based on Java EE you can inject the WorklowService with the @EJB annotation. This is a simple example:
import org.imixs.workflow.ItemCollection; ..... @EJB private org.imixs.workflow.jee.ejb.WorkflowService workflowService; .... // create a workitem ItemCollection workitem=new ItemCollection(); workitem.replaceItemValue("name","Ralph"); workitem.replaceItemValue("age",new Integer(40)); // assigen a workflow model workitem.replaceItemValue("$processID",20); workitem.replaceItemValue("$activityID",20); // process the workitem workitem = workflowService.processWorkItem(workitem);
After you have processed a Workitem you can evaluate the workflow data, provided by the workflow engine:
.... // get the assigend workitem unique id... String uniqueID=workitem.getItemValueInteger("$UniqueID"); // read the current workflow status String status=workitem.getItemValueString("txtWorkflowStatus"); ....
With the uniqueID of a processed workitem you can fetch the process instance from the WorkflowService:
.... // load a process instance by the unique id... workitem=workflowService.getWorkItem(uniqueid); ....
Also you can fetch a list of all workitems assigned to the current user. This list is typical called the ‘task list’
.... // get all workitems for the current user... Collection<ItemCollection> tasklist = workflowService.getWorkList(null, 0, -1, 0); ....
The Imixs WorkflowServce provides a lot of methods to manage workitems processed by the workflow engine. See the workflow engine section for more details.