Browse Source

bpmn model and validation

ench0 3 years ago
parent
commit
e0bb0f7063
5 changed files with 621 additions and 1 deletions
  1. 3 0
      .bpmnlintrc
  2. 9 0
      README.md
  3. 1 1
      dprl.ttl
  4. 571 0
      model/rectify-bpmn.xml
  5. 37 0
      model/rectify-schematron.xml

+ 3 - 0
.bpmnlintrc

@@ -0,0 +1,3 @@
+{
+  "extends": "bpmnlint:recommended"
+}

+ 9 - 0
README.md

@@ -14,3 +14,12 @@ DPRL is ODRL profile for GDPR
 | Right to object to procedure | -                            | object                |
 
 VSCode: Language Support for RDF related language syntax
+
+# Tools used
+
+yarn global add bpmnlint
+or
+npm install -g bpmnlint
+
+bpmnlint --init
+bpmnlint model/rectify-bpmn.xml

+ 1 - 1
dprl.ttl

@@ -124,7 +124,7 @@ dprl:DataSubject
        odrl:constraint [{
            odrl:leftOperand xsd:datetime,
            odrl:operator odrl:lt,
-           odrl:rightOperand  { "@value": "2018-01-01", "@type": "xsd:date" }
+           odrl:rightOperand  { "@value": "2021-01-01", "@type": "xsd:date" }
        }]
    }] ;
    sh:property [

+ 571 - 0
model/rectify-bpmn.xml

@@ -0,0 +1,571 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="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:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_159242n" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.2.1">
+  <bpmn:collaboration id="MainCollaboration">
+    <bpmn:documentation>Main model GDPR rectification request</bpmn:documentation>
+    <bpmn:participant id="MainParticipant" name="Data Sharing Actors" processRef="RectProcess" />
+  </bpmn:collaboration>
+  <bpmn:process id="RectProcess" name="GDPR Rectification Request" isExecutable="true">
+    <bpmn:laneSet id="MainLaneSet">
+      <bpmn:lane id="TP_lane" name="Third Party">
+        <bpmn:flowNodeRef>TP_IntermediateCatchEvent_1</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>TP_TimerIntermediateCatchEvent_1</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>TP_Task_1</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>TP_Task_2</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>TP_Task_3</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>TP_EndEvent</bpmn:flowNodeRef>
+      </bpmn:lane>
+      <bpmn:lane id="DC_lane" name="Data Controller">
+        <bpmn:flowNodeRef>DC_IntermediateCatchEvent_1</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DC_Task_1_1</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DC_Task_1_2</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DC_ParallelGateway_1</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DC_Task_4</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DC_ParallelGateway_2</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DC_ExclusiveGateway_1</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DC_Task_3_1</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DC_Task_3_2</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DC_IntermediateCatchEvent_2</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DC_TimerIntermediateCatchEvent_1</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DC_ExclusiveGateway_2</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DC_Task_5</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DC_TerminateEndEvent</bpmn:flowNodeRef>
+      </bpmn:lane>
+      <bpmn:lane id="DS_lane" name="Data Subject">
+        <bpmn:flowNodeRef>DS_ExclusiveGateway_1</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DS_StartEvent</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DS_IntermediateCatchEvent_2</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DS_InclusiveGateway_1</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DS_IntermediateCatchEvent_1</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DS_TimerIntermediateCatchEvent_1</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DS_Task_1</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DS_ExclusiveGateway_2</bpmn:flowNodeRef>
+        <bpmn:flowNodeRef>DS_EndEvent</bpmn:flowNodeRef>
+      </bpmn:lane>
+    </bpmn:laneSet>
+    <bpmn:sequenceFlow id="DS_SequenceFlow_1_2" sourceRef="DS_StartEvent" targetRef="DC_IntermediateCatchEvent_1" />
+    <bpmn:sequenceFlow id="DS_SequenceFlow_1_1" sourceRef="DS_StartEvent" targetRef="DS_ExclusiveGateway_1" />
+    <bpmn:sequenceFlow id="DS_SequenceFlow_2_3" name="amend" sourceRef="DS_Task_1" targetRef="DS_ExclusiveGateway_1" />
+    <bpmn:sequenceFlow id="DS_SequenceFlow_2_2" name="no" sourceRef="DS_ExclusiveGateway_1" targetRef="DS_Task_1" />
+    <bpmn:sequenceFlow id="DS_SequenceFlow_2_1" name="yes" sourceRef="DS_ExclusiveGateway_1" targetRef="DS_ExclusiveGateway_2" />
+    <bpmn:sequenceFlow id="DS_SequenceFlow_4_1" sourceRef="DS_TimerIntermediateCatchEvent_1" targetRef="DS_InclusiveGateway_1" />
+    <bpmn:sequenceFlow id="DS_SequenceFlow_5_1" sourceRef="DS_InclusiveGateway_1" targetRef="DS_IntermediateCatchEvent_2" />
+    <bpmn:sequenceFlow id="DS_SequenceFlow_6" sourceRef="DS_IntermediateCatchEvent_2" targetRef="DS_EndEvent" />
+    <bpmn:sequenceFlow id="DS_SequenceFlow_4_2" sourceRef="DS_IntermediateCatchEvent_1" targetRef="DS_TimerIntermediateCatchEvent_1" />
+    <bpmn:sequenceFlow id="DS_SequenceFlow_5_2" sourceRef="DS_InclusiveGateway_1" targetRef="DS_IntermediateCatchEvent_1" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_5_4" sourceRef="DC_Task_3_2" targetRef="TP_IntermediateCatchEvent_1" />
+    <bpmn:sequenceFlow id="DS_SequenceFlow_2_5" name="reply" sourceRef="DS_Task_1" targetRef="DC_ParallelGateway_1" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_8_1" name="more&#10;time&#10;needed" sourceRef="DC_TimerIntermediateCatchEvent_1" targetRef="DS_IntermediateCatchEvent_1" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_9_1" name="notify" sourceRef="DC_Task_4" targetRef="DS_IntermediateCatchEvent_2" />
+    <bpmn:sequenceFlow id="TP_SequenceFlow_2" sourceRef="TP_Task_1" targetRef="TP_TimerIntermediateCatchEvent_1" />
+    <bpmn:sequenceFlow id="TP_SequenceFlow_1" sourceRef="TP_IntermediateCatchEvent_1" targetRef="TP_Task_1" />
+    <bpmn:sequenceFlow id="TP_SequenceFlow_3" sourceRef="TP_TimerIntermediateCatchEvent_1" targetRef="TP_Task_2" />
+    <bpmn:sequenceFlow id="TP_SequenceFlow_5_1" sourceRef="TP_Task_3" targetRef="DC_IntermediateCatchEvent_2" />
+    <bpmn:sequenceFlow id="TP_SequenceFlow_4" sourceRef="TP_Task_2" targetRef="TP_Task_3" />
+    <bpmn:sequenceFlow id="TP_SequenceFlow_5_2" sourceRef="TP_Task_3" targetRef="TP_EndEvent" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_1" sourceRef="DC_IntermediateCatchEvent_1" targetRef="DC_ParallelGateway_1" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_2_1" sourceRef="DC_ParallelGateway_1" targetRef="DC_Task_1_1" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_2_2" sourceRef="DC_ParallelGateway_1" targetRef="DC_Task_1_2" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_5_2" name="yes" sourceRef="DC_ExclusiveGateway_1" targetRef="DC_Task_3_2" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_5_1" name="no" sourceRef="DC_ExclusiveGateway_1" targetRef="DC_Task_3_1" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_5_3" sourceRef="DC_Task_3_1" targetRef="DC_Task_3_2" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_6_2" sourceRef="DC_Task_3_2" targetRef="DC_ExclusiveGateway_2" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_8_2" sourceRef="DC_TimerIntermediateCatchEvent_1" targetRef="DC_Task_4" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_9_3" sourceRef="DC_IntermediateCatchEvent_2" targetRef="DC_Task_4" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_9_2" sourceRef="DC_Task_4" targetRef="DC_Task_5" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_10" sourceRef="DC_Task_5" targetRef="DC_TerminateEndEvent" />
+    <bpmn:intermediateCatchEvent id="DC_IntermediateCatchEvent_1" name="Request&#10;received">
+      <bpmn:incoming>DS_SequenceFlow_1_2</bpmn:incoming>
+      <bpmn:outgoing>DC_SequenceFlow_1</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:task id="DC_Task_1_1" name="Validate">
+      <bpmn:incoming>DC_SequenceFlow_2_1</bpmn:incoming>
+      <bpmn:outgoing>DC_SequenceFlow_3_1</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:task id="DC_Task_1_2" name="Log">
+      <bpmn:incoming>DC_SequenceFlow_2_2</bpmn:incoming>
+      <bpmn:outgoing>DC_SequenceFlow_3_2</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:parallelGateway id="DC_ParallelGateway_1">
+      <bpmn:incoming>DC_SequenceFlow_1</bpmn:incoming>
+      <bpmn:incoming>DS_SequenceFlow_2_5</bpmn:incoming>
+      <bpmn:outgoing>DC_SequenceFlow_2_1</bpmn:outgoing>
+      <bpmn:outgoing>DC_SequenceFlow_2_2</bpmn:outgoing>
+    </bpmn:parallelGateway>
+    <bpmn:intermediateCatchEvent id="TP_IntermediateCatchEvent_1" name="Request&#10;received">
+      <bpmn:incoming>DC_SequenceFlow_5_4</bpmn:incoming>
+      <bpmn:outgoing>TP_SequenceFlow_1</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:exclusiveGateway id="DS_ExclusiveGateway_1" name="Request&#10;accepted">
+      <bpmn:incoming>DS_SequenceFlow_1_1</bpmn:incoming>
+      <bpmn:incoming>DS_SequenceFlow_2_3</bpmn:incoming>
+      <bpmn:outgoing>DS_SequenceFlow_2_2</bpmn:outgoing>
+      <bpmn:outgoing>DS_SequenceFlow_2_1</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:startEvent id="DS_StartEvent" name="Rectification request" camunda:initiator="DS">
+      <bpmn:extensionElements>
+        <camunda:executionListener expression="StartMainListener" event="start" />
+        <camunda:executionListener expression="CloseMainListener" event="end" />
+      </bpmn:extensionElements>
+      <bpmn:outgoing>DS_SequenceFlow_1_2</bpmn:outgoing>
+      <bpmn:outgoing>DS_SequenceFlow_1_1</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:intermediateCatchEvent id="TP_TimerIntermediateCatchEvent_1" name="Processing&#10;time">
+      <bpmn:incoming>TP_SequenceFlow_2</bpmn:incoming>
+      <bpmn:outgoing>TP_SequenceFlow_3</bpmn:outgoing>
+      <bpmn:timerEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:task id="TP_Task_1" name="Process data">
+      <bpmn:incoming>TP_SequenceFlow_1</bpmn:incoming>
+      <bpmn:outgoing>TP_SequenceFlow_2</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:task id="DC_Task_4" name="Inform">
+      <bpmn:incoming>DC_SequenceFlow_8_2</bpmn:incoming>
+      <bpmn:incoming>DC_SequenceFlow_9_3</bpmn:incoming>
+      <bpmn:outgoing>DC_SequenceFlow_9_1</bpmn:outgoing>
+      <bpmn:outgoing>DC_SequenceFlow_9_2</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:intermediateCatchEvent id="DS_IntermediateCatchEvent_2" name="Notification received">
+      <bpmn:incoming>DS_SequenceFlow_5_1</bpmn:incoming>
+      <bpmn:incoming>DC_SequenceFlow_9_1</bpmn:incoming>
+      <bpmn:outgoing>DS_SequenceFlow_6</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:inclusiveGateway id="DS_InclusiveGateway_1">
+      <bpmn:incoming>DS_SequenceFlow_4_1</bpmn:incoming>
+      <bpmn:outgoing>DS_SequenceFlow_5_1</bpmn:outgoing>
+      <bpmn:outgoing>DS_SequenceFlow_5_2</bpmn:outgoing>
+    </bpmn:inclusiveGateway>
+    <bpmn:intermediateCatchEvent id="DS_IntermediateCatchEvent_1" name="Extension&#10;requested">
+      <bpmn:incoming>DS_SequenceFlow_5_2</bpmn:incoming>
+      <bpmn:incoming>DC_SequenceFlow_8_1</bpmn:incoming>
+      <bpmn:outgoing>DS_SequenceFlow_4_2</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:intermediateCatchEvent id="DS_TimerIntermediateCatchEvent_1" name="Waiting period">
+      <bpmn:incoming>DS_SequenceFlow_4_2</bpmn:incoming>
+      <bpmn:incoming>DS_SequenceFlow_3</bpmn:incoming>
+      <bpmn:outgoing>DS_SequenceFlow_4_1</bpmn:outgoing>
+      <bpmn:timerEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:parallelGateway id="DC_ParallelGateway_2">
+      <bpmn:incoming>DC_SequenceFlow_3_1</bpmn:incoming>
+      <bpmn:incoming>DC_SequenceFlow_3_2</bpmn:incoming>
+      <bpmn:outgoing>DC_SequenceFlow_4</bpmn:outgoing>
+    </bpmn:parallelGateway>
+    <bpmn:sequenceFlow id="DC_SequenceFlow_3_1" sourceRef="DC_Task_1_1" targetRef="DC_ParallelGateway_2" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_3_2" sourceRef="DC_Task_1_2" targetRef="DC_ParallelGateway_2" />
+    <bpmn:exclusiveGateway id="DC_ExclusiveGateway_1" name="Request valid">
+      <bpmn:incoming>DC_SequenceFlow_4</bpmn:incoming>
+      <bpmn:outgoing>DC_SequenceFlow_5_2</bpmn:outgoing>
+      <bpmn:outgoing>DC_SequenceFlow_5_1</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="DC_SequenceFlow_4" sourceRef="DC_ParallelGateway_2" targetRef="DC_ExclusiveGateway_1" />
+    <bpmn:task id="DC_Task_3_1" name="Amend request">
+      <bpmn:incoming>DC_SequenceFlow_5_1</bpmn:incoming>
+      <bpmn:outgoing>DC_SequenceFlow_5_3</bpmn:outgoing>
+      <bpmn:outgoing>DC_SequenceFlow_6_1</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:task id="DC_Task_3_2" name="Request rectification">
+      <bpmn:incoming>DC_SequenceFlow_5_2</bpmn:incoming>
+      <bpmn:incoming>DC_SequenceFlow_5_3</bpmn:incoming>
+      <bpmn:outgoing>DC_SequenceFlow_5_4</bpmn:outgoing>
+      <bpmn:outgoing>DC_SequenceFlow_6_2</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:sequenceFlow id="DC_SequenceFlow_6_1" sourceRef="DC_Task_3_1" targetRef="DC_ExclusiveGateway_2" />
+    <bpmn:sequenceFlow id="DC_SequenceFlow_7" sourceRef="DC_ExclusiveGateway_2" targetRef="DC_TimerIntermediateCatchEvent_1" />
+    <bpmn:intermediateCatchEvent id="DC_IntermediateCatchEvent_2" name="Confirmation&#10;received">
+      <bpmn:incoming>TP_SequenceFlow_5_1</bpmn:incoming>
+      <bpmn:outgoing>DC_SequenceFlow_9_3</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:intermediateCatchEvent id="DC_TimerIntermediateCatchEvent_1" name="Processing&#10;time">
+      <bpmn:incoming>DC_SequenceFlow_7</bpmn:incoming>
+      <bpmn:outgoing>DC_SequenceFlow_8_1</bpmn:outgoing>
+      <bpmn:outgoing>DC_SequenceFlow_8_2</bpmn:outgoing>
+      <bpmn:timerEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:exclusiveGateway id="DC_ExclusiveGateway_2">
+      <bpmn:incoming>DC_SequenceFlow_6_2</bpmn:incoming>
+      <bpmn:incoming>DC_SequenceFlow_6_1</bpmn:incoming>
+      <bpmn:outgoing>DC_SequenceFlow_7</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:task id="DS_Task_1" name="Provide additional information">
+      <bpmn:incoming>DS_SequenceFlow_2_2</bpmn:incoming>
+      <bpmn:outgoing>DS_SequenceFlow_2_3</bpmn:outgoing>
+      <bpmn:outgoing>DS_SequenceFlow_2_5</bpmn:outgoing>
+      <bpmn:outgoing>DS_SequenceFlow_2_4</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:exclusiveGateway id="DS_ExclusiveGateway_2">
+      <bpmn:incoming>DS_SequenceFlow_2_1</bpmn:incoming>
+      <bpmn:incoming>DS_SequenceFlow_2_4</bpmn:incoming>
+      <bpmn:outgoing>DS_SequenceFlow_3</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="DS_SequenceFlow_3" sourceRef="DS_ExclusiveGateway_2" targetRef="DS_TimerIntermediateCatchEvent_1" />
+    <bpmn:sequenceFlow id="DS_SequenceFlow_2_4" sourceRef="DS_Task_1" targetRef="DS_ExclusiveGateway_2" />
+    <bpmn:task id="TP_Task_2" name="New data instance">
+      <bpmn:incoming>TP_SequenceFlow_3</bpmn:incoming>
+      <bpmn:outgoing>TP_SequenceFlow_4</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:task id="TP_Task_3" name="Inform">
+      <bpmn:incoming>TP_SequenceFlow_4</bpmn:incoming>
+      <bpmn:outgoing>TP_SequenceFlow_5_1</bpmn:outgoing>
+      <bpmn:outgoing>TP_SequenceFlow_5_2</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:task id="DC_Task_5" name="Log">
+      <bpmn:incoming>DC_SequenceFlow_9_2</bpmn:incoming>
+      <bpmn:outgoing>DC_SequenceFlow_10</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:endEvent id="DS_EndEvent" name="Data rectified">
+      <bpmn:incoming>DS_SequenceFlow_6</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="DC_TerminateEndEvent">
+      <bpmn:incoming>DC_SequenceFlow_10</bpmn:incoming>
+      <bpmn:terminateEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:endEvent id="TP_EndEvent">
+      <bpmn:incoming>TP_SequenceFlow_5_2</bpmn:incoming>
+    </bpmn:endEvent>
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="MainCollaboration">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="DS_StartEvent">
+        <dc:Bounds x="246" y="128" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="235" y="92" width="60" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_0s33wj2_di" bpmnElement="MainParticipant" isHorizontal="true" bioc:stroke="black" bioc:fill="white">
+        <dc:Bounds x="156" y="81" width="1424" height="639" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Lane_0nu1xnj_di" bpmnElement="DS_lane" isHorizontal="true">
+        <dc:Bounds x="186" y="81" width="1394" height="199" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Lane_1p2k2wl_di" bpmnElement="DC_lane" isHorizontal="true">
+        <dc:Bounds x="186" y="280" width="1394" height="246" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Lane_0vjmb1f_di" bpmnElement="TP_lane" isHorizontal="true">
+        <dc:Bounds x="186" y="526" width="1394" height="194" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_0t2gdo4_di" bpmnElement="DC_Task_1_1">
+        <dc:Bounds x="434" y="316" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ParallelGateway_0kyyhze_di" bpmnElement="DC_ParallelGateway_1">
+        <dc:Bounds x="329" y="331" width="50" height="50" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0nh9i52_di" bpmnElement="DC_SequenceFlow_1">
+        <di:waypoint x="282" y="356" />
+        <di:waypoint x="329" y="356" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_0c5bgw7_di" bpmnElement="DC_Task_1_2">
+        <dc:Bounds x="434" y="416" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1i114lm_di" bpmnElement="DC_SequenceFlow_2_1">
+        <di:waypoint x="379" y="356" />
+        <di:waypoint x="434" y="356" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0rwwi0y_di" bpmnElement="DC_SequenceFlow_2_2">
+        <di:waypoint x="354" y="381" />
+        <di:waypoint x="354" y="456" />
+        <di:waypoint x="434" y="456" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bvqqbe_di" bpmnElement="DS_SequenceFlow_1_2">
+        <di:waypoint x="264" y="164" />
+        <di:waypoint x="264" y="338" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_02qmgid_di" bpmnElement="DC_ExclusiveGateway_1" isMarkerVisible="true">
+        <dc:Bounds x="695" y="385" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="686" y="361" width="67" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_1wdlj41_di" bpmnElement="DC_Task_3_2">
+        <dc:Bounds x="810" y="416" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jzryon_di" bpmnElement="DC_SequenceFlow_5_2">
+        <di:waypoint x="720" y="435" />
+        <di:waypoint x="720" y="456" />
+        <di:waypoint x="810" y="456" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="751" y="433" width="17" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_09xifye_di" bpmnElement="DC_Task_3_1">
+        <dc:Bounds x="810" y="316" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1d23mcm_di" bpmnElement="DC_SequenceFlow_5_1">
+        <di:waypoint x="745" y="410" />
+        <di:waypoint x="778" y="410" />
+        <di:waypoint x="778" y="356" />
+        <di:waypoint x="810" y="356" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="752" y="392" width="13" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_11x33h4_di" bpmnElement="DS_Task_1">
+        <dc:Bounds x="500" y="170" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0nazxa8_di" bpmnElement="DS_ExclusiveGateway_1" isMarkerVisible="true">
+        <dc:Bounds x="365" y="121" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="367" y="93" width="45" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0e1lk9u_di" bpmnElement="DS_SequenceFlow_1_1">
+        <di:waypoint x="282" y="146" />
+        <di:waypoint x="365" y="146" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zkgio0_di" bpmnElement="DS_SequenceFlow_2_3">
+        <di:waypoint x="500" y="220" />
+        <di:waypoint x="390" y="220" />
+        <di:waypoint x="390" y="171" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="428" y="223" width="34" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11uwb74_di" bpmnElement="DS_SequenceFlow_2_2">
+        <di:waypoint x="390" y="171" />
+        <di:waypoint x="410" y="200" />
+        <di:waypoint x="500" y="200" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="443" y="183" width="13" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0ijl69z_di" bpmnElement="DS_EndEvent">
+        <dc:Bounds x="1512" y="128" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1500" y="171" width="65" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_19219vh_di" bpmnElement="DS_InclusiveGateway_1">
+        <dc:Bounds x="925" y="121" width="50" height="50" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1uar91f_di" bpmnElement="DS_TimerIntermediateCatchEvent_1">
+        <dc:Bounds x="742" y="128" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="726" y="104" width="69" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_10yrhf5_di" bpmnElement="DS_IntermediateCatchEvent_2">
+        <dc:Bounds x="1212" y="128" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1202" y="91" width="55" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_055gptc_di" bpmnElement="DS_SequenceFlow_2_1">
+        <di:waypoint x="415" y="146" />
+        <di:waypoint x="625" y="146" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="498" y="128" width="17" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0lwb8b4_di" bpmnElement="DS_SequenceFlow_4_1">
+        <di:waypoint x="778" y="146" />
+        <di:waypoint x="925" y="146" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0u3gend_di" bpmnElement="DS_SequenceFlow_5_1">
+        <di:waypoint x="975" y="146" />
+        <di:waypoint x="1212" y="146" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0y158cv_di" bpmnElement="DS_SequenceFlow_6">
+        <di:waypoint x="1248" y="146" />
+        <di:waypoint x="1512" y="146" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1w4dfnr_di" bpmnElement="DS_SequenceFlow_4_2">
+        <di:waypoint x="932" y="210" />
+        <di:waypoint x="760" y="210" />
+        <di:waypoint x="760" y="164" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15oehd1_di" bpmnElement="DS_SequenceFlow_5_2">
+        <di:waypoint x="950" y="171" />
+        <di:waypoint x="950" y="192" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0em14c9_di" bpmnElement="DC_IntermediateCatchEvent_1">
+        <dc:Bounds x="246" y="338" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="243" y="381" width="42" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_06bh8qv_di" bpmnElement="DS_IntermediateCatchEvent_1">
+        <dc:Bounds x="932" y="192" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="928" y="235" width="49" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1a0rns6_di" bpmnElement="DC_SequenceFlow_5_4">
+        <di:waypoint x="860" y="496" />
+        <di:waypoint x="860" y="550" />
+        <di:waypoint x="745" y="550" />
+        <di:waypoint x="745" y="602" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_00ielbr_di" bpmnElement="TP_IntermediateCatchEvent_1">
+        <dc:Bounds x="727" y="602" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="724" y="645" width="42" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vurykk_di" bpmnElement="DS_SequenceFlow_2_5">
+        <di:waypoint x="550" y="250" />
+        <di:waypoint x="550" y="270" />
+        <di:waypoint x="354" y="270" />
+        <di:waypoint x="354" y="331" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="558" y="263" width="25" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_07e95ix_di" bpmnElement="DC_SequenceFlow_5_3">
+        <di:waypoint x="860" y="396" />
+        <di:waypoint x="860" y="416" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0itpi62_di" bpmnElement="DC_TimerIntermediateCatchEvent_1">
+        <dc:Bounds x="1062" y="392" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1053" y="435" width="55" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ih7myg_di" bpmnElement="DC_SequenceFlow_6_2">
+        <di:waypoint x="910" y="456" />
+        <di:waypoint x="938" y="456" />
+        <di:waypoint x="938" y="410" />
+        <di:waypoint x="975" y="410" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_01aph6x_di" bpmnElement="DC_SequenceFlow_8_1">
+        <di:waypoint x="1080" y="392" />
+        <di:waypoint x="1080" y="210" />
+        <di:waypoint x="968" y="210" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1041" y="291" width="37" height="40" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_02vnrwo_di" bpmnElement="DC_Task_4">
+        <dc:Bounds x="1180" y="330" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_10q2slq_di" bpmnElement="DC_SequenceFlow_8_2">
+        <di:waypoint x="1098" y="410" />
+        <di:waypoint x="1120" y="410" />
+        <di:waypoint x="1120" y="370" />
+        <di:waypoint x="1180" y="370" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vbwhul_di" bpmnElement="DC_SequenceFlow_9_1">
+        <di:waypoint x="1230" y="330" />
+        <di:waypoint x="1230" y="164" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1237" y="263" width="27" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_0bhmwc9_di" bpmnElement="DC_Task_5">
+        <dc:Bounds x="1360" y="330" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0euo37t_di" bpmnElement="DC_SequenceFlow_9_2">
+        <di:waypoint x="1280" y="370" />
+        <di:waypoint x="1360" y="370" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_148o6ej_di" bpmnElement="DC_SequenceFlow_10">
+        <di:waypoint x="1460" y="370" />
+        <di:waypoint x="1512" y="370" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0qg626n_di" bpmnElement="DC_TerminateEndEvent">
+        <dc:Bounds x="1512" y="352" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_1uytb8u_di" bpmnElement="TP_Task_1">
+        <dc:Bounds x="860" y="580" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0w4d060_di" bpmnElement="TP_SequenceFlow_2">
+        <di:waypoint x="960" y="620" />
+        <di:waypoint x="1052" y="620" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1orsuyx_di" bpmnElement="TP_TimerIntermediateCatchEvent_1">
+        <dc:Bounds x="1052" y="602" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1043" y="645" width="55" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_079iq7a_di" bpmnElement="TP_SequenceFlow_1">
+        <di:waypoint x="763" y="620" />
+        <di:waypoint x="860" y="620" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0ws0u18_di" bpmnElement="DC_IntermediateCatchEvent_2">
+        <dc:Bounds x="1212" y="452" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1258" y="456" width="63" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_1s9c25q_di" bpmnElement="TP_Task_2">
+        <dc:Bounds x="1180" y="580" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1k85sho_di" bpmnElement="TP_SequenceFlow_3">
+        <di:waypoint x="1088" y="620" />
+        <di:waypoint x="1180" y="620" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0to4l7m_di" bpmnElement="TP_SequenceFlow_5_1">
+        <di:waypoint x="1410" y="580" />
+        <di:waypoint x="1410" y="550" />
+        <di:waypoint x="1230" y="550" />
+        <di:waypoint x="1230" y="488" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19a52q6_di" bpmnElement="DC_SequenceFlow_9_3">
+        <di:waypoint x="1230" y="452" />
+        <di:waypoint x="1230" y="410" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_1kj5b25_di" bpmnElement="TP_Task_3">
+        <dc:Bounds x="1360" y="580" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_107y63i_di" bpmnElement="TP_SequenceFlow_4">
+        <di:waypoint x="1280" y="620" />
+        <di:waypoint x="1360" y="620" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1ubclb0_di" bpmnElement="TP_EndEvent">
+        <dc:Bounds x="1512" y="602" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ycmzsv_di" bpmnElement="TP_SequenceFlow_5_2">
+        <di:waypoint x="1460" y="620" />
+        <di:waypoint x="1512" y="620" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ParallelGateway_05viqwz_di" bpmnElement="DC_ParallelGateway_2">
+        <dc:Bounds x="595" y="385" width="50" height="50" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0d2vla4_di" bpmnElement="DC_SequenceFlow_3_1">
+        <di:waypoint x="534" y="356" />
+        <di:waypoint x="565" y="356" />
+        <di:waypoint x="565" y="410" />
+        <di:waypoint x="595" y="410" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vr36v6_di" bpmnElement="DC_SequenceFlow_3_2">
+        <di:waypoint x="534" y="456" />
+        <di:waypoint x="565" y="456" />
+        <di:waypoint x="565" y="410" />
+        <di:waypoint x="595" y="410" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gk7gnl_di" bpmnElement="DC_SequenceFlow_4">
+        <di:waypoint x="645" y="410" />
+        <di:waypoint x="695" y="410" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_116qira_di" bpmnElement="DC_ExclusiveGateway_2" isMarkerVisible="true">
+        <dc:Bounds x="975" y="385" width="50" height="50" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mx51q7_di" bpmnElement="DC_SequenceFlow_6_1">
+        <di:waypoint x="910" y="356" />
+        <di:waypoint x="938" y="356" />
+        <di:waypoint x="938" y="410" />
+        <di:waypoint x="975" y="410" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0poyz4f_di" bpmnElement="DC_SequenceFlow_7">
+        <di:waypoint x="1025" y="410" />
+        <di:waypoint x="1062" y="410" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1bi07ts_di" bpmnElement="DS_ExclusiveGateway_2" isMarkerVisible="true">
+        <dc:Bounds x="625" y="121" width="50" height="50" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0tycrf3_di" bpmnElement="DS_SequenceFlow_3">
+        <di:waypoint x="675" y="146" />
+        <di:waypoint x="742" y="146" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xriiev_di" bpmnElement="DS_SequenceFlow_2_4">
+        <di:waypoint x="600" y="210" />
+        <di:waypoint x="650" y="210" />
+        <di:waypoint x="650" y="171" />
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>

+ 37 - 0
model/rectify-schematron.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sch:schema xmlns:sch="http://www.ascc.net/xml/schematron">
+    <sch:ns uri="http://www.omg.org/spec/BPMN/20100524/MODEL" prefix="bpmn"/>
+    <sch:ns uri="http://www.omg.org/spec/BPMN/20100524/DI" prefix="bpmndi"/>
+    <sch:ns uri="http://www.omg.org/spec/DD/20100524/DC" prefix="dc"/>
+    <sch:ns uri="http://www.omg.org/spec/DD/20100524/DI" prefix="di"/>
+    <sch:ns uri="http://bpmn.io/schema/bpmn/biocolor/1.0" prefix="bioc"/>
+
+    <sch:pattern> 
+        <sch:title>Unique Ids</sch:title> 
+        <sch:rule context="*[@id]"> 
+            <sch:assert test="not(preceding::*[@id=current()/@id][1]">Id attributes should be unique in a document.</sch:assert> 
+        </sch:rule> 
+    </sch:pattern>
+
+    <sch:pattern name="lane id">
+        <sch:rule context="bpmn:lane">
+            <sch:assert test="@id">The element lane must have an id attribute</sch:assert>
+        </sch:rule>
+    </sch:pattern>
+    <sch:pattern name="sequenceFlow id">
+        <sch:rule context="bpmn:lane">
+            <sch:assert test="@id">The element sequenceFlow must have an id attribute</sch:assert>
+        </sch:rule>
+    </sch:pattern>
+    <sch:pattern name="id obligatory for other elements">
+        <sch:rule context="bpmn:[@intermediateCatchEvent,@parallelGateway,@exclusiveGateway,@inclusiveGateway,@startEvent,@endEvent,@task">
+            <sch:assert test="@id">The element intermediateCatchEvent, parallelGateway, exclusiveGateway, inclusiveGateway, startEvent, endEvent, task must have an id attribute</sch:assert>
+        </sch:rule>
+    </sch:pattern>
+
+    <sch:pattern name="Check source-target constraints">
+        <sch:rule context="bpmn:sequenceFlow">
+            <sch:assert test="(@sourceRef = '*' and @targetRef = '*') and @sourceRef != ''">Check the target exists.</sch:assert>
+        </sch:rule>
+    </sch:pattern>
+</sch:schema>