Backorder reservation with customer response or expiry
Race a customer acceptance message against a reservation expiry so stock is not retained after a missed response. Editable collaboration with role lanes, decisions and a response-versus-expiry event race. Illustrative policy and timing; adapt to local requirements.
Rendering…
What this template contains
- Source
- 81 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="backorder_reservation_expiry_definitions" targetNamespace="urn:flowss:advanced">
<bpmn:message id="backorder_reservation_expiry_message" name="Backorder created"/>
<bpmn:message id="backorder_reservation_expiry_reply_message" name="Revised offer accepted"/>
<bpmn:process id="backorder_reservation_expiry_process" name="Backorder reservation with customer response or expiry" isExecutable="false">
<bpmn:documentation>Race a customer acceptance message against a reservation expiry so stock is not retained after a missed response. Inputs: Backorder created. 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="backorder_reservation_expiry_lanes"><bpmn:lane id="backorder_reservation_expiry_lane_0" name="Order coordinator"><bpmn:flowNodeRef>backorder_reservation_expiry_start</bpmn:flowNodeRef><bpmn:flowNodeRef>backorder_reservation_expiry_intake_1</bpmn:flowNodeRef><bpmn:flowNodeRef>backorder_reservation_expiry_intake_2</bpmn:flowNodeRef><bpmn:flowNodeRef>backorder_reservation_expiry_race</bpmn:flowNodeRef><bpmn:flowNodeRef>backorder_reservation_expiry_reply</bpmn:flowNodeRef><bpmn:flowNodeRef>backorder_reservation_expiry_checks_1</bpmn:flowNodeRef><bpmn:flowNodeRef>backorder_reservation_expiry_decision</bpmn:flowNodeRef><bpmn:flowNodeRef>backorder_reservation_expiry_success_1</bpmn:flowNodeRef><bpmn:flowNodeRef>backorder_reservation_expiry_success_rest_1</bpmn:flowNodeRef><bpmn:flowNodeRef>backorder_reservation_expiry_complete</bpmn:flowNodeRef></bpmn:lane><bpmn:lane id="backorder_reservation_expiry_lane_1" name="Customer liaison"><bpmn:flowNodeRef>backorder_reservation_expiry_decline</bpmn:flowNodeRef><bpmn:flowNodeRef>backorder_reservation_expiry_declined</bpmn:flowNodeRef></bpmn:lane><bpmn:lane id="backorder_reservation_expiry_lane_2" name="Inventory controller"><bpmn:flowNodeRef>backorder_reservation_expiry_expiry</bpmn:flowNodeRef><bpmn:flowNodeRef>backorder_reservation_expiry_exception_1</bpmn:flowNodeRef><bpmn:flowNodeRef>backorder_reservation_expiry_exception_2</bpmn:flowNodeRef><bpmn:flowNodeRef>backorder_reservation_expiry_alternate</bpmn:flowNodeRef></bpmn:lane></bpmn:laneSet>
<bpmn:startEvent id="backorder_reservation_expiry_start" name="Backorder created"><bpmn:messageEventDefinition id="backorder_reservation_expiry_start_def" messageRef="backorder_reservation_expiry_message"/></bpmn:startEvent>
<bpmn:userTask id="backorder_reservation_expiry_intake_1" name="Confirm alternate stock"></bpmn:userTask>
<bpmn:userTask id="backorder_reservation_expiry_intake_2" name="Send revised fulfillment offer"></bpmn:userTask>
<bpmn:eventBasedGateway id="backorder_reservation_expiry_race" name="First response"></bpmn:eventBasedGateway>
<bpmn:intermediateCatchEvent id="backorder_reservation_expiry_reply" name="Revised offer accepted"><bpmn:messageEventDefinition id="backorder_reservation_expiry_reply_def" messageRef="backorder_reservation_expiry_reply_message"/></bpmn:intermediateCatchEvent>
<bpmn:intermediateCatchEvent id="backorder_reservation_expiry_expiry" name="Offer expires"><bpmn:timerEventDefinition id="backorder_reservation_expiry_expiry_def"><bpmn:timeDuration xsi:type="bpmn:tFormalExpression">P3D</bpmn:timeDuration></bpmn:timerEventDefinition></bpmn:intermediateCatchEvent>
<bpmn:userTask id="backorder_reservation_expiry_checks_1" name="Validate selected option"></bpmn:userTask>
<bpmn:exclusiveGateway id="backorder_reservation_expiry_decision" name="Customer choice feasible?" default="backorder_reservation_expiry_flow_9"></bpmn:exclusiveGateway>
<bpmn:userTask id="backorder_reservation_expiry_success_1" name="Commit revised order"></bpmn:userTask>
<bpmn:sendTask id="backorder_reservation_expiry_decline" name="Send decision and next steps"></bpmn:sendTask>
<bpmn:endEvent id="backorder_reservation_expiry_declined" name="Response not accepted"></bpmn:endEvent>
<bpmn:userTask id="backorder_reservation_expiry_success_rest_1" name="Send dispatch expectation"></bpmn:userTask>
<bpmn:endEvent id="backorder_reservation_expiry_complete" name="Order rescheduled"></bpmn:endEvent>
<bpmn:userTask id="backorder_reservation_expiry_exception_1" name="Release reserved stock"></bpmn:userTask>
<bpmn:userTask id="backorder_reservation_expiry_exception_2" name="Notify customer of expiry"></bpmn:userTask>
<bpmn:endEvent id="backorder_reservation_expiry_alternate" name="Reservation released"></bpmn:endEvent>
<bpmn:sequenceFlow id="backorder_reservation_expiry_flow_1" sourceRef="backorder_reservation_expiry_start" targetRef="backorder_reservation_expiry_intake_1"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="backorder_reservation_expiry_flow_2" sourceRef="backorder_reservation_expiry_intake_1" targetRef="backorder_reservation_expiry_intake_2"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="backorder_reservation_expiry_flow_3" sourceRef="backorder_reservation_expiry_intake_2" targetRef="backorder_reservation_expiry_race"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="backorder_reservation_expiry_flow_4" sourceRef="backorder_reservation_expiry_race" targetRef="backorder_reservation_expiry_reply"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="backorder_reservation_expiry_flow_5" sourceRef="backorder_reservation_expiry_race" targetRef="backorder_reservation_expiry_expiry"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="backorder_reservation_expiry_flow_6" sourceRef="backorder_reservation_expiry_reply" targetRef="backorder_reservation_expiry_checks_1"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="backorder_reservation_expiry_flow_7" sourceRef="backorder_reservation_expiry_checks_1" targetRef="backorder_reservation_expiry_decision"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="backorder_reservation_expiry_flow_8" sourceRef="backorder_reservation_expiry_decision" targetRef="backorder_reservation_expiry_success_1" name="Yes"><bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=choiceFeasible = true</bpmn:conditionExpression></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="backorder_reservation_expiry_flow_9" sourceRef="backorder_reservation_expiry_decision" targetRef="backorder_reservation_expiry_decline" name="Otherwise"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="backorder_reservation_expiry_flow_10" sourceRef="backorder_reservation_expiry_decline" targetRef="backorder_reservation_expiry_declined"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="backorder_reservation_expiry_flow_11" sourceRef="backorder_reservation_expiry_success_1" targetRef="backorder_reservation_expiry_success_rest_1"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="backorder_reservation_expiry_flow_12" sourceRef="backorder_reservation_expiry_success_rest_1" targetRef="backorder_reservation_expiry_complete"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="backorder_reservation_expiry_flow_13" sourceRef="backorder_reservation_expiry_expiry" targetRef="backorder_reservation_expiry_exception_1"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="backorder_reservation_expiry_flow_14" sourceRef="backorder_reservation_expiry_exception_1" targetRef="backorder_reservation_expiry_exception_2"></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="backorder_reservation_expiry_flow_15" sourceRef="backorder_reservation_expiry_exception_2" targetRef="backorder_reservation_expiry_alternate"></bpmn:sequenceFlow>
</bpmn:process>
<bpmn:collaboration id="backorder_reservation_expiry_collaboration"><bpmn:participant id="backorder_reservation_expiry_party" name="Customer"/><bpmn:participant id="backorder_reservation_expiry_pool" name="Backorder reservation with customer response or expiry" processRef="backorder_reservation_expiry_process"/><bpmn:messageFlow id="backorder_reservation_expiry_request" sourceRef="backorder_reservation_expiry_party" targetRef="backorder_reservation_expiry_start"/><bpmn:messageFlow id="backorder_reservation_expiry_response" sourceRef="backorder_reservation_expiry_party" targetRef="backorder_reservation_expiry_reply"/></bpmn:collaboration>
<bpmndi:BPMNDiagram id="backorder_reservation_expiry_diagram"><bpmndi:BPMNPlane id="backorder_reservation_expiry_plane" bpmnElement="backorder_reservation_expiry_collaboration">
<bpmndi:BPMNShape id="backorder_reservation_expiry_party_di" bpmnElement="backorder_reservation_expiry_party" isHorizontal="true"><dc:Bounds x="20" y="20" width="2210" height="70"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_pool_di" bpmnElement="backorder_reservation_expiry_pool" isHorizontal="true"><dc:Bounds x="20" y="180" width="2210" height="780"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_lane_0_di" bpmnElement="backorder_reservation_expiry_lane_0" isHorizontal="true"><dc:Bounds x="50" y="180" width="2180" height="260"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_lane_1_di" bpmnElement="backorder_reservation_expiry_lane_1" isHorizontal="true"><dc:Bounds x="50" y="440" width="2180" height="260"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_lane_2_di" bpmnElement="backorder_reservation_expiry_lane_2" isHorizontal="true"><dc:Bounds x="50" y="700" width="2180" height="260"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_start_di" bpmnElement="backorder_reservation_expiry_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="backorder_reservation_expiry_intake_1_di" bpmnElement="backorder_reservation_expiry_intake_1"><dc:Bounds x="325" y="272" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_intake_2_di" bpmnElement="backorder_reservation_expiry_intake_2"><dc:Bounds x="535" y="272" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_race_di" bpmnElement="backorder_reservation_expiry_race"><dc:Bounds x="786" y="286" width="48" height="48"/><bpmndi:BPMNLabel><dc:Bounds x="738" y="236" width="144" height="40"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_reply_di" bpmnElement="backorder_reservation_expiry_reply"><dc:Bounds x="1002" y="292" width="36" height="36"/><bpmndi:BPMNLabel><dc:Bounds x="948" y="335" width="144" height="40"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_expiry_di" bpmnElement="backorder_reservation_expiry_expiry"><dc:Bounds x="1002" y="812" width="36" height="36"/><bpmndi:BPMNLabel><dc:Bounds x="948" y="855" width="144" height="40"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_checks_1_di" bpmnElement="backorder_reservation_expiry_checks_1"><dc:Bounds x="1165" y="272" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_decision_di" bpmnElement="backorder_reservation_expiry_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="backorder_reservation_expiry_success_1_di" bpmnElement="backorder_reservation_expiry_success_1"><dc:Bounds x="1585" y="272" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_decline_di" bpmnElement="backorder_reservation_expiry_decline"><dc:Bounds x="1585" y="532" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_declined_di" bpmnElement="backorder_reservation_expiry_declined"><dc:Bounds x="1842" y="552" width="36" height="36"/><bpmndi:BPMNLabel><dc:Bounds x="1788" y="595" width="144" height="40"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_success_rest_1_di" bpmnElement="backorder_reservation_expiry_success_rest_1"><dc:Bounds x="1795" y="272" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_complete_di" bpmnElement="backorder_reservation_expiry_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="backorder_reservation_expiry_exception_1_di" bpmnElement="backorder_reservation_expiry_exception_1"><dc:Bounds x="1165" y="792" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_exception_2_di" bpmnElement="backorder_reservation_expiry_exception_2"><dc:Bounds x="1375" y="792" width="130" height="76"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backorder_reservation_expiry_alternate_di" bpmnElement="backorder_reservation_expiry_alternate"><dc:Bounds x="1632" y="812" width="36" height="36"/><bpmndi:BPMNLabel><dc:Bounds x="1578" y="855" width="144" height="40"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="backorder_reservation_expiry_flow_1_di" bpmnElement="backorder_reservation_expiry_flow_1"><di:waypoint x="198" y="310"/><di:waypoint x="325" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backorder_reservation_expiry_flow_2_di" bpmnElement="backorder_reservation_expiry_flow_2"><di:waypoint x="455" y="310"/><di:waypoint x="535" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backorder_reservation_expiry_flow_3_di" bpmnElement="backorder_reservation_expiry_flow_3"><di:waypoint x="665" y="310"/><di:waypoint x="786" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backorder_reservation_expiry_flow_4_di" bpmnElement="backorder_reservation_expiry_flow_4"><di:waypoint x="834" y="310"/><di:waypoint x="1002" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backorder_reservation_expiry_flow_5_di" bpmnElement="backorder_reservation_expiry_flow_5"><di:waypoint x="834" y="310"/><di:waypoint x="918" y="310"/><di:waypoint x="918" y="830"/><di:waypoint x="1002" y="830"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backorder_reservation_expiry_flow_6_di" bpmnElement="backorder_reservation_expiry_flow_6"><di:waypoint x="1038" y="310"/><di:waypoint x="1165" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backorder_reservation_expiry_flow_7_di" bpmnElement="backorder_reservation_expiry_flow_7"><di:waypoint x="1295" y="310"/><di:waypoint x="1416" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backorder_reservation_expiry_flow_8_di" bpmnElement="backorder_reservation_expiry_flow_8"><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="backorder_reservation_expiry_flow_9_di" bpmnElement="backorder_reservation_expiry_flow_9"><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="backorder_reservation_expiry_flow_10_di" bpmnElement="backorder_reservation_expiry_flow_10"><di:waypoint x="1715" y="570"/><di:waypoint x="1842" y="570"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backorder_reservation_expiry_flow_11_di" bpmnElement="backorder_reservation_expiry_flow_11"><di:waypoint x="1715" y="310"/><di:waypoint x="1795" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backorder_reservation_expiry_flow_12_di" bpmnElement="backorder_reservation_expiry_flow_12"><di:waypoint x="1925" y="310"/><di:waypoint x="2052" y="310"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backorder_reservation_expiry_flow_13_di" bpmnElement="backorder_reservation_expiry_flow_13"><di:waypoint x="1038" y="830"/><di:waypoint x="1165" y="830"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backorder_reservation_expiry_flow_14_di" bpmnElement="backorder_reservation_expiry_flow_14"><di:waypoint x="1295" y="830"/><di:waypoint x="1375" y="830"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backorder_reservation_expiry_flow_15_di" bpmnElement="backorder_reservation_expiry_flow_15"><di:waypoint x="1505" y="830"/><di:waypoint x="1632" y="830"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backorder_reservation_expiry_request_di" bpmnElement="backorder_reservation_expiry_request"><di:waypoint x="180" y="90"/><di:waypoint x="180" y="292"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backorder_reservation_expiry_response_di" bpmnElement="backorder_reservation_expiry_response"><di:waypoint x="1020" y="90"/><di:waypoint x="1020" y="292"/></bpmndi:BPMNEdge>
</bpmndi:BPMNPlane></bpmndi:BPMNDiagram>
</bpmn:definitions>