The ModelService
The Model Service provides a service layer to manage workflow models. The model service persists BPMN models in the internal model repository. Each model is identified by a unique version assigned to a model. This service component is used by the Imixs Workflow Engine internally. The service is based on the core interface Model.
To create and manage workflow models the Eclipse tool Imixs-BPMN Modeller can be used.
Methods
The ModelService EJB extends the interface org.imixs.workflow.ModelManager
and provides 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.. |
getVersions() | Returns a sorted String list of all stored model versions. |
findVersionsByGroup(group) | Returns a sorted list of model versions containing the workflow group. The result is sorted in reverse order, so the highest version number is the first in the result list. |
saveModel(model,filename) | Saves a BPMNModel into a Document and adds the model into the ModelManager. The model can be accessed by its filename |
saveModel(model) | Saves a BPMNModel into a Document and adds the model into the ModelManager. |
deleteModel(version) | Deletes an existing Model Entities from the database and removes the model form the internal ModelStore.. |
loadModelEntity(version) | Loads an existing Model Entities from the database. |
Auto Detect ModelVersion
With the method getModelByWorkitem(workitem)
the ModelService provides an algorithm to find a matching model version either by the item $workflowGroup
or by a regex. For example
modelversion = "(^1.0)"
will find a model version 1.0.7
If no modelversion is provided by a workitem but the $workflowgroup matches a model the model version will be taken from the latest version of the corresponding group.
How to Add a Model
The ModelService provides a method to add a BPMNModel object. This object can be created from a file. See the following example:
@Inject
ModelService modelService;
InputStream inputStream = new FileInputStream(new File("ticket.bpmn"));
ticketModel = BPMNParser.parseModel(inputStream, "UTF-8");
modelService.addModel(model);
You can also persist the model into the data storage
modelService.save(ticketModel,"ticket.bpmn");
A persisted model will be automatically loaded when the workflow service starts.