<definitions targetNamespace="http://activiti.org/bpmn20" xmlns:activiti="http://activiti.org/bpmn"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL
                    https://www.omg.org/spec/BPMN/2.0/20100501/BPMN20.xsd">

    <process id="cmComplaintWorkflow" name="Complaint review and approval process">

        <startEvent id="complaintSubmittedForApproval"/>

        <sequenceFlow id="initiatedToApproval" sourceRef="complaintSubmittedForApproval" targetRef="approveComplaint"/>

        <userTask id="approveComplaint" name="Approve Complaint '${complaintTitle}'" activiti:assignee="${currentApprover}"
            activiti:dueDate="P3D" activiti:priority="50">
            <!-- note: "P3D" above = "Period of 3 days from now". Any valid ISO801 duration expression will work. -->
            <!-- note: intellij does not like the activiti:priority attribute, but it works anyway.  50 is the default
                 value. -->
            <documentation>
                Approve the complaint; it will become part of a new case file.
            </documentation>
            <multiInstanceLoopCharacteristics isSequential="false" activiti:collection="approvers"
                activiti:elementVariable="currentApprover"/>
        </userTask>

        <sequenceFlow id="approvalToEnd" sourceRef="approveComplaint" targetRef="done"/>

        <endEvent id="done"/>

    </process>

</definitions>
