dodil/erp-method
modules/product/signoff/product/history/product_product.v1.bpmn
<?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" xmlns:dodil="https://git.dodil.io/dodil/erp-platform/bpmn/1" id="Definitions_product_v1" name="Products & price lists processes" targetNamespace="https://git.dodil.io/dodil/erp-platform/processes" exporter="erp-platform erp-compose bpmn" exporterVersion="1">
<bpmn:collaboration id="Collaboration_product_v1">
<bpmn:documentation>Products & price lists: one pool per entity lifecycle, generated from module.yaml.</bpmn:documentation>
<bpmn:participant id="Participant_product_product" name="Product" processRef="Process_product_product_v1" />
</bpmn:collaboration>
<bpmn:process id="Process_product_product_v1" name="Product" isExecutable="false">
<bpmn:documentation>Lifecycle of the product, generated from module.yaml by erp-compose bpmn; change the workflow there, not this file. States: draft, active, archived. Note: a product is never deleted once a document names it</bpmn:documentation>
<bpmn:laneSet id="LaneSet_product">
<bpmn:lane id="Lane_product_catalogue_manager" name="Whoever keeps the product list (operations, the owner)">
<bpmn:flowNodeRef>Start_product</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_add_product</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_complete_product</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_activate_product</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_rename_product</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_archive_product</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_reactivate_product</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_product_archived__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>End_product_archived</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_product_system" name="The system">
<bpmn:flowNodeRef>Task_ai_check_duplicate</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_ai_suggest_details</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_ai_check_duplicate__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_ai_check_duplicate__if_end</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_ai_suggest_details__if</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_ai_suggest_details__if_end</bpmn:flowNodeRef>
</bpmn:lane>
</bpmn:laneSet>
<bpmn:startEvent id="Start_product" name="Product needed">
<bpmn:outgoing>Flow_Start_product__Task_add_product</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:userTask id="Task_add_product" name="Add the product" dodil:step="add_product">
<bpmn:documentation>By: Whoever keeps the product list (operations, the owner). From none to draft. When: the code is not in use. Effect: the code is fixed from now on.</bpmn:documentation>
<bpmn:incoming>Flow_Start_product__Task_add_product</bpmn:incoming>
<bpmn:outgoing>Flow_Task_add_product__Gateway_ai_check_duplicate__if</bpmn:outgoing>
</bpmn:userTask>
<bpmn:serviceTask id="Task_ai_check_duplicate" name="AI checks for a likely duplicate (suggest)" dodil:step="ai_check_duplicate" implementation="##unspecified">
<bpmn:documentation>By: The system. From draft to draft. When: the duplicate check is on. Effect: a likely duplicate is shown; nothing is merged.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_ai_check_duplicate__if__Task_ai_check_duplicate</bpmn:incoming>
<bpmn:outgoing>Flow_Task_ai_check_duplicate__Gateway_ai_check_duplicate__if_end</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Task_ai_suggest_details" name="AI suggests category, unit and tax category (suggest)" dodil:step="ai_suggest_details" implementation="##unspecified">
<bpmn:documentation>By: The system. From draft to draft. When: the field is empty and the step is on. Effect: a suggestion the catalogue manager accepts or changes.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_ai_suggest_details__if__Task_ai_suggest_details</bpmn:incoming>
<bpmn:outgoing>Flow_Task_ai_suggest_details__Gateway_ai_suggest_details__if_end</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:userTask id="Task_complete_product" name="Complete unit" dodil:step="complete_product">
<bpmn:documentation>By: Whoever keeps the product list (operations, the owner). From draft to draft.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_ai_suggest_details__if_end__Task_complete_product</bpmn:incoming>
<bpmn:outgoing>Flow_Task_complete_product__Task_activate_product</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_activate_product" name="Activate the product" dodil:step="activate_product">
<bpmn:documentation>By: Whoever keeps the product list (operations, the owner). From draft to active. When: unit, tax category, billing type and invoicing policy set. Effect: offered to sales.</bpmn:documentation>
<bpmn:incoming>Flow_Task_complete_product__Task_activate_product</bpmn:incoming>
<bpmn:outgoing>Flow_Task_activate_product__Task_rename_product</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_rename_product" name="Change name or description" dodil:step="rename_product">
<bpmn:documentation>By: Whoever keeps the product list (operations, the owner). From active to active. Effect: documents already raised keep their copy.</bpmn:documentation>
<bpmn:incoming>Flow_Task_activate_product__Task_rename_product</bpmn:incoming>
<bpmn:incoming>Flow_Task_reactivate_product__Task_rename_product</bpmn:incoming>
<bpmn:outgoing>Flow_Task_rename_product__Task_archive_product</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_archive_product" name="Archive the product" dodil:step="archive_product">
<bpmn:documentation>By: Whoever keeps the product list (operations, the owner). From active to archived. Effect: no new lines; existing documents unchanged.</bpmn:documentation>
<bpmn:incoming>Flow_Task_rename_product__Task_archive_product</bpmn:incoming>
<bpmn:outgoing>Flow_Task_archive_product__Gateway_product_archived__if</bpmn:outgoing>
</bpmn:userTask>
<bpmn:userTask id="Task_reactivate_product" name="Reactivate the product" dodil:step="reactivate_product">
<bpmn:documentation>By: Whoever keeps the product list (operations, the owner). From archived to active. Requires: reason.</bpmn:documentation>
<bpmn:incoming>Flow_Gateway_product_archived__if__Task_reactivate_product</bpmn:incoming>
<bpmn:outgoing>Flow_Task_reactivate_product__Task_rename_product</bpmn:outgoing>
</bpmn:userTask>
<bpmn:exclusiveGateway id="Gateway_ai_check_duplicate__if" name="the duplicate check is on?">
<bpmn:incoming>Flow_Task_add_product__Gateway_ai_check_duplicate__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_ai_check_duplicate__if__Task_ai_check_duplicate</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_ai_check_duplicate__if__Gateway_ai_check_duplicate__if_end</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_ai_check_duplicate__if_end">
<bpmn:incoming>Flow_Gateway_ai_check_duplicate__if__Gateway_ai_check_duplicate__if_end</bpmn:incoming>
<bpmn:incoming>Flow_Task_ai_check_duplicate__Gateway_ai_check_duplicate__if_end</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_ai_check_duplicate__if_end__Gateway_ai_suggest_details__if</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_ai_suggest_details__if" name="the field is empty and the step is on?">
<bpmn:incoming>Flow_Gateway_ai_check_duplicate__if_end__Gateway_ai_suggest_details__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_ai_suggest_details__if__Task_ai_suggest_details</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_ai_suggest_details__if__Gateway_ai_suggest_details__if_end</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_ai_suggest_details__if_end">
<bpmn:incoming>Flow_Gateway_ai_suggest_details__if__Gateway_ai_suggest_details__if_end</bpmn:incoming>
<bpmn:incoming>Flow_Task_ai_suggest_details__Gateway_ai_suggest_details__if_end</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_ai_suggest_details__if_end__Task_complete_product</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:exclusiveGateway id="Gateway_product_archived__if" name="Product archived: done, or go on?">
<bpmn:incoming>Flow_Task_archive_product__Gateway_product_archived__if</bpmn:incoming>
<bpmn:outgoing>Flow_Gateway_product_archived__if__Task_reactivate_product</bpmn:outgoing>
<bpmn:outgoing>Flow_Gateway_product_archived__if__End_product_archived</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:endEvent id="End_product_archived" name="Product archived">
<bpmn:incoming>Flow_Gateway_product_archived__if__End_product_archived</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_Start_product__Task_add_product" sourceRef="Start_product" targetRef="Task_add_product" />
<bpmn:sequenceFlow id="Flow_Gateway_ai_check_duplicate__if__Task_ai_check_duplicate" name="the duplicate check is on" sourceRef="Gateway_ai_check_duplicate__if" targetRef="Task_ai_check_duplicate" />
<bpmn:sequenceFlow id="Flow_Gateway_ai_check_duplicate__if__Gateway_ai_check_duplicate__if_end" name="otherwise" sourceRef="Gateway_ai_check_duplicate__if" targetRef="Gateway_ai_check_duplicate__if_end" />
<bpmn:sequenceFlow id="Flow_Task_ai_check_duplicate__Gateway_ai_check_duplicate__if_end" sourceRef="Task_ai_check_duplicate" targetRef="Gateway_ai_check_duplicate__if_end" />
<bpmn:sequenceFlow id="Flow_Gateway_ai_suggest_details__if__Task_ai_suggest_details" name="the field is empty and the step is on" sourceRef="Gateway_ai_suggest_details__if" targetRef="Task_ai_suggest_details" />
<bpmn:sequenceFlow id="Flow_Gateway_ai_suggest_details__if__Gateway_ai_suggest_details__if_end" name="otherwise" sourceRef="Gateway_ai_suggest_details__if" targetRef="Gateway_ai_suggest_details__if_end" />
<bpmn:sequenceFlow id="Flow_Task_ai_suggest_details__Gateway_ai_suggest_details__if_end" sourceRef="Task_ai_suggest_details" targetRef="Gateway_ai_suggest_details__if_end" />
<bpmn:sequenceFlow id="Flow_Gateway_ai_check_duplicate__if_end__Gateway_ai_suggest_details__if" sourceRef="Gateway_ai_check_duplicate__if_end" targetRef="Gateway_ai_suggest_details__if" />
<bpmn:sequenceFlow id="Flow_Gateway_ai_suggest_details__if_end__Task_complete_product" sourceRef="Gateway_ai_suggest_details__if_end" targetRef="Task_complete_product" />
<bpmn:sequenceFlow id="Flow_Task_complete_product__Task_activate_product" sourceRef="Task_complete_product" targetRef="Task_activate_product" />
<bpmn:sequenceFlow id="Flow_Task_add_product__Gateway_ai_check_duplicate__if" sourceRef="Task_add_product" targetRef="Gateway_ai_check_duplicate__if" />
<bpmn:sequenceFlow id="Flow_Task_rename_product__Task_archive_product" sourceRef="Task_rename_product" targetRef="Task_archive_product" />
<bpmn:sequenceFlow id="Flow_Task_activate_product__Task_rename_product" sourceRef="Task_activate_product" targetRef="Task_rename_product" />
<bpmn:sequenceFlow id="Flow_Gateway_product_archived__if__Task_reactivate_product" sourceRef="Gateway_product_archived__if" targetRef="Task_reactivate_product" />
<bpmn:sequenceFlow id="Flow_Gateway_product_archived__if__End_product_archived" name="done" sourceRef="Gateway_product_archived__if" targetRef="End_product_archived" />
<bpmn:sequenceFlow id="Flow_Task_archive_product__Gateway_product_archived__if" sourceRef="Task_archive_product" targetRef="Gateway_product_archived__if" />
<bpmn:sequenceFlow id="Flow_Task_reactivate_product__Task_rename_product" sourceRef="Task_reactivate_product" targetRef="Task_rename_product" />
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_product_v1">
<bpmndi:BPMNPlane id="BPMNPlane_product_v1" bpmnElement="Collaboration_product_v1">
<bpmndi:BPMNShape id="Participant_product_product_di" bpmnElement="Participant_product_product" isHorizontal="true">
<dc:Bounds x="0" y="0" width="2150" height="520" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_product_catalogue_manager_di" bpmnElement="Lane_product_catalogue_manager" isHorizontal="true">
<dc:Bounds x="30" y="0" width="2120" height="260" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_product_system_di" bpmnElement="Lane_product_system" isHorizontal="true">
<dc:Bounds x="30" y="260" width="2120" height="260" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Start_product_di" bpmnElement="Start_product">
<dc:Bounds x="157" y="42" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_add_product_di" bpmnElement="Task_add_product">
<dc:Bounds x="295" y="20" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_ai_check_duplicate_di" bpmnElement="Task_ai_check_duplicate">
<dc:Bounds x="635" y="280" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_ai_suggest_details_di" bpmnElement="Task_ai_suggest_details">
<dc:Bounds x="975" y="280" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_complete_product_di" bpmnElement="Task_complete_product">
<dc:Bounds x="1145" y="20" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_activate_product_di" bpmnElement="Task_activate_product">
<dc:Bounds x="1315" y="20" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_rename_product_di" bpmnElement="Task_rename_product">
<dc:Bounds x="1485" y="20" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_archive_product_di" bpmnElement="Task_archive_product">
<dc:Bounds x="1655" y="20" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_reactivate_product_di" bpmnElement="Task_reactivate_product">
<dc:Bounds x="1995" y="20" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_ai_check_duplicate__if_di" bpmnElement="Gateway_ai_check_duplicate__if">
<dc:Bounds x="490" y="295" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_ai_check_duplicate__if_end_di" bpmnElement="Gateway_ai_check_duplicate__if_end">
<dc:Bounds x="660" y="415" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_ai_suggest_details__if_di" bpmnElement="Gateway_ai_suggest_details__if">
<dc:Bounds x="830" y="295" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_ai_suggest_details__if_end_di" bpmnElement="Gateway_ai_suggest_details__if_end">
<dc:Bounds x="1000" y="415" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_product_archived__if_di" bpmnElement="Gateway_product_archived__if">
<dc:Bounds x="1850" y="35" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="End_product_archived_di" bpmnElement="End_product_archived">
<dc:Bounds x="2027" y="162" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_Start_product__Task_add_product_di" bpmnElement="Flow_Start_product__Task_add_product">
<di:waypoint x="193" y="60" />
<di:waypoint x="295" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_ai_check_duplicate__if__Task_ai_check_duplicate_di" bpmnElement="Flow_Gateway_ai_check_duplicate__if__Task_ai_check_duplicate">
<di:waypoint x="540" y="320" />
<di:waypoint x="635" y="320" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_ai_check_duplicate__if__Gateway_ai_check_duplicate__if_end_di" bpmnElement="Flow_Gateway_ai_check_duplicate__if__Gateway_ai_check_duplicate__if_end">
<di:waypoint x="540" y="320" />
<di:waypoint x="635" y="320" />
<di:waypoint x="635" y="440" />
<di:waypoint x="660" y="440" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_ai_check_duplicate__Gateway_ai_check_duplicate__if_end_di" bpmnElement="Flow_Task_ai_check_duplicate__Gateway_ai_check_duplicate__if_end">
<di:waypoint x="685" y="360" />
<di:waypoint x="685" y="480" />
<di:waypoint x="685" y="480" />
<di:waypoint x="685" y="465" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_ai_suggest_details__if__Task_ai_suggest_details_di" bpmnElement="Flow_Gateway_ai_suggest_details__if__Task_ai_suggest_details">
<di:waypoint x="880" y="320" />
<di:waypoint x="975" y="320" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_ai_suggest_details__if__Gateway_ai_suggest_details__if_end_di" bpmnElement="Flow_Gateway_ai_suggest_details__if__Gateway_ai_suggest_details__if_end">
<di:waypoint x="880" y="320" />
<di:waypoint x="975" y="320" />
<di:waypoint x="975" y="440" />
<di:waypoint x="1000" y="440" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_ai_suggest_details__Gateway_ai_suggest_details__if_end_di" bpmnElement="Flow_Task_ai_suggest_details__Gateway_ai_suggest_details__if_end">
<di:waypoint x="1025" y="360" />
<di:waypoint x="1025" y="486" />
<di:waypoint x="1025" y="486" />
<di:waypoint x="1025" y="465" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_ai_check_duplicate__if_end__Gateway_ai_suggest_details__if_di" bpmnElement="Flow_Gateway_ai_check_duplicate__if_end__Gateway_ai_suggest_details__if">
<di:waypoint x="710" y="440" />
<di:waypoint x="805" y="440" />
<di:waypoint x="805" y="320" />
<di:waypoint x="830" y="320" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_ai_suggest_details__if_end__Task_complete_product_di" bpmnElement="Flow_Gateway_ai_suggest_details__if_end__Task_complete_product">
<di:waypoint x="1050" y="440" />
<di:waypoint x="1120" y="440" />
<di:waypoint x="1120" y="60" />
<di:waypoint x="1145" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_complete_product__Task_activate_product_di" bpmnElement="Flow_Task_complete_product__Task_activate_product">
<di:waypoint x="1245" y="60" />
<di:waypoint x="1315" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_add_product__Gateway_ai_check_duplicate__if_di" bpmnElement="Flow_Task_add_product__Gateway_ai_check_duplicate__if">
<di:waypoint x="395" y="60" />
<di:waypoint x="465" y="60" />
<di:waypoint x="465" y="320" />
<di:waypoint x="490" y="320" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_rename_product__Task_archive_product_di" bpmnElement="Flow_Task_rename_product__Task_archive_product">
<di:waypoint x="1585" y="60" />
<di:waypoint x="1655" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_activate_product__Task_rename_product_di" bpmnElement="Flow_Task_activate_product__Task_rename_product">
<di:waypoint x="1415" y="60" />
<di:waypoint x="1485" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_product_archived__if__Task_reactivate_product_di" bpmnElement="Flow_Gateway_product_archived__if__Task_reactivate_product">
<di:waypoint x="1900" y="60" />
<di:waypoint x="1995" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Gateway_product_archived__if__End_product_archived_di" bpmnElement="Flow_Gateway_product_archived__if__End_product_archived">
<di:waypoint x="1900" y="60" />
<di:waypoint x="2002" y="60" />
<di:waypoint x="2002" y="180" />
<di:waypoint x="2027" y="180" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_archive_product__Gateway_product_archived__if_di" bpmnElement="Flow_Task_archive_product__Gateway_product_archived__if">
<di:waypoint x="1755" y="60" />
<di:waypoint x="1850" y="60" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_Task_reactivate_product__Task_rename_product_di" bpmnElement="Flow_Task_reactivate_product__Task_rename_product">
<di:waypoint x="2045" y="100" />
<di:waypoint x="2045" y="127" />
<di:waypoint x="1535" y="127" />
<di:waypoint x="1535" y="100" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>