Исходник схемы
<?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="Definitions_service_pending_round" targetNamespace="urn:sharix:knowledge:handlers">
<bpmn:process id="round_Process_round" name="Handler и backend: предложение → ответ → окончательное назначение" isExecutable="false">
<bpmn:documentation>{"notes": ["ShariX Open, опубликованный Python совпадает с renderer Blockly; isExecutable=false.", "Общий deadline поиска проверяется до winner раунда.", "Раунд, курсор и цикл — в памяти; ответ человека не равен назначению в БД.", "first_accept / parallel / одна попытка; TTL не равен общему сроку поиска.", "Backend подтверждает текущий scope, отсутствие provider, hard eligibility, concurrency и requirements."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_service_request_pending.py", "repository": "sharix-open-handlers-examples", "sha256": "8521aac05e4d6b39e7afe7e3fd23e01bf889efc28156f0fc24758bd4c47d1649"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_service_request_pending.json", "repository": "sharix-open-handlers-examples", "sha256": "350202d5ae40afb1aea68d95e6117cd35b9ed851c9e0142b019dac5de321145f"}, {"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": "core/order_action_messages.py", "repository": "sharix-open-handlers-backend", "sha256": "046c262c0aabb02104fefca4e887324f99df22731e7726063f614aaf8839ca5c"}, {"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": "api/handler_auth.py", "repository": "sharix-open-tickets", "sha256": "ac76dc45aaa9742e5e1da0b98aae914bb2e287048d33e97b4a245a6997bc8425"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "signals.py", "repository": "sharix-open-tickets", "sha256": "39aad8690a2e7d35cebfb052127a8130a951cbb4eea316c4f767a0a59fc5fa7e"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/handler_wakeup.py", "repository": "sharix-open-tickets", "sha256": "c9fdc62a18301fd7c075395c697d5b1c738c77713aa71fcbb5ab097e173d98de"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_order_workflow.py", "repository": "sharix-open-backend", "sha256": "35624ded6e67110437a25dd07caef214a04251eb0136194ae939fa32fef17e84"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/open_api.py", "repository": "sharix-open-backend", "sha256": "cb8fdda304d29c2cc5c0fc938759a13c60022871b7b93d77883d521820021ad3"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/order_handler_relay.py", "repository": "sharix-open-backend", "sha256": "e49a7876169403970d995af464357e2134af19a398372c55db2a5b40681d731e"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/handler_order_context.py", "repository": "sharix-open-backend", "sha256": "f3c0731e74d30dbe5e59bd53040a06ee108f14f7aad04771e65d741cffeb7179"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/order_workflow_policy.py", "repository": "sharix-open-backend", "sha256": "3266c6ecab490a0e19c8bbc02041387b86fe4b14068750e545ba9bde8bf51326"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/order_actions.py", "repository": "sharix-open-backend", "sha256": "27ce243408a46f1b700d94bf78a25c68ef21d51078bb03627174e4a424d82ef0"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/order_permissions.py", "repository": "sharix-open-backend", "sha256": "9c1636daa80c4da68c3ae5cf347e279127d142eeff91e969559e8bd54ca3d81d"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "urls.py", "repository": "sharix-open-backend", "sha256": "61ffd2f0563291da2dcc9488a5443cb5e2c0395108740a6700034cfd90548158"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/order_lifecycle.py", "repository": "sharix-open-backend", "sha256": "66dd2c4db9da3aaf90cb080946c1920a4f9953d62d1e6c9e224dd52564c4d661"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/order_provider_requirements.py", "repository": "sharix-open-backend", "sha256": "392f1f9180a098a4749b5fe5b7948e34530ccdb2befed646e538cdb7a5ddcada"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/order_rounds.py", "repository": "sharix-open-handlers-backend", "sha256": "e27a9190374c3888930f60e26686c11f69069bbbefd4511d21ad7267301321eb"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "settings_schema.py", "repository": "sharix-open-handlers-backend", "sha256": "8ea8494405c6808834f4be7b171ffb8a969e1dd9b1654d36a8c21fbc9e3599c3"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/order_matching.py", "repository": "sharix-open-backend", "sha256": "74d09c8d9a9970eceba0b7b2324a8beb0e9e315dbf72ac8139493fafbbd69a6d"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "services/provider_availability.py", "repository": "sharix-open-backend", "sha256": "933d2a029ebbed4cb4e6b9154bb30a5798f445a0c8d9fe0d5fbd6ea3d1f485c5"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/platform_matching.py", "repository": "sharix-open-backend", "sha256": "14814da9f7afa91ab4d39834c5e7b739fdb74359b8df0c4be97fde885e2b92c7"}]}</bpmn:documentation>
<bpmn:laneSet id="round_Lanes_round">
<bpmn:lane id="round_Lane_worker" name="Раунд в памяти; каноническое изменение Orders/Ticket">
<bpmn:flowNodeRef>round_start</bpmn:flowNodeRef>
<bpmn:flowNodeRef>round_send</bpmn:flowNodeRef>
<bpmn:flowNodeRef>round_wait</bpmn:flowNodeRef>
<bpmn:flowNodeRef>round_response</bpmn:flowNodeRef>
<bpmn:flowNodeRef>round_validate</bpmn:flowNodeRef>
<bpmn:flowNodeRef>round_decision</bpmn:flowNodeRef>
<bpmn:flowNodeRef>round_winner</bpmn:flowNodeRef>
<bpmn:flowNodeRef>round_deadline</bpmn:flowNodeRef>
<bpmn:flowNodeRef>round_backend</bpmn:flowNodeRef>
<bpmn:flowNodeRef>round_ok</bpmn:flowNodeRef>
<bpmn:flowNodeRef>round_assigned</bpmn:flowNodeRef>
<bpmn:flowNodeRef>round_retry</bpmn:flowNodeRef>
<bpmn:flowNodeRef>round_force</bpmn:flowNodeRef>
<bpmn:flowNodeRef>round_timer</bpmn:flowNodeRef>
<bpmn:flowNodeRef>round_next</bpmn:flowNodeRef>
</bpmn:lane>
</bpmn:laneSet>
<bpmn:startEvent id="round_start" name="Получена партия кандидатов">
<bpmn:outgoing>round_Flow_0</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sendTask id="round_send" name="Parallel order.action.required accept/decline">
<bpmn:incoming>round_Flow_0</bpmn:incoming>
<bpmn:outgoing>round_Flow_1</bpmn:outgoing>
</bpmn:sendTask>
<bpmn:eventBasedGateway id="round_wait" name="Ответы или TTL">
<bpmn:incoming>round_Flow_1</bpmn:incoming>
<bpmn:incoming>round_Flow_7</bpmn:incoming>
<bpmn:outgoing>round_Flow_2</bpmn:outgoing>
<bpmn:outgoing>round_Flow_14</bpmn:outgoing>
</bpmn:eventBasedGateway>
<bpmn:intermediateCatchEvent id="round_response" name="Прямой XMPP или trusted web relay">
<bpmn:incoming>round_Flow_2</bpmn:incoming>
<bpmn:outgoing>round_Flow_3</bpmn:outgoing>
<bpmn:messageEventDefinition />
</bpmn:intermediateCatchEvent>
<bpmn:serviceTask id="round_validate" name="Проверить JID, round/order/status/offer, срок, повтор">
<bpmn:incoming>round_Flow_3</bpmn:incoming>
<bpmn:outgoing>round_Flow_4</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:exclusiveGateway id="round_decision" name="Решение first_accept?">
<bpmn:incoming>round_Flow_4</bpmn:incoming>
<bpmn:outgoing>round_Flow_5</bpmn:outgoing>
<bpmn:outgoing>round_Flow_6</bpmn:outgoing>
<bpmn:outgoing>round_Flow_7</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:serviceTask id="round_winner" name="Сохранить winner; сделать Ticket ready">
<bpmn:incoming>round_Flow_5</bpmn:incoming>
<bpmn:outgoing>round_Flow_8</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:exclusiveGateway id="round_deadline" name="Следующий проход: общий срок ещё позволяет?">
<bpmn:incoming>round_Flow_8</bpmn:incoming>
<bpmn:outgoing>round_Flow_9</bpmn:outgoing>
<bpmn:outgoing>round_Flow_10</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:serviceTask id="round_backend" name="accept-pending-provider под lock и gates">
<bpmn:incoming>round_Flow_9</bpmn:incoming>
<bpmn:outgoing>round_Flow_11</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:exclusiveGateway id="round_ok" name="Доменный успех?">
<bpmn:incoming>round_Flow_11</bpmn:incoming>
<bpmn:outgoing>round_Flow_12</bpmn:outgoing>
<bpmn:outgoing>round_Flow_13</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:endEvent id="round_assigned" name="Provider сохранён; PENDING → ACCEPTED">
<bpmn:incoming>round_Flow_12</bpmn:incoming>
</bpmn:endEvent>
<bpmn:endEvent id="round_retry" name="Отказ: тот же winner на RECHECK">
<bpmn:incoming>round_Flow_13</bpmn:incoming>
</bpmn:endEvent>
<bpmn:endEvent id="round_force" name="Истёк общий срок: попытка PRE_FORCEMAJEUER">
<bpmn:incoming>round_Flow_10</bpmn:incoming>
</bpmn:endEvent>
<bpmn:intermediateCatchEvent id="round_timer" name="round.expires_at">
<bpmn:incoming>round_Flow_14</bpmn:incoming>
<bpmn:outgoing>round_Flow_15</bpmn:outgoing>
<bpmn:timerEventDefinition>
<bpmn:timeDate xsi:type="bpmn:tFormalExpression">round_expires_at</bpmn:timeDate>
</bpmn:timerEventDefinition>
</bpmn:intermediateCatchEvent>
<bpmn:endEvent id="round_next" name="Нет winner: новая партия в следующем проходе">
<bpmn:incoming>round_Flow_6</bpmn:incoming>
<bpmn:incoming>round_Flow_15</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="round_Flow_0" sourceRef="round_start" targetRef="round_send" name="" />
<bpmn:sequenceFlow id="round_Flow_1" sourceRef="round_send" targetRef="round_wait" name="" />
<bpmn:sequenceFlow id="round_Flow_2" sourceRef="round_wait" targetRef="round_response" name="" />
<bpmn:sequenceFlow id="round_Flow_3" sourceRef="round_response" targetRef="round_validate" name="" />
<bpmn:sequenceFlow id="round_Flow_4" sourceRef="round_validate" targetRef="round_decision" name="" />
<bpmn:sequenceFlow id="round_Flow_5" sourceRef="round_decision" targetRef="round_winner" name="accept" />
<bpmn:sequenceFlow id="round_Flow_6" sourceRef="round_decision" targetRef="round_next" name="Все decline / нет winner" />
<bpmn:sequenceFlow id="round_Flow_7" sourceRef="round_decision" targetRef="round_wait" name="Отклонён / ещё ждём" />
<bpmn:sequenceFlow id="round_Flow_8" sourceRef="round_winner" targetRef="round_deadline" name="" />
<bpmn:sequenceFlow id="round_Flow_9" sourceRef="round_deadline" targetRef="round_backend" name="Да" />
<bpmn:sequenceFlow id="round_Flow_10" sourceRef="round_deadline" targetRef="round_force" name="Нет" />
<bpmn:sequenceFlow id="round_Flow_11" sourceRef="round_backend" targetRef="round_ok" name="" />
<bpmn:sequenceFlow id="round_Flow_12" sourceRef="round_ok" targetRef="round_assigned" name="Да" />
<bpmn:sequenceFlow id="round_Flow_13" sourceRef="round_ok" targetRef="round_retry" name="Нет" />
<bpmn:sequenceFlow id="round_Flow_14" sourceRef="round_wait" targetRef="round_timer" name="" />
<bpmn:sequenceFlow id="round_Flow_15" sourceRef="round_timer" targetRef="round_next" name="timed_out" />
</bpmn:process>
<bpmn:process id="providers_Process_providers" name="Кандидаты партии: независимые ответы; отправка не доказывает прочтение" isExecutable="false">
<bpmn:documentation>{"notes": ["ShariX Open, опубликованный Python совпадает с renderer Blockly; isExecutable=false.", "Общий deadline поиска проверяется до winner раунда.", "Раунд, курсор и цикл — в памяти; ответ человека не равен назначению в БД.", "first_accept / parallel / одна попытка; TTL не равен общему сроку поиска.", "Backend подтверждает текущий scope, отсутствие provider, hard eligibility, concurrency и requirements."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_service_request_pending.py", "repository": "sharix-open-handlers-examples", "sha256": "8521aac05e4d6b39e7afe7e3fd23e01bf889efc28156f0fc24758bd4c47d1649"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_service_request_pending.json", "repository": "sharix-open-handlers-examples", "sha256": "350202d5ae40afb1aea68d95e6117cd35b9ed851c9e0142b019dac5de321145f"}, {"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": "core/order_action_messages.py", "repository": "sharix-open-handlers-backend", "sha256": "046c262c0aabb02104fefca4e887324f99df22731e7726063f614aaf8839ca5c"}, {"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": "api/handler_auth.py", "repository": "sharix-open-tickets", "sha256": "ac76dc45aaa9742e5e1da0b98aae914bb2e287048d33e97b4a245a6997bc8425"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "signals.py", "repository": "sharix-open-tickets", "sha256": "39aad8690a2e7d35cebfb052127a8130a951cbb4eea316c4f767a0a59fc5fa7e"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/handler_wakeup.py", "repository": "sharix-open-tickets", "sha256": "c9fdc62a18301fd7c075395c697d5b1c738c77713aa71fcbb5ab097e173d98de"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_order_workflow.py", "repository": "sharix-open-backend", "sha256": "35624ded6e67110437a25dd07caef214a04251eb0136194ae939fa32fef17e84"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/open_api.py", "repository": "sharix-open-backend", "sha256": "cb8fdda304d29c2cc5c0fc938759a13c60022871b7b93d77883d521820021ad3"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/order_handler_relay.py", "repository": "sharix-open-backend", "sha256": "e49a7876169403970d995af464357e2134af19a398372c55db2a5b40681d731e"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/handler_order_context.py", "repository": "sharix-open-backend", "sha256": "f3c0731e74d30dbe5e59bd53040a06ee108f14f7aad04771e65d741cffeb7179"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/order_workflow_policy.py", "repository": "sharix-open-backend", "sha256": "3266c6ecab490a0e19c8bbc02041387b86fe4b14068750e545ba9bde8bf51326"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/order_actions.py", "repository": "sharix-open-backend", "sha256": "27ce243408a46f1b700d94bf78a25c68ef21d51078bb03627174e4a424d82ef0"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/order_permissions.py", "repository": "sharix-open-backend", "sha256": "9c1636daa80c4da68c3ae5cf347e279127d142eeff91e969559e8bd54ca3d81d"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "urls.py", "repository": "sharix-open-backend", "sha256": "61ffd2f0563291da2dcc9488a5443cb5e2c0395108740a6700034cfd90548158"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/order_lifecycle.py", "repository": "sharix-open-backend", "sha256": "66dd2c4db9da3aaf90cb080946c1920a4f9953d62d1e6c9e224dd52564c4d661"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/order_provider_requirements.py", "repository": "sharix-open-backend", "sha256": "392f1f9180a098a4749b5fe5b7948e34530ccdb2befed646e538cdb7a5ddcada"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/order_rounds.py", "repository": "sharix-open-handlers-backend", "sha256": "e27a9190374c3888930f60e26686c11f69069bbbefd4511d21ad7267301321eb"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "settings_schema.py", "repository": "sharix-open-handlers-backend", "sha256": "8ea8494405c6808834f4be7b171ffb8a969e1dd9b1654d36a8c21fbc9e3599c3"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/order_matching.py", "repository": "sharix-open-backend", "sha256": "74d09c8d9a9970eceba0b7b2324a8beb0e9e315dbf72ac8139493fafbbd69a6d"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "services/provider_availability.py", "repository": "sharix-open-backend", "sha256": "933d2a029ebbed4cb4e6b9154bb30a5798f445a0c8d9fe0d5fbd6ea3d1f485c5"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/platform_matching.py", "repository": "sharix-open-backend", "sha256": "14814da9f7afa91ab4d39834c5e7b739fdb74359b8df0c4be97fde885e2b92c7"}]}</bpmn:documentation>
<bpmn:laneSet id="providers_Lanes_providers">
<bpmn:lane id="providers_Lane_worker" name="Внешние участники">
<bpmn:flowNodeRef>providers_notice</bpmn:flowNodeRef>
<bpmn:flowNodeRef>providers_choose</bpmn:flowNodeRef>
<bpmn:flowNodeRef>providers_reply</bpmn:flowNodeRef>
<bpmn:flowNodeRef>providers_end</bpmn:flowNodeRef>
</bpmn:lane>
</bpmn:laneSet>
<bpmn:startEvent id="providers_notice" name="Получить предложение с offer/round id">
<bpmn:outgoing>providers_Flow_0</bpmn:outgoing>
<bpmn:messageEventDefinition />
</bpmn:startEvent>
<bpmn:userTask id="providers_choose" name="Согласиться, отказаться либо не ответить">
<bpmn:incoming>providers_Flow_0</bpmn:incoming>
<bpmn:outgoing>providers_Flow_1</bpmn:outgoing>
</bpmn:userTask>
<bpmn:sendTask id="providers_reply" name="Отправить ответ до TTL">
<bpmn:incoming>providers_Flow_1</bpmn:incoming>
<bpmn:outgoing>providers_Flow_2</bpmn:outgoing>
</bpmn:sendTask>
<bpmn:endEvent id="providers_end" name="Ответ ≠ назначение в БД">
<bpmn:incoming>providers_Flow_2</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="providers_Flow_0" sourceRef="providers_notice" targetRef="providers_choose" name="" />
<bpmn:sequenceFlow id="providers_Flow_1" sourceRef="providers_choose" targetRef="providers_reply" name="" />
<bpmn:sequenceFlow id="providers_Flow_2" sourceRef="providers_reply" targetRef="providers_end" name="" />
</bpmn:process>
<bpmn:collaboration id="Collaboration_service_pending_round">
<bpmn:participant id="round_Pool_round" name="Handler и backend: предложение → ответ → окончательное назначение" processRef="round_Process_round" />
<bpmn:participant id="providers_Pool_providers" name="Кандидаты партии: независимые ответы; отправка не доказывает прочтение" processRef="providers_Process_providers" />
<bpmn:messageFlow id="Message_service_pending_round_0" sourceRef="round_send" targetRef="providers_notice" name="Параллельная отправка, popup_policy=fullscreen_offer" />
<bpmn:messageFlow id="Message_service_pending_round_1" sourceRef="providers_reply" targetRef="round_response" name="Actor сохранён; круг/срок/участник проверяются" />
</bpmn:collaboration>
<bpmndi:BPMNDiagram id="Diagram_service_pending_round">
<bpmndi:BPMNPlane id="Plane_service_pending_round" bpmnElement="Collaboration_service_pending_round">
<bpmndi:BPMNShape id="round_DI_Pool_round" bpmnElement="round_Pool_round" isHorizontal="true">
<dc:Bounds x="0.0" y="0.0" width="2150" height="890" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_Lane_worker" bpmnElement="round_Lane_worker" isHorizontal="true">
<dc:Bounds x="30.0" y="0.0" width="2120" height="890" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_start" bpmnElement="round_start">
<dc:Bounds x="132.0" y="82.0" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_send" bpmnElement="round_send">
<dc:Bounds x="365.0" y="65.0" width="150" height="70" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_wait" bpmnElement="round_wait">
<dc:Bounds x="725.0" y="75.0" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_response" bpmnElement="round_response">
<dc:Bounds x="1042.0" y="82.0" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_validate" bpmnElement="round_validate">
<dc:Bounds x="1295.0" y="65.0" width="150" height="70" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_decision" bpmnElement="round_decision">
<dc:Bounds x="1655.0" y="75.0" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_winner" bpmnElement="round_winner">
<dc:Bounds x="1915.0" y="65.0" width="150" height="70" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_deadline" bpmnElement="round_deadline">
<dc:Bounds x="1965.0" y="315.0" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_backend" bpmnElement="round_backend">
<dc:Bounds x="1605.0" y="305.0" width="150" height="70" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_ok" bpmnElement="round_ok">
<dc:Bounds x="1345.0" y="315.0" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_assigned" bpmnElement="round_assigned">
<dc:Bounds x="1042.0" y="322.0" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_retry" bpmnElement="round_retry">
<dc:Bounds x="1352.0" y="552.0" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_force" bpmnElement="round_force">
<dc:Bounds x="1972.0" y="552.0" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_timer" bpmnElement="round_timer">
<dc:Bounds x="1042.0" y="772.0" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="round_DI_next" bpmnElement="round_next">
<dc:Bounds x="1662.0" y="772.0" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="round_DI_Flow_0" bpmnElement="round_Flow_0">
<di:waypoint x="168.0" y="100.0" />
<di:waypoint x="365.0" y="100.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="round_DI_Flow_1" bpmnElement="round_Flow_1">
<di:waypoint x="515.0" y="100.0" />
<di:waypoint x="725.0" y="100.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="round_DI_Flow_2" bpmnElement="round_Flow_2">
<di:waypoint x="775.0" y="100.0" />
<di:waypoint x="1042.0" y="100.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="round_DI_Flow_3" bpmnElement="round_Flow_3">
<di:waypoint x="1078.0" y="100.0" />
<di:waypoint x="1295.0" y="100.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="round_DI_Flow_4" bpmnElement="round_Flow_4">
<di:waypoint x="1445.0" y="100.0" />
<di:waypoint x="1655.0" y="100.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="round_DI_Flow_5" bpmnElement="round_Flow_5">
<di:waypoint x="1705.0" y="100.0" />
<di:waypoint x="1915.0" y="100.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="round_DI_Flow_6" bpmnElement="round_Flow_6">
<di:waypoint x="1705.0" y="100.0" />
<di:waypoint x="1800.0" y="100.0" />
<di:waypoint x="1830.0" y="100.0" />
<di:waypoint x="1830.0" y="720.0" />
<di:waypoint x="1680.0" y="720.0" />
<di:waypoint x="1680.0" y="772.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="round_DI_Flow_7" bpmnElement="round_Flow_7">
<di:waypoint x="1705.0" y="100.0" />
<di:waypoint x="1800.0" y="100.0" />
<di:waypoint x="1830.0" y="100.0" />
<di:waypoint x="1830.0" y="30.0" />
<di:waypoint x="750.0" y="30.0" />
<di:waypoint x="750.0" y="75.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="round_DI_Flow_8" bpmnElement="round_Flow_8">
<di:waypoint x="1990.0" y="135.0" />
<di:waypoint x="1990.0" y="315.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="round_DI_Flow_9" bpmnElement="round_Flow_9">
<di:waypoint x="1965.0" y="340.0" />
<di:waypoint x="1755.0" y="340.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="round_DI_Flow_10" bpmnElement="round_Flow_10">
<di:waypoint x="1990.0" y="365.0" />
<di:waypoint x="1990.0" y="552.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="round_DI_Flow_11" bpmnElement="round_Flow_11">
<di:waypoint x="1605.0" y="340.0" />
<di:waypoint x="1395.0" y="340.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="round_DI_Flow_12" bpmnElement="round_Flow_12">
<di:waypoint x="1345.0" y="340.0" />
<di:waypoint x="1078.0" y="340.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="round_DI_Flow_13" bpmnElement="round_Flow_13">
<di:waypoint x="1370.0" y="365.0" />
<di:waypoint x="1370.0" y="552.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="round_DI_Flow_14" bpmnElement="round_Flow_14">
<di:waypoint x="775.0" y="100.0" />
<di:waypoint x="908.5" y="100.0" />
<di:waypoint x="908.5" y="790.0" />
<di:waypoint x="1042.0" y="790.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="round_DI_Flow_15" bpmnElement="round_Flow_15">
<di:waypoint x="1078.0" y="790.0" />
<di:waypoint x="1662.0" y="790.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="providers_DI_Pool_providers" bpmnElement="providers_Pool_providers" isHorizontal="true">
<dc:Bounds x="0.0" y="1100.0" width="1220" height="200" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="providers_DI_Lane_worker" bpmnElement="providers_Lane_worker" isHorizontal="true">
<dc:Bounds x="30.0" y="1100.0" width="1190" height="200" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="providers_DI_notice" bpmnElement="providers_notice">
<dc:Bounds x="132.0" y="1182.0" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="providers_DI_choose" bpmnElement="providers_choose">
<dc:Bounds x="365.0" y="1165.0" width="150" height="70" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="providers_DI_reply" bpmnElement="providers_reply">
<dc:Bounds x="675.0" y="1165.0" width="150" height="70" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="providers_DI_end" bpmnElement="providers_end">
<dc:Bounds x="1042.0" y="1182.0" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="providers_DI_Flow_0" bpmnElement="providers_Flow_0">
<di:waypoint x="168.0" y="1200.0" />
<di:waypoint x="365.0" y="1200.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="providers_DI_Flow_1" bpmnElement="providers_Flow_1">
<di:waypoint x="515.0" y="1200.0" />
<di:waypoint x="675.0" y="1200.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="providers_DI_Flow_2" bpmnElement="providers_Flow_2">
<di:waypoint x="825.0" y="1200.0" />
<di:waypoint x="1042.0" y="1200.0" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="DI_Message_service_pending_round_0" bpmnElement="Message_service_pending_round_0">
<di:waypoint x="440" y="135" />
<di:waypoint x="440" y="1000" />
<di:waypoint x="150" y="1000" />
<di:waypoint x="150" y="1182" />
<bpmndi:BPMNLabel>
<dc:Bounds x="180" y="970" width="260" height="42" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="DI_Message_service_pending_round_1" bpmnElement="Message_service_pending_round_1">
<di:waypoint x="750" y="1235" />
<di:waypoint x="2080" y="1235" />
<di:waypoint x="2080" y="30" />
<di:waypoint x="1060" y="30" />
<di:waypoint x="1060" y="82" />
<bpmndi:BPMNLabel>
<dc:Bounds x="1730" y="1040" width="260" height="42" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>