Data contract review with schema repair loop
Review schema compatibility, ownership and quality expectations; allow a producer to correct a version or withdraw it. Editable collaboration with role lanes, decisions and a correction and resubmission loop. Illustrative policy and timing; adapt to local requirements.
Rendering…
What this template contains
- Source
- 73 lines
Make it your own.
<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" id="data_contract_repair_definitions" targetNamespace="urn:flowss:advanced">
<bpmn:message id="data_contract_repair_message" name="Data contract proposed"/>
<bpmn:process id="data_contract_repair_process" name="Data contract review with schema repair loop" isExecutable="false">
<bpmn:documentation>Review schema compatibility, ownership and quality expectations; allow a producer to correct a version or withdraw it. Inputs: Data contract proposed. All policy choices, durations and conditions are illustrative. Replace example rules with approved local policy; configure integrations and review before execution. This non-executable template does not assert legal compliance or a real completed case.</bpmn:documentation>
<bpmn:laneSet id="data_contract_repair_lanes"><bpmn:lane id="data_contract_repair_lane_0" name="Data platform reviewer"><bpmn:flowNodeRef>data_contract_repair_start</bpmn:flowNodeRef><bpmn:flowNodeRef>data_contract_repair_intake_1</bpmn:flowNodeRef><bpmn:flowNodeRef>data_contract_repair_review_entry</bpmn:flowNodeRef><bpmn:flowNodeRef>data_contract_repair_checks_1</bpmn:flowNodeRef><bpmn:flowNodeRef>data_contract_repair_checks_2</bpmn:flowNodeRef><bpmn:flowNodeRef>data_contract_repair_checks_3</bpmn:flowNodeRef><bpmn:flowNodeRef>data_contract_repair_decision</bpmn:flowNodeRef><bpmn:flowNodeRef>data_contract_repair_success_1</bpmn:flowNodeRef><bpmn:flowNodeRef>data_contract_repair_success_rest_1</bpmn:flowNodeRef><bpmn:flowNodeRef>data_contract_repair_complete</bpmn:flowNodeRef></bpmn:lane><bpmn:lane id="data_contract_repair_lane_1" name="Data producer"><bpmn:flowNodeRef>data_contract_repair_remediation_entry</bpmn:flowNodeRef><bpmn:flowNodeRef>data_contract_repair_remediation_1</bpmn:flowNodeRef><bpmn:flowNodeRef>data_contract_repair_resubmit</bpmn:flowNodeRef></bpmn:lane><bpmn:lane id="data_contract_repair_lane_2" name="Contract owner"><bpmn:flowNodeRef>data_contract_repair_alternate</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet>
<bpmn:startEvent id="data_contract_repair_start" name="Data contract proposed"><bpmn:messageEventDefinition id="data_contract_repair_start_def" messageRef="data_contract_repair_message"/></bpmn:startEvent>
<bpmn:userTask id="data_contract_repair_intake_1" name="Register proposed contract"></bpmn:userTask>
<bpmn:exclusiveGateway id="data_contract_repair_review_entry"></bpmn:exclusiveGateway>
<bpmn:userTask id="data_contract_repair_checks_1" name="Check schema compatibility"></bpmn:userTask>
<bpmn:userTask id="data_contract_repair_checks_2" name="Verify ownership contact"></bpmn:userTask>
<bpmn:userTask id="data_contract_repair_checks_3" name="Test sample payload"></bpmn:userTask>
<bpmn:exclusiveGateway id="data_contract_repair_decision" name="Contract valid?" default="data_contract_repair_flow_8"></bpmn:exclusiveGateway>
<bpmn:userTask id="data_contract_repair_success_1" name="Version approved contract"></bpmn:userTask>
<bpmn:userTask id="data_contract_repair_remediation_entry" name="Explain failing assertions"></bpmn:userTask>
<bpmn:userTask id="data_contract_repair_success_rest_1" name="Publish consumer notice"></bpmn:userTask>
<bpmn:endEvent id="data_contract_repair_complete" name="Contract published"></bpmn:endEvent>
<bpmn:userTask id="data_contract_repair_remediation_1" name="Revise schema and examples"></bpmn:userTask>
<bpmn:exclusiveGateway id="data_contract_repair_resubmit" name="Correction viable?" default="data_contract_repair_flow_14"></bpmn:exclusiveGateway>
<bpmn:endEvent id="data_contract_repair_alternate" name="Proposal withdrawn"></bpmn:endEvent>
<bpmn:sequenceFlow id="data_contract_repair_flow_1" sourceRef="data_contract_repair_start" targetRef="data_contract_repair_intake_1"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="data_contract_repair_flow_2" sourceRef="data_contract_repair_intake_1" targetRef="data_contract_repair_review_entry"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="data_contract_repair_flow_3" sourceRef="data_contract_repair_review_entry" targetRef="data_contract_repair_checks_1"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="data_contract_repair_flow_4" sourceRef="data_contract_repair_checks_1" targetRef="data_contract_repair_checks_2"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="data_contract_repair_flow_5" sourceRef="data_contract_repair_checks_2" targetRef="data_contract_repair_checks_3"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="data_contract_repair_flow_6" sourceRef="data_contract_repair_checks_3" targetRef="data_contract_repair_decision"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="data_contract_repair_flow_7" sourceRef="data_contract_repair_decision" targetRef="data_contract_repair_success_1" name="Yes"><bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=contractValid = true</bpmn:conditionExpression></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="data_contract_repair_flow_8" sourceRef="data_contract_repair_decision" targetRef="data_contract_repair_remediation_entry" name="Otherwise"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="data_contract_repair_flow_9" sourceRef="data_contract_repair_success_1" targetRef="data_contract_repair_success_rest_1"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="data_contract_repair_flow_10" sourceRef="data_contract_repair_success_rest_1" targetRef="data_contract_repair_complete"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="data_contract_repair_flow_11" sourceRef="data_contract_repair_remediation_entry" targetRef="data_contract_repair_remediation_1"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="data_contract_repair_flow_12" sourceRef="data_contract_repair_remediation_1" targetRef="data_contract_repair_resubmit"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="data_contract_repair_flow_13" sourceRef="data_contract_repair_resubmit" targetRef="data_contract_repair_review_entry" name="Revise"><bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=correctionViable = true</bpmn:conditionExpression></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="data_contract_repair_flow_14" sourceRef="data_contract_repair_resubmit" targetRef="data_contract_repair_alternate" name="Close"></bpmn:sequenceFlow>
</bpmn:process>
<bpmn:collaboration id="data_contract_repair_collaboration"><bpmn:participant id="data_contract_repair_party" name="Producing team"/><bpmn:participant id="data_contract_repair_pool" name="Data contract review with schema repair loop" processRef="data_contract_repair_process"/><bpmn:messageFlow id="data_contract_repair_request" sourceRef="data_contract_repair_party" targetRef="data_contract_repair_start"/></bpmn:collaboration>
<bpmndi:BPMNDiagram id="data_contract_repair_diagram"><bpmndi:BPMNPlane id="data_contract_repair_plane" bpmnElement="data_contract_repair_collaboration">
<bpmndi:BPMNShape id="data_contract_repair_party_di" bpmnElement="data_contract_repair_party" isHorizontal="true"><dc:Bounds x="20" y="20" width="2420" height="70"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_pool_di" bpmnElement="data_contract_repair_pool" isHorizontal="true"><dc:Bounds x="20" y="180" width="2420" height="780"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_lane_0_di" bpmnElement="data_contract_repair_lane_0" isHorizontal="true"><dc:Bounds x="50" y="180" width="2390" height="260"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_lane_1_di" bpmnElement="data_contract_repair_lane_1" isHorizontal="true"><dc:Bounds x="50" y="440" width="2390" height="260"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_lane_2_di" bpmnElement="data_contract_repair_lane_2" isHorizontal="true"><dc:Bounds x="50" y="700" width="2390" height="260"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_start_di" bpmnElement="data_contract_repair_start"><dc:Bounds x="162" y="292" width="36" height="36"/><bpmndi:BPMNLabel><dc:Bounds x="108" y="335" width="144" height="40"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_intake_1_di" bpmnElement="data_contract_repair_intake_1"><dc:Bounds x="325" y="272" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_review_entry_di" bpmnElement="data_contract_repair_review_entry" isMarkerVisible="true"><dc:Bounds x="576" y="286" width="48" height="48"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_checks_1_di" bpmnElement="data_contract_repair_checks_1"><dc:Bounds x="745" y="272" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_checks_2_di" bpmnElement="data_contract_repair_checks_2"><dc:Bounds x="955" y="272" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_checks_3_di" bpmnElement="data_contract_repair_checks_3"><dc:Bounds x="1165" y="272" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_decision_di" bpmnElement="data_contract_repair_decision" isMarkerVisible="true"><dc:Bounds x="1416" y="286" width="48" height="48"/><bpmndi:BPMNLabel><dc:Bounds x="1368" y="236" width="144" height="40"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_success_1_di" bpmnElement="data_contract_repair_success_1"><dc:Bounds x="1585" y="272" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_remediation_entry_di" bpmnElement="data_contract_repair_remediation_entry"><dc:Bounds x="1585" y="532" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_success_rest_1_di" bpmnElement="data_contract_repair_success_rest_1"><dc:Bounds x="1795" y="272" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_complete_di" bpmnElement="data_contract_repair_complete"><dc:Bounds x="2052" y="292" width="36" height="36"/><bpmndi:BPMNLabel><dc:Bounds x="1998" y="335" width="144" height="40"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_remediation_1_di" bpmnElement="data_contract_repair_remediation_1"><dc:Bounds x="1795" y="532" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_resubmit_di" bpmnElement="data_contract_repair_resubmit" isMarkerVisible="true"><dc:Bounds x="2046" y="546" width="48" height="48"/><bpmndi:BPMNLabel><dc:Bounds x="1998" y="496" width="144" height="40"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="data_contract_repair_alternate_di" bpmnElement="data_contract_repair_alternate"><dc:Bounds x="2262" y="812" width="36" height="36"/><bpmndi:BPMNLabel><dc:Bounds x="2208" y="855" width="144" height="40"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="data_contract_repair_flow_1_di" bpmnElement="data_contract_repair_flow_1"><di:waypoint x="198" y="310"/><di:waypoint x="325" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="data_contract_repair_flow_2_di" bpmnElement="data_contract_repair_flow_2"><di:waypoint x="455" y="310"/><di:waypoint x="576" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="data_contract_repair_flow_3_di" bpmnElement="data_contract_repair_flow_3"><di:waypoint x="624" y="310"/><di:waypoint x="745" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="data_contract_repair_flow_4_di" bpmnElement="data_contract_repair_flow_4"><di:waypoint x="875" y="310"/><di:waypoint x="955" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="data_contract_repair_flow_5_di" bpmnElement="data_contract_repair_flow_5"><di:waypoint x="1085" y="310"/><di:waypoint x="1165" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="data_contract_repair_flow_6_di" bpmnElement="data_contract_repair_flow_6"><di:waypoint x="1295" y="310"/><di:waypoint x="1416" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="data_contract_repair_flow_7_di" bpmnElement="data_contract_repair_flow_7"><di:waypoint x="1464" y="310"/><di:waypoint x="1585" y="310"/><bpmndi:BPMNLabel><dc:Bounds x="1472" y="283" width="100" height="22"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="data_contract_repair_flow_8_di" bpmnElement="data_contract_repair_flow_8"><di:waypoint x="1464" y="310"/><di:waypoint x="1525" y="310"/><di:waypoint x="1525" y="570"/><di:waypoint x="1585" y="570"/><bpmndi:BPMNLabel><dc:Bounds x="1472" y="320" width="100" height="22"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="data_contract_repair_flow_9_di" bpmnElement="data_contract_repair_flow_9"><di:waypoint x="1715" y="310"/><di:waypoint x="1795" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="data_contract_repair_flow_10_di" bpmnElement="data_contract_repair_flow_10"><di:waypoint x="1925" y="310"/><di:waypoint x="2052" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="data_contract_repair_flow_11_di" bpmnElement="data_contract_repair_flow_11"><di:waypoint x="1715" y="570"/><di:waypoint x="1795" y="570"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="data_contract_repair_flow_12_di" bpmnElement="data_contract_repair_flow_12"><di:waypoint x="1925" y="570"/><di:waypoint x="2046" y="570"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="data_contract_repair_flow_13_di" bpmnElement="data_contract_repair_flow_13"><di:waypoint x="2070" y="594"/><di:waypoint x="2070" y="676"/><di:waypoint x="526" y="676"/><di:waypoint x="526" y="310"/><di:waypoint x="576" y="310"/><bpmndi:BPMNLabel><dc:Bounds x="1962" y="679" width="100" height="22"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="data_contract_repair_flow_14_di" bpmnElement="data_contract_repair_flow_14"><di:waypoint x="2094" y="570"/><di:waypoint x="2178" y="570"/><di:waypoint x="2178" y="830"/><di:waypoint x="2262" y="830"/><bpmndi:BPMNLabel><dc:Bounds x="2102" y="580" width="100" height="22"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="data_contract_repair_request_di" bpmnElement="data_contract_repair_request"><di:waypoint x="180" y="90"/><di:waypoint x="180" y="292"/></bpmndi:BPMNEdge>
</bpmndi:BPMNPlane></bpmndi:BPMNDiagram>
</bpmn:definitions>