Инструменты пользователя

Инструменты сайта


sharixopen:knowledge:scenarios:service_request_booked

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
sharixopen:knowledge:scenarios:service_request_booked [2026/10/28 20:26] – [sharixknowledge] approved package sx_knowledge_api_opensharixopen:knowledge:scenarios:service_request_booked [2026/10/31 11:25] (текущий) – [sharixknowledge] approved package sx_knowledge_api_open
Строка 20: Строка 20:
             "domain": "business_processes",             "domain": "business_processes",
             "lifecycle": "implemented",             "lifecycle": "implemented",
-            "component": "handlers",+            "component": "handlers_examples, handlers_backend, dbsynce",
             "parents": [             "parents": [
                 "ShariXKnowledgeScenarios"                 "ShariXKnowledgeScenarios"
             ],             ],
             "terms": [             "terms": [
-                "SERVICE_REQUEST", +                "audience_developer", 
-                "BOOKED", +                "audience_support", 
-                "Provider",+                "audience_reviewer", 
 +                "audience_ai", 
 +                "product_sharix_open", 
 +                "material_scenario", 
 +                "topic_orders_assignment", 
 +                "topic_orders_lifecycle", 
 +                "topic_handlers_runtime", 
 +                "service_request", 
 +                "ticket_booked", 
 +                "provider_offer",
                 "pending_at",                 "pending_at",
-                "BPMN"+                "bpmn", 
 +                "ticket", 
 +                "blockly", 
 +                "generated_python", 
 +                "order"
             ]             ]
         },         },
Строка 181: Строка 194:
                 "actions": "bb941bf433e339de3682874b4efbfede8e7fca91d1b16eff6257db2f945a6237"                 "actions": "bb941bf433e339de3682874b4efbfede8e7fca91d1b16eff6257db2f945a6237"
             }             }
 +        },
 +        "diagram_view_bounds": {
 +            "reviewed_on": "2026-10-29",
 +            "models": [
 +                "logic",
 +                "actions"
 +            ],
 +            "semantics_unchanged": true,
 +            "utility": "tools/expand_bpmn_view_bounds.py",
 +            "utility_sha256": "f878658b0115773e34f6c3eec72eba5984d873e60d8e2a4336b3dfb2a8026d87"
 +        },
 +        "classification": {
 +            "schema": "sharix.knowledge.classification.v1",
 +            "products": [
 +                "sharix_open"
 +            ],
 +            "audiences": [
 +                "developer",
 +                "support",
 +                "reviewer",
 +                "ai"
 +            ],
 +            "material": "scenario",
 +            "topics": [
 +                "orders/assignment",
 +                "orders/lifecycle",
 +                "handlers/runtime"
 +            ],
 +            "tag_terms": [
 +                "audience_developer",
 +                "audience_support",
 +                "audience_reviewer",
 +                "audience_ai",
 +                "product_sharix_open",
 +                "material_scenario",
 +                "topic_orders_assignment",
 +                "topic_orders_lifecycle",
 +                "topic_handlers_runtime",
 +                "service_request",
 +                "ticket_booked",
 +                "provider_offer",
 +                "pending_at",
 +                "bpmn",
 +                "ticket",
 +                "blockly",
 +                "generated_python",
 +                "order"
 +            ],
 +            "registry_document": "ShariXKnowledgeClassification",
 +            "state_meaning": "lifecycle относится к описываемому коду, а status к редакции документа; implemented не означает успешный runtime тест"
 +        },
 +        "classification_review": {
 +            "date": "2026-10-31",
 +            "source": "Содержание текущей страницы и проверенный словарь классификации",
 +            "body_scope": "rewrite"
 +        },
 +        "source_review_20261031": {
 +            "kind": "source_analysis_not_runtime_acceptance",
 +            "evidence_field": "extensions.source_evidence",
 +            "checked_on": "2026-10-31",
 +            "all_original_evidence_hashes_match_fresh_git": true,
 +            "canonical_generation": "Both runnable and generated copies match; no handler executed."
         }         }
     },     },
-    "content_sha256": "66315d70d9b663f5b8eb8084967576c51a741d16a85897fc9369c0703590617d",+    "content_sha256": "c273252e44e75a0c3bcd5d4dad510295e15f494c25c22e9c7ef7d3e89414903a",
     "schema": 1     "schema": 1
 } }
Строка 190: Строка 265:
 ~~NOCACHE~~ ~~NOCACHE~~
  
-**Область:** ShariX Open. **Обработчик:** ''open_service_request_booked'', тип ''SERVICE_REQUEST'' (2), рабочий статус ''BOOKED'' (211). Опубликованный Python на 28.10.2026 побайтово совпадает с каноническим renderer Blockly workspace. Выбор версии на конкретном сервере проверяется отдельно.+**Назначение:** [[sharixopen:knowledge:classification:materials#scenarij_processa|Сценарий процесса]]. **Продукт:** [[sharixopen:knowledge:classification:products#sharix_open|ShariX Open]]. 
 + 
 +**Для кого:** [[sharixopen:knowledge:classification:audiences#razrabotchik|Разработчик]] · [[sharixopen:knowledge:classification:audiences#podderzhka|Поддержка]] · [[sharixopen:knowledge:classification:audiences#recenzent_i_prijomschik|Рецензент и приёмщик]] · [[sharixopen:knowledge:classification:audiences#nejroset|Нейросеть]]. 
 + 
 +**Темы:** [[sharixopen:knowledge:classification:topics#naznachenie|Заказы → Назначение]] · [[sharixopen:knowledge:classification:topics#zhiznennyj_cikl|Заказы → Жизненный цикл]] · [[sharixopen:knowledge:classification:topics#runtime|Обработчики → Runtime]]. 
 + 
 + 
 + 
 +**Область:** ShariX Open. **Обработчик:** ''open_service_request_booked'', тип ''SERVICE_REQUEST'' (2), рабочий статус ''BOOKED'' (211). 31.10.2026 опубликованные исходники повторно получены из Git. Обе Python-копии заново сопоставлены с результатом генерации Blockly; проверены 11 исходников генераторов. Сам handler не исполнялся. Выбранную версию, конфигурацию и внешние подключения сервера проверяют отдельно.
  
 ===== Назначение и границы ===== ===== Назначение и границы =====
-Handler сопровождает размещённый заказ до назначения исполнителя либо перехода в PENDING. Сначала он пытается применить одно разрешённое пользовательское намерение ''take''/''cancel'', затем проверяет текущее окно автоматического перехода. Он не выбирает кандидатов, не рассылает предложения и не проводит раунд победителя в BOOKED: это отдельная стадия PENDING.+Handler сопровождает размещённый заказ в таком порядке: 
 + 
 +  - Попытаться применить одно разрешённое намерение take/cancel. 
 +  - Если проход не завершён — загрузить актуальный контекст заказа. 
 +  - Проверить окно автоматического перехода в PENDING. 
 +  - При отсутствии завершённого перехода назначить повтор. 
 + 
 +В BOOKED handler не выбирает кандидатов, не рассылает предложения и не проводит раунд победителя. Это отдельная стадия PENDING. 
 + 
 +Условие перехода зависит от заказа: 
 + 
 +  * **ASAP:** попытка PENDING сразу после проверки intent и загрузки контекста. 
 +  * **Плановый заказ:** ждать pending_at.
  
-Для ASAP попытка перехода в PENDING начинается сразу после проверки пользовательского intent и загрузки контекста. Для планового заказа — по ''pending_at''. Универсальный autoaccept этой стадии не используется.+Универсальный autoaccept здесь не используется.
  
 BPMN имеют ''isExecutable=false''. Wiki не исполняет процесс: runtime выполняет выбранный проверенный Python из Blockly. End event завершает показанную операцию; он не означает завершения услуги. BPMN имеют ''isExecutable=false''. Wiki не исполняет процесс: runtime выполняет выбранный проверенный Python из Blockly. End event завершает показанную операцию; он не означает завершения услуги.
Строка 202: Строка 297:
 <sharix-bpmn> <sharix-bpmn>
 <?xml version="1.0" encoding="UTF-8"?> <?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_booked_logic" targetNamespace="urn:sharix:knowledge:handlers">+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:ns2="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:ns3="http://www.omg.org/spec/DD/20100524/DC" xmlns:ns4="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_service_booked_logic" targetNamespace="urn:sharix:knowledge:handlers">
   <bpmn:process id="booked_Process_booked" name="open_service_request_booked: пользовательский take/cancel и окно перехода в PENDING" isExecutable="false">   <bpmn:process id="booked_Process_booked" name="open_service_request_booked: пользовательский take/cancel и окно перехода в PENDING" isExecutable="false">
     <bpmn:documentation>{"notes": ["Git built-in, BPMN isExecutable=false; handler при генерации не исполняется.", "BOOKED не рассылает предложения кандидатам.", "pending_at=planned_start − SERVICE_REQUEST_PRE_START_DURATION_SECONDS − SERVICE_REQUEST_BOOKED_PENDING_LEAD_SECONDS.", "Часы проверки границы — runtime; backend move повторно проверяет статус и отсутствие provider."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_service_request_booked.py", "repository": "sharix-open-handlers-examples", "sha256": "44e066a3ccb7ee21abc8d252a343adf1ea3cbf5e177aebb62ed2059fe1c2f2d8"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_service_request_booked.json", "repository": "sharix-open-handlers-examples", "sha256": "7096cde8b581cc80b2f0f65dcc63e95adfdfdd8bf459e9a70ee229d329a7dcfc"}, {"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"}]}</bpmn:documentation>     <bpmn:documentation>{"notes": ["Git built-in, BPMN isExecutable=false; handler при генерации не исполняется.", "BOOKED не рассылает предложения кандидатам.", "pending_at=planned_start − SERVICE_REQUEST_PRE_START_DURATION_SECONDS − SERVICE_REQUEST_BOOKED_PENDING_LEAD_SECONDS.", "Часы проверки границы — runtime; backend move повторно проверяет статус и отсутствие provider."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_service_request_booked.py", "repository": "sharix-open-handlers-examples", "sha256": "44e066a3ccb7ee21abc8d252a343adf1ea3cbf5e177aebb62ed2059fe1c2f2d8"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_service_request_booked.json", "repository": "sharix-open-handlers-examples", "sha256": "7096cde8b581cc80b2f0f65dcc63e95adfdfdd8bf459e9a70ee229d329a7dcfc"}, {"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"}]}</bpmn:documentation>
Строка 381: Строка 476:
     <bpmn:participant id="booked_Pool_booked" name="open_service_request_booked: пользовательский take/cancel и окно перехода в PENDING" processRef="booked_Process_booked" />     <bpmn:participant id="booked_Pool_booked" name="open_service_request_booked: пользовательский take/cancel и окно перехода в PENDING" processRef="booked_Process_booked" />
   </bpmn:collaboration>   </bpmn:collaboration>
-  <bpmndi:BPMNDiagram id="Diagram_service_booked_logic"> +  <ns2:BPMNDiagram id="Diagram_service_booked_logic"> 
-    <bpmndi:BPMNPlane id="Plane_service_booked_logic" bpmnElement="Collaboration_service_booked_logic"> +    <ns2:BPMNPlane id="Plane_service_booked_logic" bpmnElement="Collaboration_service_booked_logic"> 
-      <bpmndi:BPMNShape id="booked_DI_Pool_booked" bpmnElement="booked_Pool_booked" isHorizontal="true"> +      <ns2:BPMNShape id="booked_DI_Pool_booked" bpmnElement="booked_Pool_booked" isHorizontal="true"> 
-        <dc:Bounds x="0.0" y="0.0" width="2570" height="1110" /> +        <ns3:Bounds x="0.0" y="0.0" width="2710.0" height="1110.0" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_Lane_worker" bpmnElement="booked_Lane_worker" isHorizontal="true"> +      <ns2:BPMNShape id="booked_DI_Lane_worker" bpmnElement="booked_Lane_worker" isHorizontal="true"> 
-        <dc:Bounds x="30.0" y="0.0" width="2540" height="710.0" /> +        <ns3:Bounds x="30.0" y="0.0" width="2680.0" height="710.0" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_Lane_queue" bpmnElement="booked_Lane_queue" isHorizontal="true"> +      <ns2:BPMNShape id="booked_DI_Lane_queue" bpmnElement="booked_Lane_queue" isHorizontal="true"> 
-        <dc:Bounds x="30.0" y="710.0" width="2540" height="400.0" /> +        <ns3:Bounds x="30.0" y="710.0" width="2680.0" height="400.0" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_start" bpmnElement="booked_start"> +      <ns2:BPMNShape id="booked_DI_start" bpmnElement="booked_start"> 
-        <dc:Bounds x="132.0" y="92.0" width="36" height="36" /> +        <ns3:Bounds x="132.0" y="92.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_status" bpmnElement="booked_status"> +      <ns2:BPMNShape id="booked_DI_status" bpmnElement="booked_status"> 
-        <dc:Bounds x="325.0" y="85.0" width="50" height="50" /> +        <ns3:Bounds x="325.0" y="85.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_intent" bpmnElement="booked_intent"> +      <ns2:BPMNShape id="booked_DI_intent" bpmnElement="booked_intent"> 
-        <dc:Bounds x="515.0" y="75.0" width="150" height="70" /> +        <ns3:Bounds x="515.0" y="75.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_handled" bpmnElement="booked_handled"> +      <ns2:BPMNShape id="booked_DI_handled" bpmnElement="booked_handled"> 
-        <dc:Bounds x="825.0" y="85.0" width="50" height="50" /> +        <ns3:Bounds x="825.0" y="85.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_intent_end" bpmnElement="booked_intent_end"> +      <ns2:BPMNShape id="booked_DI_intent_end" bpmnElement="booked_intent_end"> 
-        <dc:Bounds x="1092.0" y="92.0" width="36" height="36" /> +        <ns3:Bounds x="1092.0" y="92.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_stale" bpmnElement="booked_stale"> +      <ns2:BPMNShape id="booked_DI_stale" bpmnElement="booked_stale"> 
-        <dc:Bounds x="275.0" y="275.0" width="150" height="70" /> +        <ns3:Bounds x="275.0" y="275.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_stale_end" bpmnElement="booked_stale_end"> +      <ns2:BPMNShape id="booked_DI_stale_end" bpmnElement="booked_stale_end"> 
-        <dc:Bounds x="572.0" y="292.0" width="36" height="36" /> +        <ns3:Bounds x="572.0" y="292.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_context" bpmnElement="booked_context"> +      <ns2:BPMNShape id="booked_DI_context" bpmnElement="booked_context"> 
-        <dc:Bounds x="775.0" y="275.0" width="150" height="70" /> +        <ns3:Bounds x="775.0" y="275.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_found" bpmnElement="booked_found"> +      <ns2:BPMNShape id="booked_DI_found" bpmnElement="booked_found"> 
-        <dc:Bounds x="1085.0" y="285.0" width="50" height="50" /> +        <ns3:Bounds x="1085.0" y="285.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_missing" bpmnElement="booked_missing"> +      <ns2:BPMNShape id="booked_DI_missing" bpmnElement="booked_missing"> 
-        <dc:Bounds x="1092.0" y="492.0" width="36" height="36" /> +        <ns3:Bounds x="1092.0" y="492.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_reason" bpmnElement="booked_reason"> +      <ns2:BPMNShape id="booked_DI_reason" bpmnElement="booked_reason"> 
-        <dc:Bounds x="1295.0" y="275.0" width="150" height="70" /> +        <ns3:Bounds x="1295.0" y="275.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_asap" bpmnElement="booked_asap"> +      <ns2:BPMNShape id="booked_DI_asap" bpmnElement="booked_asap"> 
-        <dc:Bounds x="1605.0" y="285.0" width="50" height="50" /> +        <ns3:Bounds x="1605.0" y="285.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_due" bpmnElement="booked_due"> +      <ns2:BPMNShape id="booked_DI_due" bpmnElement="booked_due"> 
-        <dc:Bounds x="1605.0" y="485.0" width="50" height="50" /> +        <ns3:Bounds x="1605.0" y="485.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_move" bpmnElement="booked_move"> +      <ns2:BPMNShape id="booked_DI_move" bpmnElement="booked_move"> 
-        <dc:Bounds x="1815.0" y="275.0" width="150" height="70" /> +        <ns3:Bounds x="1815.0" y="275.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_ok" bpmnElement="booked_ok"> +      <ns2:BPMNShape id="booked_DI_ok" bpmnElement="booked_ok"> 
-        <dc:Bounds x="2125.0" y="285.0" width="50" height="50" /> +        <ns3:Bounds x="2125.0" y="285.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_end" bpmnElement="booked_end"> +      <ns2:BPMNShape id="booked_DI_end" bpmnElement="booked_end"> 
-        <dc:Bounds x="2392.0" y="292.0" width="36" height="36" /> +        <ns3:Bounds x="2392.0" y="292.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_defer" bpmnElement="booked_defer"> +      <ns2:BPMNShape id="booked_DI_defer" bpmnElement="booked_defer"> 
-        <dc:Bounds x="1815.0" y="575.0" width="150" height="70" /> +        <ns3:Bounds x="1815.0" y="575.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_intent_error" bpmnElement="booked_intent_error"> +      <ns2:BPMNShape id="booked_DI_intent_error" bpmnElement="booked_intent_error"> 
-        <dc:Bounds x="622.0" y="127.0" width="36" height="36" /> +        <ns3:Bounds x="622.0" y="127.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_context_error" bpmnElement="booked_context_error"> +      <ns2:BPMNShape id="booked_DI_context_error" bpmnElement="booked_context_error"> 
-        <dc:Bounds x="882.0" y="327.0" width="36" height="36" /> +        <ns3:Bounds x="882.0" y="327.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_move_error" bpmnElement="booked_move_error"> +      <ns2:BPMNShape id="booked_DI_move_error" bpmnElement="booked_move_error"> 
-        <dc:Bounds x="1922.0" y="327.0" width="36" height="36" /> +        <ns3:Bounds x="1922.0" y="327.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_retry" bpmnElement="booked_retry"> +      <ns2:BPMNShape id="booked_DI_retry" bpmnElement="booked_retry"> 
-        <dc:Bounds x="2335.0" y="575.0" width="150" height="70" /> +        <ns3:Bounds x="2335.0" y="575.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_wait" bpmnElement="booked_wait"> +      <ns2:BPMNShape id="booked_DI_wait" bpmnElement="booked_wait"> 
-        <dc:Bounds x="1345.0" y="855.0" width="50" height="50" /> +        <ns3:Bounds x="1345.0" y="855.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_timer" bpmnElement="booked_timer"> +      <ns2:BPMNShape id="booked_DI_timer" bpmnElement="booked_timer"> 
-        <dc:Bounds x="1612.0" y="792.0" width="36" height="36" /> +        <ns3:Bounds x="1612.0" y="792.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_event" bpmnElement="booked_event"> +      <ns2:BPMNShape id="booked_DI_event" bpmnElement="booked_event"> 
-        <dc:Bounds x="1612.0" y="992.0" width="36" height="36" /> +        <ns3:Bounds x="1612.0" y="992.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="booked_DI_ready" bpmnElement="booked_ready"> +      <ns2:BPMNShape id="booked_DI_ready" bpmnElement="booked_ready"> 
-        <dc:Bounds x="1815.0" y="845.0" width="150" height="70" /> +        <ns3:Bounds x="1815.0" y="845.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_0" bpmnElement="booked_Flow_0"> +      <ns2:BPMNEdge id="booked_DI_Flow_0" bpmnElement="booked_Flow_0"> 
-        <di:waypoint x="168.0" y="110.0" /> +        <ns4:waypoint x="168.0" y="110.0" /> 
-        <di:waypoint x="325.0" y="110.0" /> +        <ns4:waypoint x="325.0" y="110.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_1" bpmnElement="booked_Flow_1"> +      <ns2:BPMNEdge id="booked_DI_Flow_1" bpmnElement="booked_Flow_1"> 
-        <di:waypoint x="375.0" y="110.0" /> +        <ns4:waypoint x="375.0" y="110.0" /> 
-        <di:waypoint x="515.0" y="110.0" /> +        <ns4:waypoint x="515.0" y="110.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_2" bpmnElement="booked_Flow_2"> +      <ns2:BPMNEdge id="booked_DI_Flow_2" bpmnElement="booked_Flow_2"> 
-        <di:waypoint x="350.0" y="135.0" /> +        <ns4:waypoint x="350.0" y="135.0" /> 
-        <di:waypoint x="350.0" y="275.0" /> +        <ns4:waypoint x="350.0" y="275.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_3" bpmnElement="booked_Flow_3"> +      <ns2:BPMNEdge id="booked_DI_Flow_3" bpmnElement="booked_Flow_3"> 
-        <di:waypoint x="425.0" y="310.0" /> +        <ns4:waypoint x="425.0" y="310.0" /> 
-        <di:waypoint x="572.0" y="310.0" /> +        <ns4:waypoint x="572.0" y="310.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_4" bpmnElement="booked_Flow_4"> +      <ns2:BPMNEdge id="booked_DI_Flow_4" bpmnElement="booked_Flow_4"> 
-        <di:waypoint x="665.0" y="110.0" /> +        <ns4:waypoint x="665.0" y="110.0" /> 
-        <di:waypoint x="825.0" y="110.0" /> +        <ns4:waypoint x="825.0" y="110.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_5" bpmnElement="booked_Flow_5"> +      <ns2:BPMNEdge id="booked_DI_Flow_5" bpmnElement="booked_Flow_5"> 
-        <di:waypoint x="875.0" y="110.0" /> +        <ns4:waypoint x="875.0" y="110.0" /> 
-        <di:waypoint x="1092.0" y="110.0" /> +        <ns4:waypoint x="1092.0" y="110.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_6" bpmnElement="booked_Flow_6"> +      <ns2:BPMNEdge id="booked_DI_Flow_6" bpmnElement="booked_Flow_6"> 
-        <di:waypoint x="850.0" y="135.0" /> +        <ns4:waypoint x="850.0" y="135.0" /> 
-        <di:waypoint x="850.0" y="275.0" /> +        <ns4:waypoint x="850.0" y="275.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_7" bpmnElement="booked_Flow_7"> +      <ns2:BPMNEdge id="booked_DI_Flow_7" bpmnElement="booked_Flow_7"> 
-        <di:waypoint x="925.0" y="310.0" /> +        <ns4:waypoint x="925.0" y="310.0" /> 
-        <di:waypoint x="1085.0" y="310.0" /> +        <ns4:waypoint x="1085.0" y="310.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_8" bpmnElement="booked_Flow_8"> +      <ns2:BPMNEdge id="booked_DI_Flow_8" bpmnElement="booked_Flow_8"> 
-        <di:waypoint x="1110.0" y="335.0" /> +        <ns4:waypoint x="1110.0" y="335.0" /> 
-        <di:waypoint x="1110.0" y="492.0" /> +        <ns4:waypoint x="1110.0" y="492.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_9" bpmnElement="booked_Flow_9"> +      <ns2:BPMNEdge id="booked_DI_Flow_9" bpmnElement="booked_Flow_9"> 
-        <di:waypoint x="1135.0" y="310.0" /> +        <ns4:waypoint x="1135.0" y="310.0" /> 
-        <di:waypoint x="1295.0" y="310.0" /> +        <ns4:waypoint x="1295.0" y="310.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_10" bpmnElement="booked_Flow_10"> +      <ns2:BPMNEdge id="booked_DI_Flow_10" bpmnElement="booked_Flow_10"> 
-        <di:waypoint x="1445.0" y="310.0" /> +        <ns4:waypoint x="1445.0" y="310.0" /> 
-        <di:waypoint x="1605.0" y="310.0" /> +        <ns4:waypoint x="1605.0" y="310.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_11" bpmnElement="booked_Flow_11"> +      <ns2:BPMNEdge id="booked_DI_Flow_11" bpmnElement="booked_Flow_11"> 
-        <di:waypoint x="1655.0" y="310.0" /> +        <ns4:waypoint x="1655.0" y="310.0" /> 
-        <di:waypoint x="1815.0" y="310.0" /> +        <ns4:waypoint x="1815.0" y="310.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_12" bpmnElement="booked_Flow_12"> +      <ns2:BPMNEdge id="booked_DI_Flow_12" bpmnElement="booked_Flow_12"> 
-        <di:waypoint x="1630.0" y="335.0" /> +        <ns4:waypoint x="1630.0" y="335.0" /> 
-        <di:waypoint x="1630.0" y="485.0" /> +        <ns4:waypoint x="1630.0" y="485.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_13" bpmnElement="booked_Flow_13"> +      <ns2:BPMNEdge id="booked_DI_Flow_13" bpmnElement="booked_Flow_13"> 
-        <di:waypoint x="1655.0" y="510.0" /> +        <ns4:waypoint x="1655.0" y="510.0" /> 
-        <di:waypoint x="1750.0" y="510.0" /> +        <ns4:waypoint x="1750.0" y="510.0" /> 
-        <di:waypoint x="1820.0" y="510.0" /> +        <ns4:waypoint x="1820.0" y="510.0" /> 
-        <di:waypoint x="1820.0" y="240.0" /> +        <ns4:waypoint x="1820.0" y="240.0" /> 
-        <di:waypoint x="1890.0" y="240.0" /> +        <ns4:waypoint x="1890.0" y="240.0" /> 
-        <di:waypoint x="1890.0" y="275.0" /> +        <ns4:waypoint x="1890.0" y="275.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_14" bpmnElement="booked_Flow_14"> +      <ns2:BPMNEdge id="booked_DI_Flow_14" bpmnElement="booked_Flow_14"> 
-        <di:waypoint x="1655.0" y="510.0" /> +        <ns4:waypoint x="1655.0" y="510.0" /> 
-        <di:waypoint x="1735.0" y="510.0" /> +        <ns4:waypoint x="1735.0" y="510.0" /> 
-        <di:waypoint x="1735.0" y="610.0" /> +        <ns4:waypoint x="1735.0" y="610.0" /> 
-        <di:waypoint x="1815.0" y="610.0" /> +        <ns4:waypoint x="1815.0" y="610.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_15" bpmnElement="booked_Flow_15"> +      <ns2:BPMNEdge id="booked_DI_Flow_15" bpmnElement="booked_Flow_15"> 
-        <di:waypoint x="1965.0" y="310.0" /> +        <ns4:waypoint x="1965.0" y="310.0" /> 
-        <di:waypoint x="2125.0" y="310.0" /> +        <ns4:waypoint x="2125.0" y="310.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_16" bpmnElement="booked_Flow_16"> +      <ns2:BPMNEdge id="booked_DI_Flow_16" bpmnElement="booked_Flow_16"> 
-        <di:waypoint x="2175.0" y="310.0" /> +        <ns4:waypoint x="2175.0" y="310.0" /> 
-        <di:waypoint x="2392.0" y="310.0" /> +        <ns4:waypoint x="2392.0" y="310.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_17" bpmnElement="booked_Flow_17"> +      <ns2:BPMNEdge id="booked_DI_Flow_17" bpmnElement="booked_Flow_17"> 
-        <di:waypoint x="2175.0" y="310.0" /> +        <ns4:waypoint x="2175.0" y="310.0" /> 
-        <di:waypoint x="2270.0" y="310.0" /> +        <ns4:waypoint x="2270.0" y="310.0" /> 
-        <di:waypoint x="2270.0" y="540.0" /> +        <ns4:waypoint x="2270.0" y="540.0" /> 
-        <di:waypoint x="1890.0" y="540.0" /> +        <ns4:waypoint x="1890.0" y="540.0" /> 
-        <di:waypoint x="1890.0" y="575.0" /> +        <ns4:waypoint x="1890.0" y="575.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_18" bpmnElement="booked_Flow_18"> +      <ns2:BPMNEdge id="booked_DI_Flow_18" bpmnElement="booked_Flow_18"> 
-        <di:waypoint x="1965.0" y="610.0" /> +        <ns4:waypoint x="1965.0" y="610.0" /> 
-        <di:waypoint x="2010.0" y="610.0" /> +        <ns4:waypoint x="2010.0" y="610.0" /> 
-        <di:waypoint x="2010.0" y="740.0" /> +        <ns4:waypoint x="2010.0" y="740.0" /> 
-        <di:waypoint x="1370.0" y="740.0" /> +        <ns4:waypoint x="1370.0" y="740.0" /> 
-        <di:waypoint x="1370.0" y="855.0" /> +        <ns4:waypoint x="1370.0" y="855.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_19" bpmnElement="booked_Flow_19"> +      <ns2:BPMNEdge id="booked_DI_Flow_19" bpmnElement="booked_Flow_19"> 
-        <di:waypoint x="2485.0" y="610.0" /> +        <ns4:waypoint x="2485.0" y="610.0" /> 
-        <di:waypoint x="2530.0" y="610.0" /> +        <ns4:waypoint x="2530.0" y="610.0" /> 
-        <di:waypoint x="2530.0" y="720.0" /> +        <ns4:waypoint x="2530.0" y="720.0" /> 
-        <di:waypoint x="1370.0" y="720.0" /> +        <ns4:waypoint x="1370.0" y="720.0" /> 
-        <di:waypoint x="1370.0" y="855.0" /> +        <ns4:waypoint x="1370.0" y="855.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_20" bpmnElement="booked_Flow_20"> +      <ns2:BPMNEdge id="booked_DI_Flow_20" bpmnElement="booked_Flow_20"> 
-        <di:waypoint x="658.0" y="145.0" /> +        <ns4:waypoint x="658.0" y="145.0" /> 
-        <di:waypoint x="700.0" y="145.0" /> +        <ns4:waypoint x="700.0" y="145.0" /> 
-        <di:waypoint x="700.0" y="690.0" /> +        <ns4:waypoint x="700.0" y="690.0" /> 
-        <di:waypoint x="2410.0" y="690.0" /> +        <ns4:waypoint x="2410.0" y="690.0" /> 
-        <di:waypoint x="2410.0" y="575.0" /> +        <ns4:waypoint x="2410.0" y="575.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_21" bpmnElement="booked_Flow_21"> +      <ns2:BPMNEdge id="booked_DI_Flow_21" bpmnElement="booked_Flow_21"> 
-        <di:waypoint x="918.0" y="345.0" /> +        <ns4:waypoint x="918.0" y="345.0" /> 
-        <di:waypoint x="960.0" y="345.0" /> +        <ns4:waypoint x="960.0" y="345.0" /> 
-        <di:waypoint x="960.0" y="670.0" /> +        <ns4:waypoint x="960.0" y="670.0" /> 
-        <di:waypoint x="2410.0" y="670.0" /> +        <ns4:waypoint x="2410.0" y="670.0" /> 
-        <di:waypoint x="2410.0" y="575.0" /> +        <ns4:waypoint x="2410.0" y="575.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_22" bpmnElement="booked_Flow_22"> +      <ns2:BPMNEdge id="booked_DI_Flow_22" bpmnElement="booked_Flow_22"> 
-        <di:waypoint x="1958.0" y="345.0" /> +        <ns4:waypoint x="1958.0" y="345.0" /> 
-        <di:waypoint x="2000.0" y="345.0" /> +        <ns4:waypoint x="2000.0" y="345.0" /> 
-        <di:waypoint x="2410.0" y="345.0" /> +        <ns4:waypoint x="2410.0" y="345.0" /> 
-        <di:waypoint x="2410.0" y="575.0" /> +        <ns4:waypoint x="2410.0" y="575.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_23" bpmnElement="booked_Flow_23"> +      <ns2:BPMNEdge id="booked_DI_Flow_23" bpmnElement="booked_Flow_23"> 
-        <di:waypoint x="1395.0" y="880.0" /> +        <ns4:waypoint x="1395.0" y="880.0" /> 
-        <di:waypoint x="1503.5" y="880.0" /> +        <ns4:waypoint x="1503.5" y="880.0" /> 
-        <di:waypoint x="1503.5" y="810.0" /> +        <ns4:waypoint x="1503.5" y="810.0" /> 
-        <di:waypoint x="1612.0" y="810.0" /> +        <ns4:waypoint x="1612.0" y="810.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_24" bpmnElement="booked_Flow_24"> +      <ns2:BPMNEdge id="booked_DI_Flow_24" bpmnElement="booked_Flow_24"> 
-        <di:waypoint x="1395.0" y="880.0" /> +        <ns4:waypoint x="1395.0" y="880.0" /> 
-        <di:waypoint x="1503.5" y="880.0" /> +        <ns4:waypoint x="1503.5" y="880.0" /> 
-        <di:waypoint x="1503.5" y="1010.0" /> +        <ns4:waypoint x="1503.5" y="1010.0" /> 
-        <di:waypoint x="1612.0" y="1010.0" /> +        <ns4:waypoint x="1612.0" y="1010.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_25" bpmnElement="booked_Flow_25"> +      <ns2:BPMNEdge id="booked_DI_Flow_25" bpmnElement="booked_Flow_25"> 
-        <di:waypoint x="1648.0" y="810.0" /> +        <ns4:waypoint x="1648.0" y="810.0" /> 
-        <di:waypoint x="1731.5" y="810.0" /> +        <ns4:waypoint x="1731.5" y="810.0" /> 
-        <di:waypoint x="1731.5" y="880.0" /> +        <ns4:waypoint x="1731.5" y="880.0" /> 
-        <di:waypoint x="1815.0" y="880.0" /> +        <ns4:waypoint x="1815.0" y="880.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_26" bpmnElement="booked_Flow_26"> +      <ns2:BPMNEdge id="booked_DI_Flow_26" bpmnElement="booked_Flow_26"> 
-        <di:waypoint x="1648.0" y="1010.0" /> +        <ns4:waypoint x="1648.0" y="1010.0" /> 
-        <di:waypoint x="1731.5" y="1010.0" /> +        <ns4:waypoint x="1731.5" y="1010.0" /> 
-        <di:waypoint x="1731.5" y="880.0" /> +        <ns4:waypoint x="1731.5" y="880.0" /> 
-        <di:waypoint x="1815.0" y="880.0" /> +        <ns4:waypoint x="1815.0" y="880.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="booked_DI_Flow_27" bpmnElement="booked_Flow_27"> +      <ns2:BPMNEdge id="booked_DI_Flow_27" bpmnElement="booked_Flow_27"> 
-        <di:waypoint x="1965.0" y="880.0" /> +        <ns4:waypoint x="1965.0" y="880.0" /> 
-        <di:waypoint x="2670.0" y="880.0" /> +        <ns4:waypoint x="2670.0" y="880.0" /> 
-        <di:waypoint x="2670.0" y="25.0" /> +        <ns4:waypoint x="2670.0" y="25.0" /> 
-        <di:waypoint x="350.0" y="25.0" /> +        <ns4:waypoint x="350.0" y="25.0" /> 
-        <di:waypoint x="350.0" y="85.0" /> +        <ns4:waypoint x="350.0" y="85.0" /> 
-        <bpmndi:BPMNLabel> +        <ns2:BPMNLabel> 
-          <dc:Bounds x="2370.0" y="5.0" width="180" height="26" /> +          <ns3:Bounds x="2370.0" y="5.0" width="180" height="26" /> 
-        </bpmndi:BPMNLabel> +        </ns2:BPMNLabel> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-    </bpmndi:BPMNPlane> +    </ns2:BPMNPlane> 
-  </bpmndi:BPMNDiagram>+  </ns2:BPMNDiagram>
 </bpmn:definitions> </bpmn:definitions>
 </sharix-bpmn> </sharix-bpmn>
Строка 625: Строка 720:
 После контекста записывается локальная причина ''awaiting_pending_window''. ASAP идёт к ''move-booked-to-pending'' без ожидания планового окна. Иначе ''pending_at'' сравнивается с текущим временем runtime. Подтверждённый успех/stale исключает Ticket из очереди; обработанный доменный отказ оставляет его для повтора по ''SERVICE_REQUEST_BOOKED_RECHECK_SECONDS''. После контекста записывается локальная причина ''awaiting_pending_window''. ASAP идёт к ''move-booked-to-pending'' без ожидания планового окна. Иначе ''pending_at'' сравнивается с текущим временем runtime. Подтверждённый успех/stale исключает Ticket из очереди; обработанный доменный отказ оставляет его для повтора по ''SERVICE_REQUEST_BOOKED_RECHECK_SECONDS''.
  
-404 контекста/action означает устаревший scope и запрашивает локальную очистку. Отсутствующий либо неоднозначный связанный Orders — конфликт API, а не выбор одной записи. Ошибки авторизации, 5xx и неожиданные ответы идут в общий ''processing_error'' и ''DEFERRED_TICKET_RECHECK_SECONDS''.+Ошибки контекста и action трактуются отдельно: 
 + 
 +  * **404:** устаревший scope, запрашивается локальная очистка. 
 +  * **Нет единственного связанного Orders:** конфликт API, а не выбор произвольной записи. 
 +  * **Auth, 5xx или неожиданный ответ:** processing_error с DEFERRED_TICKET_RECHECK_SECONDS.
  
 ===== Временная граница ===== ===== Временная граница =====
Строка 641: Строка 740:
 <sharix-bpmn> <sharix-bpmn>
 <?xml version="1.0" encoding="UTF-8"?> <?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_service_booked_actions" targetNamespace="urn:sharix:knowledge:handlers">+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:ns1="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:ns2="http://www.omg.org/spec/DD/20100524/DC" xmlns:ns3="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_service_booked_actions" targetNamespace="urn:sharix:knowledge:handlers">
   <bpmn:process id="backend_Process_backend" name="Backend: окончательные права, блокировки и актуальное состояние" isExecutable="false">   <bpmn:process id="backend_Process_backend" name="Backend: окончательные права, блокировки и актуальное состояние" isExecutable="false">
     <bpmn:documentation>{"notes": ["Git built-in, BPMN isExecutable=false; handler при генерации не исполняется.", "BOOKED не рассылает предложения кандидатам.", "pending_at=planned_start − SERVICE_REQUEST_PRE_START_DURATION_SECONDS − SERVICE_REQUEST_BOOKED_PENDING_LEAD_SECONDS.", "Часы проверки границы — runtime; backend move повторно проверяет статус и отсутствие provider.", "Общий transport/202/direct actions разобран в TEMPLATE. Здесь — отличающиеся канонические действия BOOKED."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_service_request_booked.py", "repository": "sharix-open-handlers-examples", "sha256": "44e066a3ccb7ee21abc8d252a343adf1ea3cbf5e177aebb62ed2059fe1c2f2d8"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_service_request_booked.json", "repository": "sharix-open-handlers-examples", "sha256": "7096cde8b581cc80b2f0f65dcc63e95adfdfdd8bf459e9a70ee229d329a7dcfc"}, {"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"}]}</bpmn:documentation>     <bpmn:documentation>{"notes": ["Git built-in, BPMN isExecutable=false; handler при генерации не исполняется.", "BOOKED не рассылает предложения кандидатам.", "pending_at=planned_start − SERVICE_REQUEST_PRE_START_DURATION_SECONDS − SERVICE_REQUEST_BOOKED_PENDING_LEAD_SECONDS.", "Часы проверки границы — runtime; backend move повторно проверяет статус и отсутствие provider.", "Общий transport/202/direct actions разобран в TEMPLATE. Здесь — отличающиеся канонические действия BOOKED."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_service_request_booked.py", "repository": "sharix-open-handlers-examples", "sha256": "44e066a3ccb7ee21abc8d252a343adf1ea3cbf5e177aebb62ed2059fe1c2f2d8"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_service_request_booked.json", "repository": "sharix-open-handlers-examples", "sha256": "7096cde8b581cc80b2f0f65dcc63e95adfdfdd8bf459e9a70ee229d329a7dcfc"}, {"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"}]}</bpmn:documentation>
Строка 733: Строка 832:
     <bpmn:messageFlow id="Message_service_booked_actions_1" sourceRef="runtime_Participant" targetRef="backend_move" name="Узкое действие handler, не generic ticket.transition" />     <bpmn:messageFlow id="Message_service_booked_actions_1" sourceRef="runtime_Participant" targetRef="backend_move" name="Узкое действие handler, не generic ticket.transition" />
   </bpmn:collaboration>   </bpmn:collaboration>
-  <bpmndi:BPMNDiagram id="Diagram_service_booked_actions"> +  <ns1:BPMNDiagram id="Diagram_service_booked_actions"> 
-    <bpmndi:BPMNPlane id="Plane_service_booked_actions" bpmnElement="Collaboration_service_booked_actions"> +    <ns1:BPMNPlane id="Plane_service_booked_actions" bpmnElement="Collaboration_service_booked_actions"> 
-      <bpmndi:BPMNShape id="DI_person_Participant" bpmnElement="person_Participant" isHorizontal="true"> +      <ns1:BPMNShape id="DI_person_Participant" bpmnElement="person_Participant" isHorizontal="true"> 
-        <dc:Bounds x="0" y="0" width="1900" height="90" /> +        <ns2:Bounds x="0" y="0" width="2080.0" height="90" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="DI_runtime_Participant" bpmnElement="runtime_Participant" isHorizontal="true"> +      <ns1:BPMNShape id="DI_runtime_Participant" bpmnElement="runtime_Participant" isHorizontal="true"> 
-        <dc:Bounds x="0" y="220" width="1900" height="90" /> +        <ns2:Bounds x="0" y="220" width="1900" height="90" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_Pool_backend" bpmnElement="backend_Pool_backend" isHorizontal="true"> +      <ns1:BPMNShape id="backend_DI_Pool_backend" bpmnElement="backend_Pool_backend" isHorizontal="true"> 
-        <dc:Bounds x="0.0" y="450.0" width="1420" height="800" /> +        <ns2:Bounds x="0.0" y="450.0" width="1420" height="800" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_Lane_user" bpmnElement="backend_Lane_user" isHorizontal="true"> +      <ns1:BPMNShape id="backend_DI_Lane_user" bpmnElement="backend_Lane_user" isHorizontal="true"> 
-        <dc:Bounds x="30.0" y="450.0" width="1390" height="390.0" /> +        <ns2:Bounds x="30.0" y="450.0" width="1390" height="390.0" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_Lane_worker" bpmnElement="backend_Lane_worker" isHorizontal="true"> +      <ns1:BPMNShape id="backend_DI_Lane_worker" bpmnElement="backend_Lane_worker" isHorizontal="true"> 
-        <dc:Bounds x="30.0" y="840.0" width="1390" height="410.0" /> +        <ns2:Bounds x="30.0" y="840.0" width="1390" height="410.0" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_user" bpmnElement="backend_user"> +      <ns1:BPMNShape id="backend_DI_user" bpmnElement="backend_user"> 
-        <dc:Bounds x="132.0" y="532.0" width="36" height="36" /> +        <ns2:Bounds x="132.0" y="532.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_acl" bpmnElement="backend_acl"> +      <ns1:BPMNShape id="backend_DI_acl" bpmnElement="backend_acl"> 
-        <dc:Bounds x="345.0" y="515.0" width="150" height="70" /> +        <ns2:Bounds x="345.0" y="515.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_choice" bpmnElement="backend_choice"> +      <ns1:BPMNShape id="backend_DI_choice" bpmnElement="backend_choice"> 
-        <dc:Bounds x="675.0" y="525.0" width="50" height="50" /> +        <ns2:Bounds x="675.0" y="525.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_take" bpmnElement="backend_take"> +      <ns1:BPMNShape id="backend_DI_take" bpmnElement="backend_take"> 
-        <dc:Bounds x="905.0" y="515.0" width="150" height="70" /> +        <ns2:Bounds x="905.0" y="515.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_taken" bpmnElement="backend_taken"> +      <ns1:BPMNShape id="backend_DI_taken" bpmnElement="backend_taken"> 
-        <dc:Bounds x="1242.0" y="532.0" width="36" height="36" /> +        <ns2:Bounds x="1242.0" y="532.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_cancel" bpmnElement="backend_cancel"> +      <ns1:BPMNShape id="backend_DI_cancel" bpmnElement="backend_cancel"> 
-        <dc:Bounds x="905.0" y="695.0" width="150" height="70" /> +        <ns2:Bounds x="905.0" y="695.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_cancelled" bpmnElement="backend_cancelled"> +      <ns1:BPMNShape id="backend_DI_cancelled" bpmnElement="backend_cancelled"> 
-        <dc:Bounds x="1242.0" y="712.0" width="36" height="36" /> +        <ns2:Bounds x="1242.0" y="712.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_move" bpmnElement="backend_move"> +      <ns1:BPMNShape id="backend_DI_move" bpmnElement="backend_move"> 
-        <dc:Bounds x="132.0" y="932.0" width="36" height="36" /> +        <ns2:Bounds x="132.0" y="932.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_scope" bpmnElement="backend_scope"> +      <ns1:BPMNShape id="backend_DI_scope" bpmnElement="backend_scope"> 
-        <dc:Bounds x="345.0" y="915.0" width="150" height="70" /> +        <ns2:Bounds x="345.0" y="915.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_state" bpmnElement="backend_state"> +      <ns1:BPMNShape id="backend_DI_state" bpmnElement="backend_state"> 
-        <dc:Bounds x="675.0" y="925.0" width="50" height="50" /> +        <ns2:Bounds x="675.0" y="925.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_save" bpmnElement="backend_save"> +      <ns1:BPMNShape id="backend_DI_save" bpmnElement="backend_save"> 
-        <dc:Bounds x="905.0" y="915.0" width="150" height="70" /> +        <ns2:Bounds x="905.0" y="915.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_done" bpmnElement="backend_done"> +      <ns1:BPMNShape id="backend_DI_done" bpmnElement="backend_done"> 
-        <dc:Bounds x="1242.0" y="932.0" width="36" height="36" /> +        <ns2:Bounds x="1242.0" y="932.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNShape id="backend_DI_reject" bpmnElement="backend_reject"> +      <ns1:BPMNShape id="backend_DI_reject" bpmnElement="backend_reject"> 
-        <dc:Bounds x="682.0" y="1132.0" width="36" height="36" /> +        <ns2:Bounds x="682.0" y="1132.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns1:BPMNShape> 
-      <bpmndi:BPMNEdge id="backend_DI_Flow_0" bpmnElement="backend_Flow_0"> +      <ns1:BPMNEdge id="backend_DI_Flow_0" bpmnElement="backend_Flow_0"> 
-        <di:waypoint x="168.0" y="550.0" /> +        <ns3:waypoint x="168.0" y="550.0" /> 
-        <di:waypoint x="345.0" y="550.0" /> +        <ns3:waypoint x="345.0" y="550.0" /> 
-      </bpmndi:BPMNEdge> +      </ns1:BPMNEdge> 
-      <bpmndi:BPMNEdge id="backend_DI_Flow_1" bpmnElement="backend_Flow_1"> +      <ns1:BPMNEdge id="backend_DI_Flow_1" bpmnElement="backend_Flow_1"> 
-        <di:waypoint x="495.0" y="550.0" /> +        <ns3:waypoint x="495.0" y="550.0" /> 
-        <di:waypoint x="675.0" y="550.0" /> +        <ns3:waypoint x="675.0" y="550.0" /> 
-      </bpmndi:BPMNEdge> +      </ns1:BPMNEdge> 
-      <bpmndi:BPMNEdge id="backend_DI_Flow_2" bpmnElement="backend_Flow_2"> +      <ns1:BPMNEdge id="backend_DI_Flow_2" bpmnElement="backend_Flow_2"> 
-        <di:waypoint x="725.0" y="550.0" /> +        <ns3:waypoint x="725.0" y="550.0" /> 
-        <di:waypoint x="905.0" y="550.0" /> +        <ns3:waypoint x="905.0" y="550.0" /> 
-      </bpmndi:BPMNEdge> +      </ns1:BPMNEdge> 
-      <bpmndi:BPMNEdge id="backend_DI_Flow_3" bpmnElement="backend_Flow_3"> +      <ns1:BPMNEdge id="backend_DI_Flow_3" bpmnElement="backend_Flow_3"> 
-        <di:waypoint x="1055.0" y="550.0" /> +        <ns3:waypoint x="1055.0" y="550.0" /> 
-        <di:waypoint x="1242.0" y="550.0" /> +        <ns3:waypoint x="1242.0" y="550.0" /> 
-      </bpmndi:BPMNEdge> +      </ns1:BPMNEdge> 
-      <bpmndi:BPMNEdge id="backend_DI_Flow_4" bpmnElement="backend_Flow_4"> +      <ns1:BPMNEdge id="backend_DI_Flow_4" bpmnElement="backend_Flow_4"> 
-        <di:waypoint x="725.0" y="550.0" /> +        <ns3:waypoint x="725.0" y="550.0" /> 
-        <di:waypoint x="815.0" y="550.0" /> +        <ns3:waypoint x="815.0" y="550.0" /> 
-        <di:waypoint x="815.0" y="730.0" /> +        <ns3:waypoint x="815.0" y="730.0" /> 
-        <di:waypoint x="905.0" y="730.0" /> +        <ns3:waypoint x="905.0" y="730.0" /> 
-      </bpmndi:BPMNEdge> +      </ns1:BPMNEdge> 
-      <bpmndi:BPMNEdge id="backend_DI_Flow_5" bpmnElement="backend_Flow_5"> +      <ns1:BPMNEdge id="backend_DI_Flow_5" bpmnElement="backend_Flow_5"> 
-        <di:waypoint x="1055.0" y="730.0" /> +        <ns3:waypoint x="1055.0" y="730.0" /> 
-        <di:waypoint x="1242.0" y="730.0" /> +        <ns3:waypoint x="1242.0" y="730.0" /> 
-      </bpmndi:BPMNEdge> +      </ns1:BPMNEdge> 
-      <bpmndi:BPMNEdge id="backend_DI_Flow_6" bpmnElement="backend_Flow_6"> +      <ns1:BPMNEdge id="backend_DI_Flow_6" bpmnElement="backend_Flow_6"> 
-        <di:waypoint x="168.0" y="950.0" /> +        <ns3:waypoint x="168.0" y="950.0" /> 
-        <di:waypoint x="345.0" y="950.0" /> +        <ns3:waypoint x="345.0" y="950.0" /> 
-      </bpmndi:BPMNEdge> +      </ns1:BPMNEdge> 
-      <bpmndi:BPMNEdge id="backend_DI_Flow_7" bpmnElement="backend_Flow_7"> +      <ns1:BPMNEdge id="backend_DI_Flow_7" bpmnElement="backend_Flow_7"> 
-        <di:waypoint x="495.0" y="950.0" /> +        <ns3:waypoint x="495.0" y="950.0" /> 
-        <di:waypoint x="675.0" y="950.0" /> +        <ns3:waypoint x="675.0" y="950.0" /> 
-      </bpmndi:BPMNEdge> +      </ns1:BPMNEdge> 
-      <bpmndi:BPMNEdge id="backend_DI_Flow_8" bpmnElement="backend_Flow_8"> +      <ns1:BPMNEdge id="backend_DI_Flow_8" bpmnElement="backend_Flow_8"> 
-        <di:waypoint x="725.0" y="950.0" /> +        <ns3:waypoint x="725.0" y="950.0" /> 
-        <di:waypoint x="905.0" y="950.0" /> +        <ns3:waypoint x="905.0" y="950.0" /> 
-      </bpmndi:BPMNEdge> +      </ns1:BPMNEdge> 
-      <bpmndi:BPMNEdge id="backend_DI_Flow_9" bpmnElement="backend_Flow_9"> +      <ns1:BPMNEdge id="backend_DI_Flow_9" bpmnElement="backend_Flow_9"> 
-        <di:waypoint x="1055.0" y="950.0" /> +        <ns3:waypoint x="1055.0" y="950.0" /> 
-        <di:waypoint x="1242.0" y="950.0" /> +        <ns3:waypoint x="1242.0" y="950.0" /> 
-      </bpmndi:BPMNEdge> +      </ns1:BPMNEdge> 
-      <bpmndi:BPMNEdge id="backend_DI_Flow_10" bpmnElement="backend_Flow_10"> +      <ns1:BPMNEdge id="backend_DI_Flow_10" bpmnElement="backend_Flow_10"> 
-        <di:waypoint x="700.0" y="975.0" /> +        <ns3:waypoint x="700.0" y="975.0" /> 
-        <di:waypoint x="700.0" y="1132.0" /> +        <ns3:waypoint x="700.0" y="1132.0" /> 
-      </bpmndi:BPMNEdge> +      </ns1:BPMNEdge> 
-      <bpmndi:BPMNEdge id="DI_Message_service_booked_actions_0" bpmnElement="Message_service_booked_actions_0"> +      <ns1:BPMNEdge id="DI_Message_service_booked_actions_0" bpmnElement="Message_service_booked_actions_0"> 
-        <di:waypoint x="150" y="90" /> +        <ns3:waypoint x="150" y="90" /> 
-        <di:waypoint x="150" y="532" /> +        <ns3:waypoint x="150" y="532" /> 
-        <bpmndi:BPMNLabel> +        <ns1:BPMNLabel> 
-          <dc:Bounds x="170" y="360" width="260" height="42" /> +          <ns2:Bounds x="170" y="360" width="260" height="42" /> 
-        </bpmndi:BPMNLabel> +        </ns1:BPMNLabel> 
-      </bpmndi:BPMNEdge> +      </ns1:BPMNEdge> 
-      <bpmndi:BPMNEdge id="DI_Message_service_booked_actions_1" bpmnElement="Message_service_booked_actions_1"> +      <ns1:BPMNEdge id="DI_Message_service_booked_actions_1" bpmnElement="Message_service_booked_actions_1"> 
-        <di:waypoint x="1880" y="310" /> +        <ns3:waypoint x="1880" y="310" /> 
-        <di:waypoint x="2040" y="310" /> +        <ns3:waypoint x="2040" y="310" /> 
-        <di:waypoint x="2040" y="900" /> +        <ns3:waypoint x="2040" y="900" /> 
-        <di:waypoint x="150" y="900" /> +        <ns3:waypoint x="150" y="900" /> 
-        <di:waypoint x="150" y="932" /> +        <ns3:waypoint x="150" y="932" /> 
-        <bpmndi:BPMNLabel> +        <ns1:BPMNLabel> 
-          <dc:Bounds x="1000" y="865" width="260" height="42" /> +          <ns2:Bounds x="1000" y="865" width="260" height="42" /> 
-        </bpmndi:BPMNLabel> +        </ns1:BPMNLabel> 
-      </bpmndi:BPMNEdge> +      </ns1:BPMNEdge> 
-    </bpmndi:BPMNPlane> +    </ns1:BPMNPlane> 
-  </bpmndi:BPMNDiagram>+  </ns1:BPMNDiagram>
 </bpmn:definitions> </bpmn:definitions>
 </sharix-bpmn> </sharix-bpmn>
Строка 881: Строка 980:
 Defer хранится в памяти и освобождает worker. Новая authoritative revision либо разрешённый queued intent могут сделать Ticket готовым раньше; повтор того же снимка не сбрасывает обычное ожидание. Фактический запуск зависит от соединения и свободного worker. Ошибка API-списка не равна подтверждённой пустой очереди. Defer хранится в памяти и освобождает worker. Новая authoritative revision либо разрешённый queued intent могут сделать Ticket готовым раньше; повтор того же снимка не сбрасывает обычное ожидание. Фактический запуск зависит от соединения и свободного worker. Ошибка API-списка не равна подтверждённой пустой очереди.
  
-При долгом BOOKED проверьте ASAP, planned_start/pending_at, именованные настройки и актуальный provider. BOOKED с уже заполненным provider может получать доменный отказ перехода в PENDING и требует разбора согласованности, а не удаления provider ради успешной проверки. Для пользовательского take различайте relay, окончательный результат, подготовленные проверки и сохранённый ASSIGNED. Само ожидание планового окна штатно; отсутствие предложений кандидатам в этой стадии не доказывает поломку раунда PENDING.+При долгом BOOKED проверить: 
 + 
 +  * ASAP, planned_start и pending_at; 
 +  * действующие именованные параметры времени; 
 +  * актуальный provider; 
 +  * для take — результат relay, канонического действия, подготовленных проверок и сохранённый ASSIGNED. 
 + 
 +BOOKED с заполненным provider требует разбора согласованности; удалять provider ради успешного PENDING нельзя. Ожидание планового окна штатно. Предложения кандидатам относятся к PENDING, поэтому их отсутствие в BOOKED само по себе не означает поломку.
  
 ===== Проверенные источники ===== ===== Проверенные источники =====
sharixopen/knowledge/scenarios/service_request_booked.1793219201.txt.gz · Последнее изменение: — sx_knowledge_api_open

© 2022 ShariX