Diagram - template processing

Camunda BPMN Model library

Kitodo uses for reading BPMN diagrams as processes Camunda BPMN library.

public void loadProcess() throws IOException {
    String diagramPath = ConfigCore.getKitodoDiagramDirectory() + this.diagramName + ".bpmn20.xml";
    modelInstance = Bpmn.readModelFromStream(fileService.read(new File(diagramPath).toURI()));
}

It has bean classes which reads custom XML attributes. They take as attribute BPMN classes (Process, Task, ScriptTask) and read those attributes:

static final String NAMESPACE = "http://www.kitodo.com/template";
....
task.getAttributeValueNs(NAMESPACE, "priority")

Database

Template table was modified to store reference to Workflow table. Additionally Task table has a column workflowCondition, which stores information about possible conditions defined in gateways.