feat: extract headless workflow engine

This commit is contained in:
2026-07-31 16:58:51 +02:00
commit 9bccbd68da
54 changed files with 16275 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions
xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
id="Definitions_Choreography"
targetNamespace="urn:govoplan:workflow:fixtures">
<bpmn:message id="Message_Approval" name="Approval" />
<bpmn:collaboration id="Collaboration_Choreography">
<bpmn:participant id="Participant_Applicant" name="Applicant" />
<bpmn:participant id="Participant_Authority" name="Authority" />
</bpmn:collaboration>
<bpmn:choreography id="Choreography_1" name="Permit decision">
<bpmn:startEvent id="Choreography_Start" />
<bpmn:choreographyTask
id="Choreography_Task"
initiatingParticipantRef="Participant_Authority">
<bpmn:participantRef>Participant_Authority</bpmn:participantRef>
<bpmn:participantRef>Participant_Applicant</bpmn:participantRef>
<bpmn:messageFlowRef>MessageFlow_Approval</bpmn:messageFlowRef>
</bpmn:choreographyTask>
<bpmn:endEvent id="Choreography_End" />
<bpmn:sequenceFlow
id="Choreography_Flow_1"
sourceRef="Choreography_Start"
targetRef="Choreography_Task" />
<bpmn:sequenceFlow
id="Choreography_Flow_2"
sourceRef="Choreography_Task"
targetRef="Choreography_End" />
</bpmn:choreography>
<bpmn:messageFlow
id="MessageFlow_Approval"
sourceRef="Participant_Authority"
targetRef="Participant_Applicant"
messageRef="Message_Approval" />
</bpmn:definitions>
+24
View File
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions
xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
id="Definitions_Collaboration"
targetNamespace="urn:govoplan:workflow:fixtures">
<bpmn:message id="Message_Request" name="Request" />
<bpmn:process id="Process_Requester">
<bpmn:startEvent id="Requester_Start" />
<bpmn:sendTask id="Send_Request" messageRef="Message_Request" />
</bpmn:process>
<bpmn:process id="Process_Reviewer">
<bpmn:receiveTask id="Receive_Request" messageRef="Message_Request" />
<bpmn:endEvent id="Reviewer_End" />
</bpmn:process>
<bpmn:collaboration id="Collaboration_1">
<bpmn:participant id="Participant_Requester" processRef="Process_Requester" />
<bpmn:participant id="Participant_Reviewer" processRef="Process_Reviewer" />
<bpmn:messageFlow
id="MessageFlow_1"
sourceRef="Send_Request"
targetRef="Receive_Request"
messageRef="Message_Request" />
</bpmn:collaboration>
</bpmn:definitions>
+91
View File
@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions
xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
id="Definitions_Control_Flow"
targetNamespace="urn:govoplan:workflow:fixtures">
<bpmn:signal id="Signal_Escalation" name="Escalation" />
<bpmn:process id="Called_Process" isExecutable="true">
<bpmn:startEvent id="Called_Start" />
<bpmn:userTask id="Called_Human_Task" name="Confirm result" />
<bpmn:endEvent id="Called_End" />
<bpmn:sequenceFlow
id="Called_Flow_1"
sourceRef="Called_Start"
targetRef="Called_Human_Task" />
<bpmn:sequenceFlow
id="Called_Flow_2"
sourceRef="Called_Human_Task"
targetRef="Called_End" />
</bpmn:process>
<bpmn:process id="Control_Process" isExecutable="true">
<bpmn:startEvent id="Control_Start" />
<bpmn:exclusiveGateway id="Control_Decision" />
<bpmn:subProcess id="Review_Subprocess" name="Review">
<bpmn:startEvent id="Subprocess_Start" />
<bpmn:userTask id="Subprocess_Review" name="Review request" />
<bpmn:endEvent id="Subprocess_End" />
<bpmn:sequenceFlow
id="Subprocess_Flow_1"
sourceRef="Subprocess_Start"
targetRef="Subprocess_Review" />
<bpmn:sequenceFlow
id="Subprocess_Flow_2"
sourceRef="Subprocess_Review"
targetRef="Subprocess_End" />
</bpmn:subProcess>
<bpmn:boundaryEvent
id="Review_Escalation"
attachedToRef="Review_Subprocess"
cancelActivity="false">
<bpmn:signalEventDefinition
id="Review_Escalation_Definition"
signalRef="Signal_Escalation" />
</bpmn:boundaryEvent>
<bpmn:parallelGateway id="Control_Join" />
<bpmn:callActivity
id="Call_Confirmation"
name="Confirm"
calledElement="Called_Process" />
<bpmn:intermediateThrowEvent id="Escalation_Thrown">
<bpmn:signalEventDefinition
id="Escalation_Thrown_Definition"
signalRef="Signal_Escalation" />
</bpmn:intermediateThrowEvent>
<bpmn:task
id="Compensation_Handler"
name="Undo review"
isForCompensation="true" />
<bpmn:boundaryEvent
id="Review_Compensation"
attachedToRef="Review_Subprocess">
<bpmn:compensateEventDefinition
id="Review_Compensation_Definition"
activityRef="Compensation_Handler" />
</bpmn:boundaryEvent>
<bpmn:endEvent id="Control_End" />
<bpmn:sequenceFlow
id="Control_Flow_1"
sourceRef="Control_Start"
targetRef="Control_Decision" />
<bpmn:sequenceFlow
id="Control_Flow_2"
sourceRef="Control_Decision"
targetRef="Review_Subprocess" />
<bpmn:sequenceFlow
id="Control_Flow_3"
sourceRef="Review_Subprocess"
targetRef="Control_Join" />
<bpmn:sequenceFlow
id="Control_Flow_4"
sourceRef="Control_Join"
targetRef="Call_Confirmation" />
<bpmn:sequenceFlow
id="Control_Flow_5"
sourceRef="Call_Confirmation"
targetRef="Escalation_Thrown" />
<bpmn:sequenceFlow
id="Control_Flow_6"
sourceRef="Escalation_Thrown"
targetRef="Control_End" />
</bpmn:process>
</bpmn:definitions>
+27
View File
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions
xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
id="Definitions_Data"
targetNamespace="urn:govoplan:workflow:fixtures">
<bpmn:dataStore id="DataStore_Archive" name="Archive" />
<bpmn:process id="Process_Data">
<bpmn:dataObject id="DataObject_Request" name="Request" />
<bpmn:dataObjectReference
id="DataObjectReference_Request"
dataObjectRef="DataObject_Request" />
<bpmn:dataStoreReference
id="DataStoreReference_Archive"
dataStoreRef="DataStore_Archive" />
<bpmn:scriptTask id="Transform_Data" name="Transform data">
<bpmn:script>result = input</bpmn:script>
<bpmn:dataInputAssociation id="InputAssociation_1">
<bpmn:sourceRef>DataObjectReference_Request</bpmn:sourceRef>
<bpmn:targetRef>Transform_Data</bpmn:targetRef>
</bpmn:dataInputAssociation>
<bpmn:dataOutputAssociation id="OutputAssociation_1">
<bpmn:sourceRef>Transform_Data</bpmn:sourceRef>
<bpmn:targetRef>DataStoreReference_Archive</bpmn:targetRef>
</bpmn:dataOutputAssociation>
</bpmn:scriptTask>
</bpmn:process>
</bpmn:definitions>
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions
xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
id="Definitions_Events"
targetNamespace="urn:govoplan:workflow:fixtures">
<bpmn:message id="Message_Continue" name="Continue" />
<bpmn:error id="Error_Processing" name="Processing failed" errorCode="PROCESSING" />
<bpmn:process id="Process_Transaction" isExecutable="true">
<bpmn:startEvent id="Start_Timer">
<bpmn:timerEventDefinition id="Timer_Start_Definition">
<bpmn:timeCycle>R3/PT1H</bpmn:timeCycle>
</bpmn:timerEventDefinition>
</bpmn:startEvent>
<bpmn:transaction id="Transaction_1">
<bpmn:serviceTask id="Charge_Account" name="Charge account" />
<bpmn:boundaryEvent
id="Charge_Error"
attachedToRef="Charge_Account">
<bpmn:errorEventDefinition
id="Charge_Error_Definition"
errorRef="Error_Processing" />
</bpmn:boundaryEvent>
<bpmn:task
id="Undo_Charge"
name="Undo charge"
isForCompensation="true" />
<bpmn:association
id="Compensation_Association"
sourceRef="Charge_Error"
targetRef="Undo_Charge"
associationDirection="One" />
</bpmn:transaction>
<bpmn:intermediateCatchEvent id="Wait_For_Continue">
<bpmn:messageEventDefinition
id="Wait_Message_Definition"
messageRef="Message_Continue" />
</bpmn:intermediateCatchEvent>
<bpmn:endEvent id="End_Transaction">
<bpmn:terminateEventDefinition id="Terminate_Definition" />
</bpmn:endEvent>
</bpmn:process>
</bpmn:definitions>
+50
View File
@@ -0,0 +1,50 @@
<?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:govoplan="urn:govoplan:workflow:fixture-extension"
id="Definitions_Process"
targetNamespace="urn:govoplan:workflow:fixtures">
<bpmn:process id="Process_Linear" isExecutable="true">
<bpmn:extensionElements>
<govoplan:fixture revision="1">
<govoplan:note>Preserve this extension exactly.</govoplan:note>
</govoplan:fixture>
</bpmn:extensionElements>
<bpmn:startEvent id="Start_1">
<bpmn:outgoing>Flow_1</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:userTask id="Task_1" name="Review">
<bpmn:incoming>Flow_1</bpmn:incoming>
<bpmn:outgoing>Flow_2</bpmn:outgoing>
</bpmn:userTask>
<bpmn:endEvent id="End_1">
<bpmn:incoming>Flow_2</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_1" sourceRef="Start_1" targetRef="Task_1" />
<bpmn:sequenceFlow id="Flow_2" sourceRef="Task_1" targetRef="End_1" />
</bpmn:process>
<bpmndi:BPMNDiagram id="Diagram_1">
<bpmndi:BPMNPlane id="Plane_1" bpmnElement="Process_Linear">
<bpmndi:BPMNShape id="Shape_Start_1" bpmnElement="Start_1">
<dc:Bounds x="80" y="112" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Shape_Task_1" bpmnElement="Task_1">
<dc:Bounds x="220" y="90" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Shape_End_1" bpmnElement="End_1">
<dc:Bounds x="430" y="112" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Edge_Flow_1" bpmnElement="Flow_1">
<di:waypoint x="116" y="130" />
<di:waypoint x="220" y="130" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Edge_Flow_2" bpmnElement="Flow_2">
<di:waypoint x="320" y="130" />
<di:waypoint x="430" y="130" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>