Skip to content

Workflow

Kitodo.Production uses BPMN 2.0 diagrams as the template for the task sequence of a process. The diagram editor (see Modeler) extends standard BPMN with Kitodo specific attributes in the namespace http://www.kitodo.org/template (declared as the template namespace).

Example diagram

Example workflow diagram
Example workflow

An XML file representing an example workflow (the graphical shape information in the bpmndi section is omitted):

<?xml version="1.0" encoding="UTF-8"?>
<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL"
                   xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
                   xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
                   xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
                   xmlns:template="http://www.kitodo.org/template" id="sample-diagram"
                   targetNamespace="http://bpmn.io/schema/bpmn"
                   xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
    <bpmn2:process id="Example_Workflow" name="Example_Workflow" isExecutable="false"
                   template:outputName="Example_Workflow">
        <bpmn2:startEvent id="StartEvent_1">
            <bpmn2:outgoing>SequenceFlow_05ujoyy</bpmn2:outgoing>
        </bpmn2:startEvent>
        <bpmn2:task id="Task_1" name="Scanning" template:priority="0" template:typeImagesRead="true"
                    template:typeImagesWrite="true" template:permittedUserRole="1,2">
            <bpmn2:incoming>SequenceFlow_05ujoyy</bpmn2:incoming>
            <bpmn2:outgoing>SequenceFlow_0np532x</bpmn2:outgoing>
        </bpmn2:task>
        <bpmn2:sequenceFlow id="SequenceFlow_05ujoyy" sourceRef="StartEvent_1" targetRef="Task_1"/>
        <bpmn2:task id="Task_2" name="QC" template:priority="0" template:typeImagesRead="true"
                    template:permittedUserRole="1,3">
            <bpmn2:incoming>SequenceFlow_0np532x</bpmn2:incoming>
            <bpmn2:outgoing>SequenceFlow_1803kdf</bpmn2:outgoing>
        </bpmn2:task>
        <bpmn2:sequenceFlow id="SequenceFlow_0np532x" sourceRef="Task_1" targetRef="Task_2"/>
        <bpmn2:task id="Task_3" name="Structure and Metadata" template:priority="0" template:typeMetadata="true"
                    template:permittedUserRole="1,5">
            <bpmn2:incoming>SequenceFlow_1803kdf</bpmn2:incoming>
            <bpmn2:outgoing>SequenceFlow_1sdich4</bpmn2:outgoing>
        </bpmn2:task>
        <bpmn2:sequenceFlow id="SequenceFlow_1803kdf" sourceRef="Task_2" targetRef="Task_3"/>
        <bpmn2:task id="Task_4" name="Export DMS" template:priority="0" template:typeExportDMS="true"
                    template:permittedUserRole="1,6">
            <bpmn2:incoming>SequenceFlow_1sdich4</bpmn2:incoming>
            <bpmn2:outgoing>SequenceFlow_0vxm9nz</bpmn2:outgoing>
        </bpmn2:task>
        <bpmn2:sequenceFlow id="SequenceFlow_1sdich4" sourceRef="Task_3" targetRef="Task_4"/>
        <bpmn2:endEvent id="EndEvent_1r20d3t">
            <bpmn2:incoming>SequenceFlow_0vxm9nz</bpmn2:incoming>
        </bpmn2:endEvent>
        <bpmn2:sequenceFlow id="SequenceFlow_0vxm9nz" sourceRef="Task_4" targetRef="EndEvent_1r20d3t"/>
    </bpmn2:process>
    <bpmndi:BPMNDiagram id="BPMNDiagram_1">
        non relevant shape information
    </bpmndi:BPMNDiagram>
</bpmn2:definitions>

Tasks that are only part of a conditional branch (behind a gateway) carry the condition attributes, for example:

<bpmn2:task id="Task4" name="Task4" template:permittedUserRole="1,2"
            template:kitodoConditionType="XPath"
            template:kitodoConditionValue="/mets:mets/mets:dmdSec/mets:mdWrap/mets:xmlData/kitodo:kitodo"/>

A complete, ready-to-use example diagram is shipped in Kitodo/diagrams/Example_Workflow.bpmn20.xml.