Исходник схемы
<?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" id="Definitions_st_reopened_external" targetNamespace="urn:sharix:knowledge:handlers">
<bpmn:process id="person_Process_person" name="Пользователь с доступом к Ticket и правом смены статуса" isExecutable="false">
<bpmn:documentation>{"notes": ["Опубликованная встроенная реализация; не доказательство выбранной версии на сервере.", "Процесс isExecutable=false, никакой handler при генерации не исполняется.", "deferred_until — символ локального срока, не имя параметра окружения.", "Изменение статуса и best-effort XMPP доставка — отдельные операции. При потере события есть periodic reconciliation."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_reopened.py", "repository": "sharix-open-handlers-examples", "sha256": "3a90597fd04397c49f5c801ce2a37a882bcc17269768d90e59db5121359f327d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_st_request_reopened.json", "repository": "sharix-open-handlers-examples", "sha256": "09edcb4f5451c480c96ce22822e5cd22dd158db0d7e30189dab947d7ba0df77a"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "catalog.py", "repository": "sharix-open-handlers-examples", "sha256": "e3dcb72b7e620e2837adacd7af053f35b04cdff475789496d9c114e17d57dfde"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/blockly_runtime.py", "repository": "sharix-open-handlers-backend", "sha256": "3e222150cbff315077c6c9b160d46e59856cedf6d6591d213e958c63cb2f2428"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/requesters.py", "repository": "sharix-open-handlers-backend", "sha256": "965a348cea477722bbaf4c8c6b06023eb238b71664a332f7ea8c90bfe72ea808"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_blockly_codegen.py", "repository": "sharix-open-handlers-backend", "sha256": "bce71eab622922f8dd0954222842349799b60e18a0ab6310cc3e5f305603661e"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_codegen_contract.json", "repository": "sharix-open-handlers-backend", "sha256": "0bfd2b0ebb07bd380ed3c867386536ab88ef7dfa6e13f1cd8c91d32bb02c1ae9"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "lib/tickets.py", "repository": "sharix-open-tickets", "sha256": "0d260c17947f9a186d07af2749159780e3c7354a95b4bafe9d67493663c96883"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "signals.py", "repository": "sharix-open-tickets", "sha256": "39aad8690a2e7d35cebfb052127a8130a951cbb4eea316c4f767a0a59fc5fa7e"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/handler_wakeup.py", "repository": "sharix-open-tickets", "sha256": "c9fdc62a18301fd7c075395c697d5b1c738c77713aa71fcbb5ab097e173d98de"}]}</bpmn:documentation>
<bpmn:laneSet id="person_Lanes_person">
<bpmn:lane id="person_Lane_worker" name="Осмысленное решение по карточке">
<bpmn:flowNodeRef>person_start</bpmn:flowNodeRef>
<bpmn:flowNodeRef>person_choose</bpmn:flowNodeRef>
<bpmn:flowNodeRef>person_send</bpmn:flowNodeRef>
<bpmn:flowNodeRef>person_end</bpmn:flowNodeRef>
</bpmn:lane>
</bpmn:laneSet>
<bpmn:startEvent id="person_start" name="Решение по обращению">
<bpmn:outgoing>person_Flow_0</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:userTask id="person_choose" name="Выбрать ASSIGNED / WONTFIX / DUPLICATE">
<bpmn:incoming>person_Flow_0</bpmn:incoming>
<bpmn:outgoing>person_Flow_1</bpmn:outgoing>
</bpmn:userTask>
<bpmn:sendTask id="person_send" name="Отправить смену статуса">
<bpmn:incoming>person_Flow_1</bpmn:incoming>
<bpmn:outgoing>person_Flow_2</bpmn:outgoing>
</bpmn:sendTask>
<bpmn:endEvent id="person_end" name="Действие отправлено">
<bpmn:incoming>person_Flow_2</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="person_Flow_0" sourceRef="person_start" targetRef="person_choose" name="" />
<bpmn:sequenceFlow id="person_Flow_1" sourceRef="person_choose" targetRef="person_send" name="" />
<bpmn:sequenceFlow id="person_Flow_2" sourceRef="person_send" targetRef="person_end" name="" />
</bpmn:process>
<bpmn:process id="backend_Process_backend" name="Tickets backend: объектный доступ, переход и commit" isExecutable="false">
<bpmn:documentation>{"notes": ["Опубликованная встроенная реализация; не доказательство выбранной версии на сервере.", "Процесс isExecutable=false, никакой handler при генерации не исполняется.", "deferred_until — символ локального срока, не имя параметра окружения.", "Изменение статуса и best-effort XMPP доставка — отдельные операции. При потере события есть periodic reconciliation."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_reopened.py", "repository": "sharix-open-handlers-examples", "sha256": "3a90597fd04397c49f5c801ce2a37a882bcc17269768d90e59db5121359f327d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_st_request_reopened.json", "repository": "sharix-open-handlers-examples", "sha256": "09edcb4f5451c480c96ce22822e5cd22dd158db0d7e30189dab947d7ba0df77a"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "catalog.py", "repository": "sharix-open-handlers-examples", "sha256": "e3dcb72b7e620e2837adacd7af053f35b04cdff475789496d9c114e17d57dfde"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/blockly_runtime.py", "repository": "sharix-open-handlers-backend", "sha256": "3e222150cbff315077c6c9b160d46e59856cedf6d6591d213e958c63cb2f2428"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/requesters.py", "repository": "sharix-open-handlers-backend", "sha256": "965a348cea477722bbaf4c8c6b06023eb238b71664a332f7ea8c90bfe72ea808"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_blockly_codegen.py", "repository": "sharix-open-handlers-backend", "sha256": "bce71eab622922f8dd0954222842349799b60e18a0ab6310cc3e5f305603661e"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_codegen_contract.json", "repository": "sharix-open-handlers-backend", "sha256": "0bfd2b0ebb07bd380ed3c867386536ab88ef7dfa6e13f1cd8c91d32bb02c1ae9"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "lib/tickets.py", "repository": "sharix-open-tickets", "sha256": "0d260c17947f9a186d07af2749159780e3c7354a95b4bafe9d67493663c96883"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "signals.py", "repository": "sharix-open-tickets", "sha256": "39aad8690a2e7d35cebfb052127a8130a951cbb4eea316c4f767a0a59fc5fa7e"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/handler_wakeup.py", "repository": "sharix-open-tickets", "sha256": "c9fdc62a18301fd7c075395c697d5b1c738c77713aa71fcbb5ab097e173d98de"}]}</bpmn:documentation>
<bpmn:laneSet id="backend_Lanes_backend">
<bpmn:lane id="backend_Lane_worker" name="Сохранение состояния">
<bpmn:flowNodeRef>backend_request</bpmn:flowNodeRef>
<bpmn:flowNodeRef>backend_acl</bpmn:flowNodeRef>
<bpmn:flowNodeRef>backend_allowed</bpmn:flowNodeRef>
<bpmn:flowNodeRef>backend_commit</bpmn:flowNodeRef>
<bpmn:flowNodeRef>backend_publish</bpmn:flowNodeRef>
<bpmn:flowNodeRef>backend_end</bpmn:flowNodeRef>
<bpmn:flowNodeRef>backend_reject</bpmn:flowNodeRef>
</bpmn:lane>
</bpmn:laneSet>
<bpmn:startEvent id="backend_request" name="Запрос из карточки/API">
<bpmn:outgoing>backend_Flow_0</bpmn:outgoing>
<bpmn:messageEventDefinition />
</bpmn:startEvent>
<bpmn:serviceTask id="backend_acl" name="Проверить права и переход lifecycle">
<bpmn:incoming>backend_Flow_0</bpmn:incoming>
<bpmn:outgoing>backend_Flow_1</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:exclusiveGateway id="backend_allowed" name="Разрешено?">
<bpmn:incoming>backend_Flow_1</bpmn:incoming>
<bpmn:outgoing>backend_Flow_2</bpmn:outgoing>
<bpmn:outgoing>backend_Flow_3</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:serviceTask id="backend_commit" name="Сохранить статус и Event">
<bpmn:incoming>backend_Flow_2</bpmn:incoming>
<bpmn:outgoing>backend_Flow_4</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:sendTask id="backend_publish" name="После commit: смена владельца">
<bpmn:incoming>backend_Flow_4</bpmn:incoming>
<bpmn:outgoing>backend_Flow_5</bpmn:outgoing>
</bpmn:sendTask>
<bpmn:endEvent id="backend_end" name="Статус сохранён">
<bpmn:incoming>backend_Flow_5</bpmn:incoming>
</bpmn:endEvent>
<bpmn:endEvent id="backend_reject" name="Отказ: переход не выполнен">
<bpmn:incoming>backend_Flow_3</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="backend_Flow_0" sourceRef="backend_request" targetRef="backend_acl" name="" />
<bpmn:sequenceFlow id="backend_Flow_1" sourceRef="backend_acl" targetRef="backend_allowed" name="" />
<bpmn:sequenceFlow id="backend_Flow_2" sourceRef="backend_allowed" targetRef="backend_commit" name="Да" />
<bpmn:sequenceFlow id="backend_Flow_3" sourceRef="backend_allowed" targetRef="backend_reject" name="Нет" />
<bpmn:sequenceFlow id="backend_Flow_4" sourceRef="backend_commit" targetRef="backend_publish" name="" />
<bpmn:sequenceFlow id="backend_Flow_5" sourceRef="backend_publish" targetRef="backend_end" name="" />
</bpmn:process>
<bpmn:collaboration id="Collaboration_st_reopened_external">
<bpmn:participant id="person_Pool_person" name="Пользователь с доступом к Ticket и правом смены статуса" processRef="person_Process_person" />
<bpmn:participant id="backend_Pool_backend" name="Tickets backend: объектный доступ, переход и commit" processRef="backend_Process_backend" />
<bpmn:participant id="old_Participant" name="open_st_request_reopened: исключить локальный снимок и комнату" />
<bpmn:participant id="next_Participant" name="Новый владелец: ASSIGNED / WONTFIX / DUPLICATE" />
<bpmn:messageFlow id="Message_st_reopened_external_0" sourceRef="person_send" targetRef="backend_request" name="Запрос перехода" />
<bpmn:messageFlow id="Message_st_reopened_external_1" sourceRef="backend_publish" targetRef="old_Participant" name="ticket.moved: прежний REOPENED" />
<bpmn:messageFlow id="Message_st_reopened_external_2" sourceRef="backend_publish" targetRef="next_Participant" name="ticket.changed: новый владелец" />
</bpmn:collaboration>
<bpmndi:BPMNDiagram id="Diagram_st_reopened_external">
<bpmndi:BPMNPlane id="Plane_st_reopened_external" bpmnElement="Collaboration_st_reopened_external">
<bpmndi:BPMNShape id="person_DI_Pool_person" bpmnElement="person_Pool_person" isHorizontal="true">
<dc:Bounds x="0.0" y="0.0" width="1100" height="200" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="person_DI_Lane_worker" bpmnElement="person_Lane_worker" isHorizontal="true">
<dc:Bounds x="30.0" y="0.0" width="1070" height="200" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="person_DI_start" bpmnElement="person_start">
<dc:Bounds x="132.0" y="82.0" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="person_DI_choose" bpmnElement="person_choose">
<dc:Bounds x="345.0" y="65.0" width="150" height="70" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="person_DI_send" bpmnElement="person_send">
<dc:Bounds x="625.0" y="65.0" width="150" height="70" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="person_DI_end" bpmnElement="person_end">
<dc:Bounds x="922.0" y="82.0" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="person_DI_Flow_0" bpmnElement="person_Flow_0">
<di:waypoint x="168.0" y="100.0" />
<di:waypoint x="345.0" y="100.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="person_DI_Flow_1" bpmnElement="person_Flow_1">
<di:waypoint x="495.0" y="100.0" />
<di:waypoint x="625.0" y="100.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="person_DI_Flow_2" bpmnElement="person_Flow_2">
<di:waypoint x="775.0" y="100.0" />
<di:waypoint x="922.0" y="100.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="backend_DI_Pool_backend" bpmnElement="backend_Pool_backend" isHorizontal="true">
<dc:Bounds x="0.0" y="270.0" width="1630" height="380" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backend_DI_Lane_worker" bpmnElement="backend_Lane_worker" isHorizontal="true">
<dc:Bounds x="30.0" y="270.0" width="1600" height="380" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backend_DI_request" bpmnElement="backend_request">
<dc:Bounds x="132.0" y="352.0" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backend_DI_acl" bpmnElement="backend_acl">
<dc:Bounds x="345.0" y="335.0" width="150" height="70" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backend_DI_allowed" bpmnElement="backend_allowed">
<dc:Bounds x="675.0" y="345.0" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backend_DI_commit" bpmnElement="backend_commit">
<dc:Bounds x="875.0" y="335.0" width="150" height="70" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backend_DI_publish" bpmnElement="backend_publish">
<dc:Bounds x="1145.0" y="335.0" width="150" height="70" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backend_DI_end" bpmnElement="backend_end">
<dc:Bounds x="1452.0" y="352.0" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="backend_DI_reject" bpmnElement="backend_reject">
<dc:Bounds x="682.0" y="532.0" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="backend_DI_Flow_0" bpmnElement="backend_Flow_0">
<di:waypoint x="168.0" y="370.0" />
<di:waypoint x="345.0" y="370.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backend_DI_Flow_1" bpmnElement="backend_Flow_1">
<di:waypoint x="495.0" y="370.0" />
<di:waypoint x="675.0" y="370.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backend_DI_Flow_2" bpmnElement="backend_Flow_2">
<di:waypoint x="725.0" y="370.0" />
<di:waypoint x="875.0" y="370.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backend_DI_Flow_3" bpmnElement="backend_Flow_3">
<di:waypoint x="700.0" y="395.0" />
<di:waypoint x="700.0" y="532.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backend_DI_Flow_4" bpmnElement="backend_Flow_4">
<di:waypoint x="1025.0" y="370.0" />
<di:waypoint x="1145.0" y="370.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="backend_DI_Flow_5" bpmnElement="backend_Flow_5">
<di:waypoint x="1295.0" y="370.0" />
<di:waypoint x="1452.0" y="370.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="DI_old_Participant" bpmnElement="old_Participant" isHorizontal="true">
<dc:Bounds x="0" y="800" width="760" height="100" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="DI_next_Participant" bpmnElement="next_Participant" isHorizontal="true">
<dc:Bounds x="850" y="800" width="850" height="100" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="DI_Message_st_reopened_external_0" bpmnElement="Message_st_reopened_external_0">
<di:waypoint x="700" y="135" />
<di:waypoint x="700" y="225" />
<di:waypoint x="150" y="225" />
<di:waypoint x="150" y="352" />
<bpmndi:BPMNLabel>
<dc:Bounds x="250" y="195" width="260" height="42" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="DI_Message_st_reopened_external_1" bpmnElement="Message_st_reopened_external_1">
<di:waypoint x="1220" y="405" />
<di:waypoint x="1220" y="630" />
<di:waypoint x="380" y="630" />
<di:waypoint x="380" y="800" />
<bpmndi:BPMNLabel>
<dc:Bounds x="230" y="680" width="260" height="42" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="DI_Message_st_reopened_external_2" bpmnElement="Message_st_reopened_external_2">
<di:waypoint x="1280" y="405" />
<di:waypoint x="1650" y="405" />
<di:waypoint x="1650" y="700" />
<di:waypoint x="1275" y="700" />
<di:waypoint x="1275" y="800" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1100" y="735" width="260" height="42" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>