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

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


sharixopen:knowledge:scenarios:st_request_inprocess

Различия

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

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

Следующая версия
Предыдущая версия
sharixopen:knowledge:scenarios:st_request_inprocess [2026/10/28 19:14] – [sharixknowledge] approved package sx_knowledge_api_opensharixopen:knowledge:scenarios:st_request_inprocess [2026/10/31 11:50] (текущий) – [sharixknowledge] approved package sx_knowledge_api_open
Строка 16: Строка 16:
             "ShariXKnowledgeOpenKnowledgeOperationsRuntimehealth",             "ShariXKnowledgeOpenKnowledgeOperationsRuntimehealth",
             "ShariXKnowledgeScenarios"             "ShariXKnowledgeScenarios"
 +        ],
 +        "depends_on": [
 +            "ShariXKnowledgeOpenKnowledgeModulesHandlers"
 +        ],
 +        "verified_by": [
 +            "ShariXKnowledgeVerification"
         ]         ]
     },     },
Строка 22: Строка 28:
             "domain": "business_processes",             "domain": "business_processes",
             "lifecycle": "implemented",             "lifecycle": "implemented",
-            "component": "handlers",+            "component": "handlers_examples, handlers_backend, tickets, dbsynce",
             "parents": [             "parents": [
                 "ShariXKnowledgeScenarios"                 "ShariXKnowledgeScenarios"
             ],             ],
             "terms": [             "terms": [
-                "ST_REQUEST", +                "audience_developer", 
-                "IN_PROCESS", +                "audience_integrator", 
-                "verification", +                "audience_support", 
-                "BPMN"+                "audience_reviewer", 
 +                "audience_ai", 
 +                "product_sharix_open", 
 +                "material_scenario", 
 +                "topic_handlers_support", 
 +                "topic_security_requirements", 
 +                "topic_handlers_blockly", 
 +                "st_request", 
 +                "ticket_in_process", 
 +                "verification_workflow", 
 +                "bpmn", 
 +                "ticket", 
 +                "blockly", 
 +                "generated_python", 
 +                "provenance", 
 +                "requirements"
             ]             ]
         },         },
Строка 169: Строка 190:
                 "path": "lib/integration_ports.py",                 "path": "lib/integration_ports.py",
                 "sha256": "d079ec56e6709b29d7755e47d2a88d423235fe8eb1bf7a92851ae25d74bf1066"                 "sha256": "d079ec56e6709b29d7755e47d2a88d423235fe8eb1bf7a92851ae25d74bf1066"
 +            },
 +            {
 +                "repository": "sharix-open-tickets",
 +                "commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14",
 +                "path": "models/ticket.py",
 +                "sha256": "4768d9ef47b61bf3ae98bf2749ed142adc477978b44de29177363ba9664baa43"
             }             }
         ],         ],
Строка 183: Строка 210:
                 "external": "3e5e98157d24f8d5033e64a74ed0b80e9f1d04b5ef996b83dd4b4f5ff822f114"                 "external": "3e5e98157d24f8d5033e64a74ed0b80e9f1d04b5ef996b83dd4b4f5ff822f114"
             }             }
 +        },
 +        "diagram_view_bounds": {
 +            "reviewed_on": "2026-10-29",
 +            "models": [
 +                "logic"
 +            ],
 +            "semantics_unchanged": true,
 +            "utility": "tools/expand_bpmn_view_bounds.py",
 +            "utility_sha256": "f878658b0115773e34f6c3eec72eba5984d873e60d8e2a4336b3dfb2a8026d87"
 +        },
 +        "classification": {
 +            "schema": "sharix.knowledge.classification.v1",
 +            "products": [
 +                "sharix_open"
 +            ],
 +            "audiences": [
 +                "developer",
 +                "integrator",
 +                "support",
 +                "reviewer",
 +                "ai"
 +            ],
 +            "material": "scenario",
 +            "topics": [
 +                "handlers/support",
 +                "security/requirements",
 +                "handlers/blockly"
 +            ],
 +            "tag_terms": [
 +                "audience_developer",
 +                "audience_integrator",
 +                "audience_support",
 +                "audience_reviewer",
 +                "audience_ai",
 +                "product_sharix_open",
 +                "material_scenario",
 +                "topic_handlers_support",
 +                "topic_security_requirements",
 +                "topic_handlers_blockly",
 +                "st_request",
 +                "ticket_in_process",
 +                "verification_workflow",
 +                "bpmn",
 +                "ticket",
 +                "blockly",
 +                "generated_python",
 +                "provenance",
 +                "requirements"
 +            ],
 +            "registry_document": "ShariXKnowledgeClassification",
 +            "state_meaning": "implemented — описана проверенная реализация исходников; серверный runtime отдельно; review — состояние текста"
 +        },
 +        "editorial_review": {
 +            "date": "2026-10-31",
 +            "scope": "Конкретизация шагов, участников, условий, результатов и диагностики; перечисления; BPMN сохранены побайтово",
 +            "current_source_records_verified": 23,
 +            "original_source_evidence_recheck": "Все исходные commits и SHA-256 повторно совпали после git fetch; дополнительные функциональные источники включены в source_evidence",
 +            "canonical_regeneration": {
 +                "both_python_copies_match": true,
 +                "generator_sources_verified": 11,
 +                "handler_executed": false
 +            },
 +            "runtime_checked": false
         }         }
     },     },
-    "content_sha256": "c0d4b431df5c76b93d34be4af2b2bbd3ea104c408a196b7a0bfa3b9b77d9adf6",+    "content_sha256": "82b312aaaadefb1e5d8f9d650327088b0327bfd6489c4ad6fee60c61cb29d93f",
     "schema": 1     "schema": 1
 } }
Строка 192: Строка 282:
 ~~NOCACHE~~ ~~NOCACHE~~
  
-**Область:** ShariX Open. **Обработчик:** ''open_st_request_inprocess'', тип ''ST_REQUEST'' (1), рабочий статус ''IN_PROCESS''. Описана опубликованная встроенная реализация и изученные внешние контракты на 28.10.2026. Сгенерированный Python побайтово совпадает с результатом канонического renderer Blockly workspace. Выбранная версия на конкретной установке, её настройки и доступность API/XMPP проверяются отдельно.+**Назначение:** [[sharixopen:knowledge:classification:materials#scenarij_processa|Сценарий процесса]]. **Продукт:** [[sharixopen:knowledge:classification:products#sharix_open|ShariX Open]]. 
 + 
 +**Для кого:** [[sharixopen:knowledge:classification:audiences#razrabotchik|Разработчик]] · [[sharixopen:knowledge:classification:audiences#integrator|Интегратор]] · [[sharixopen:knowledge:classification:audiences#podderzhka|Поддержка]] · [[sharixopen:knowledge:classification:audiences#recenzent_i_prijomschik|Рецензент и приёмщик]] · [[sharixopen:knowledge:classification:audiences#nejroset|Нейросеть]]. 
 + 
 +**Темы:** [[sharixopen:knowledge:classification:topics#st_request|Обработчики → ST_REQUEST]] · [[sharixopen:knowledge:classification:topics#trebovanija|Доступ → Требования]] · [[sharixopen:knowledge:classification:topics#blockly|Обработчики → Blockly]]. 
 + 
 + 
 + 
 +**Область:** ShariX Open. **Обработчик:** ''open_st_request_inprocess'', тип ''ST_REQUEST'' (1), рабочий статус ''IN_PROCESS''. 31.10.2026 исходники повторно получены из Git: обе Python-копии совпали с новой канонической генерацией Blockly, проверены 11 исходников генераторов. Сам handler не исполнялся. Выбранная серверная версия, её настройки и работающие API/XMPP проверяются отдельно.
  
 ===== Назначение и границы ===== ===== Назначение и границы =====
-Обработчик сопровождает обращение на стадии выполнения. Сначала он проверяет рабочий статус, затем стабильный контракт в ''Ticket.json''. Контракты ''document-verification-v1'' и ''requirement-check-v1'' идут в профильный workflow **до проверки** ''STREQ_AUTOACCEPT''. При REST-снимке контракт читается непосредственно из metadata; при первоначальном XMPP-конверте учитывается вложенное поле ''json''. Название карточки не определяет её контракт.+Обработчик сопровождает обращение на стадии выполнения. Порядок выбора ветви: 
 + 
 +  - Проверить, что локальный снимок имеет рабочий статус IN_PROCESS. 
 +  - Прочитать стабильный контракт из Ticket.json: document-verification-v1 или requirement-check-v1. 
 +  - Для профильного контракта вызвать организацию проверки и advance; до STREQ_AUTOACCEPT эта ветвь не доходит. 
 +  - Для обычного обращения использовать STREQ_AUTOACCEPT: ожидать действия пользователя либо запросить DONE. 
 + 
 +В REST-снимке контракт читается непосредственно из metadata, в первоначальном XMPP-конверте учитывается вложенное поле json. Заголовок обращения не определяет контракт. 
 + 
 +Результат зависит от вида обращения:
  
-Для обычного обращения отключённый ''STREQ_AUTOACCEPT'' означает ожидание работы пользователя, включённый — запрос перехода в ''DONE''. Сам обработчик не исполняет текст обращения, не доказывает устранение проблемы и не выполняет ручную проверку. Для профильных контрактов autoaccept не заменяет решение проверяющего или доменную политику результата.+  * **Обычное, STREQ_AUTOACCEPT выключен:** ожидание работы пользователя. 
 +  * **Обычное, STREQ_AUTOACCEPT включён:** запрос DONE; содержание обращения при этом не исполняется и исправление проблемы не доказывается. 
 +  * **Профильная проверка:** решение определяется состоянием документа/попытки проверки и доменными правилами; autoaccept не заменяет проверяющего.
  
 End event на схемах завершает показанный проход или операцию. Все процессы помечены ''isExecutable=false'': просмотрщик Wiki их не запускает. Runtime исполняет выбранный проверенный Python, полученный из Blockly; XML BPMN служит описанием реализации. End event на схемах завершает показанный проход или операцию. Все процессы помечены ''isExecutable=false'': просмотрщик Wiki их не запускает. Runtime исполняет выбранный проверенный Python, полученный из Blockly; XML BPMN служит описанием реализации.
Строка 204: Строка 313:
 <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_st_inprocess_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_st_inprocess_logic" targetNamespace="urn:sharix:knowledge:handlers">
   <bpmn:process id="ip_Process_ip" name="open_st_request_inprocess: один проход Python и локальное ожидание" isExecutable="false">   <bpmn:process id="ip_Process_ip" name="open_st_request_inprocess: один проход Python и локальное ожидание" isExecutable="false">
     <bpmn:documentation>{"notes": ["Опубликованный Git built-in; не подтверждение выбранной версии на любом сервере.", "Процессы не исполняются просмотрщиком. End event завершает показанную операцию, не всю заявку.", "deferred_until — символ локального срока, не имя параметра конфигурации."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_st_request_inprocess.json", "repository": "sharix-open-handlers-examples", "sha256": "aedf573066b509bc1d7177d08530ae2ed1a5e896c8745e02edaed27e3d561313"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_inprocess.py", "repository": "sharix-open-handlers-examples", "sha256": "7dc2424c827ba4dc04971a8691d0e624566c6b4cb409cffec2e552dcad2aca4d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_done.py", "repository": "sharix-open-handlers-examples", "sha256": "b6ae4733904d9ba8e691f43235d4836d201ac019ff99982d532816bfdc89bf31"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_wontfix.py", "repository": "sharix-open-handlers-examples", "sha256": "ece9fb7e09ee0e401e91d5d274d6b151b51d1364ba698b835c929e6416f90f03"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "catalog.py", "repository": "sharix-open-handlers-examples", "sha256": "e3dcb72b7e620e2837adacd7af053f35b04cdff475789496d9c114e17d57dfde"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/blockly_runtime.py", "repository": "sharix-open-handlers-backend", "sha256": "3e222150cbff315077c6c9b160d46e59856cedf6d6591d213e958c63cb2f2428"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/requesters.py", "repository": "sharix-open-handlers-backend", "sha256": "965a348cea477722bbaf4c8c6b06023eb238b71664a332f7ea8c90bfe72ea808"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_blockly_codegen.py", "repository": "sharix-open-handlers-backend", "sha256": "bce71eab622922f8dd0954222842349799b60e18a0ab6310cc3e5f305603661e"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_codegen_contract.json", "repository": "sharix-open-handlers-backend", "sha256": "0bfd2b0ebb07bd380ed3c867386536ab88ef7dfa6e13f1cd8c91d32bb02c1ae9"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/verification_results.py", "repository": "sharix-open-tickets", "sha256": "682c5f6869373e649d6d62f44e63e8fb3bb34cf6bfc85d0187b26b2c96984e91"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/st_request_contracts.py", "repository": "sharix-open-tickets", "sha256": "9c1553437dbff63c608504ee000fa67a9be6e9887b1df0599552aa4d9141276c"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"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": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_workflow.py", "repository": "sharix-open-backend", "sha256": "0f699a4e16760cbbdd09d894093c685ba69073fedf0522852cb1fdc9811636e3"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_workflow.py", "repository": "sharix-open-backend", "sha256": "9fe62f8344d7fd78e5af0ce025c82ba4f7d21759e71f518df1186a1d6a4a0644"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_algorithms.py", "repository": "sharix-open-backend", "sha256": "9e55e4119051847bb3596c3563b9b151ee92b660e89c39c533b16ed6b4a2099e"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_responsibility.py", "repository": "sharix-open-backend", "sha256": "7919b83c89cb4214545ea2c2db0cffac09af892b190ce3af72348d688abb9cf4"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_checks.py", "repository": "sharix-open-backend", "sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/integration_ports.py", "repository": "sharix-open-backend", "sha256": "d079ec56e6709b29d7755e47d2a88d423235fe8eb1bf7a92851ae25d74bf1066"}]}</bpmn:documentation>     <bpmn:documentation>{"notes": ["Опубликованный Git built-in; не подтверждение выбранной версии на любом сервере.", "Процессы не исполняются просмотрщиком. End event завершает показанную операцию, не всю заявку.", "deferred_until — символ локального срока, не имя параметра конфигурации."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_st_request_inprocess.json", "repository": "sharix-open-handlers-examples", "sha256": "aedf573066b509bc1d7177d08530ae2ed1a5e896c8745e02edaed27e3d561313"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_inprocess.py", "repository": "sharix-open-handlers-examples", "sha256": "7dc2424c827ba4dc04971a8691d0e624566c6b4cb409cffec2e552dcad2aca4d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_done.py", "repository": "sharix-open-handlers-examples", "sha256": "b6ae4733904d9ba8e691f43235d4836d201ac019ff99982d532816bfdc89bf31"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_st_request_wontfix.py", "repository": "sharix-open-handlers-examples", "sha256": "ece9fb7e09ee0e401e91d5d274d6b151b51d1364ba698b835c929e6416f90f03"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "catalog.py", "repository": "sharix-open-handlers-examples", "sha256": "e3dcb72b7e620e2837adacd7af053f35b04cdff475789496d9c114e17d57dfde"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/blockly_runtime.py", "repository": "sharix-open-handlers-backend", "sha256": "3e222150cbff315077c6c9b160d46e59856cedf6d6591d213e958c63cb2f2428"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/requesters.py", "repository": "sharix-open-handlers-backend", "sha256": "965a348cea477722bbaf4c8c6b06023eb238b71664a332f7ea8c90bfe72ea808"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_blockly_codegen.py", "repository": "sharix-open-handlers-backend", "sha256": "bce71eab622922f8dd0954222842349799b60e18a0ab6310cc3e5f305603661e"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "ticket_codegen_contract.json", "repository": "sharix-open-handlers-backend", "sha256": "0bfd2b0ebb07bd380ed3c867386536ab88ef7dfa6e13f1cd8c91d32bb02c1ae9"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/verification_results.py", "repository": "sharix-open-tickets", "sha256": "682c5f6869373e649d6d62f44e63e8fb3bb34cf6bfc85d0187b26b2c96984e91"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "services/st_request_contracts.py", "repository": "sharix-open-tickets", "sha256": "9c1553437dbff63c608504ee000fa67a9be6e9887b1df0599552aa4d9141276c"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "views/ticket_detail.py", "repository": "sharix-open-tickets", "sha256": "05d344b0fba14cf895400694d4a18f486c800fef08dd1acb43ea46909b9e7e59"}, {"commit": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "utils.py", "repository": "sharix-open-tickets", "sha256": "a5680205c6522e1d9a74d9d267fe9ee96faf6f06436b00877fc0a93d80234bf5"}, {"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": "fd64704d7d9f01a5ec5b7b89cbc5afe5102b2c14", "path": "api/views/handler_workflow.py", "repository": "sharix-open-tickets", "sha256": "f97c4b467a9a30749f5c4b86b39a833c430e57aaa1f030f70030d9b5c609d368"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "apiviews/handler_workflow.py", "repository": "sharix-open-backend", "sha256": "0f699a4e16760cbbdd09d894093c685ba69073fedf0522852cb1fdc9811636e3"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_workflow.py", "repository": "sharix-open-backend", "sha256": "9fe62f8344d7fd78e5af0ce025c82ba4f7d21759e71f518df1186a1d6a4a0644"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_algorithms.py", "repository": "sharix-open-backend", "sha256": "9e55e4119051847bb3596c3563b9b151ee92b660e89c39c533b16ed6b4a2099e"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/verification_responsibility.py", "repository": "sharix-open-backend", "sha256": "7919b83c89cb4214545ea2c2db0cffac09af892b190ce3af72348d688abb9cf4"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/requirement_checks.py", "repository": "sharix-open-backend", "sha256": "5a73a6e71307e734f0c0e480fd14a825a7a22242811e2523b7f25157224cf34c"}, {"commit": "778a3280cee115ba0efe3fdff7b0e708b0c10093", "path": "lib/integration_ports.py", "repository": "sharix-open-backend", "sha256": "d079ec56e6709b29d7755e47d2a88d423235fe8eb1bf7a92851ae25d74bf1066"}]}</bpmn:documentation>
Строка 371: Строка 480:
     <bpmn:participant id="ip_Pool_ip" name="open_st_request_inprocess: один проход Python и локальное ожидание" processRef="ip_Process_ip" />     <bpmn:participant id="ip_Pool_ip" name="open_st_request_inprocess: один проход Python и локальное ожидание" processRef="ip_Process_ip" />
   </bpmn:collaboration>   </bpmn:collaboration>
-  <bpmndi:BPMNDiagram id="Diagram_st_inprocess_logic"> +  <ns2:BPMNDiagram id="Diagram_st_inprocess_logic"> 
-    <bpmndi:BPMNPlane id="Plane_st_inprocess_logic" bpmnElement="Collaboration_st_inprocess_logic"> +    <ns2:BPMNPlane id="Plane_st_inprocess_logic" bpmnElement="Collaboration_st_inprocess_logic"> 
-      <bpmndi:BPMNShape id="ip_DI_Pool_ip" bpmnElement="ip_Pool_ip" isHorizontal="true"> +      <ns2:BPMNShape id="ip_DI_Pool_ip" bpmnElement="ip_Pool_ip" isHorizontal="true"> 
-        <dc:Bounds x="0.0" y="0.0" width="1720" height="1060" /> +        <ns3:Bounds x="0.0" y="0.0" width="1920.0" height="1060.0" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_Lane_worker" bpmnElement="ip_Lane_worker" isHorizontal="true"> +      <ns2:BPMNShape id="ip_DI_Lane_worker" bpmnElement="ip_Lane_worker" isHorizontal="true"> 
-        <dc:Bounds x="30.0" y="0.0" width="1690" height="700.0" /> +        <ns3:Bounds x="30.0" y="0.0" width="1890.0" height="700.0" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_Lane_queue" bpmnElement="ip_Lane_queue" isHorizontal="true"> +      <ns2:BPMNShape id="ip_DI_Lane_queue" bpmnElement="ip_Lane_queue" isHorizontal="true"> 
-        <dc:Bounds x="30.0" y="700.0" width="1690" height="360.0" /> +        <ns3:Bounds x="30.0" y="700.0" width="1890.0" height="360.0" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_start" bpmnElement="ip_start"> +      <ns2:BPMNShape id="ip_DI_start" bpmnElement="ip_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="ip_DI_status" bpmnElement="ip_status"> +      <ns2:BPMNShape id="ip_DI_status" bpmnElement="ip_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="ip_DI_contract" bpmnElement="ip_contract"> +      <ns2:BPMNShape id="ip_DI_contract" bpmnElement="ip_contract"> 
-        <dc:Bounds x="555.0" y="85.0" width="50" height="50" /> +        <ns3:Bounds x="555.0" y="85.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_organize" bpmnElement="ip_organize"> +      <ns2:BPMNShape id="ip_DI_organize" bpmnElement="ip_organize"> 
-        <dc:Bounds x="755.0" y="75.0" width="150" height="70" /> +        <ns3:Bounds x="755.0" y="75.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_advance" bpmnElement="ip_advance"> +      <ns2:BPMNShape id="ip_DI_advance" bpmnElement="ip_advance"> 
-        <dc:Bounds x="1005.0" y="75.0" width="150" height="70" /> +        <ns3:Bounds x="1005.0" y="75.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_special_end" bpmnElement="ip_special_end"> +      <ns2:BPMNShape id="ip_DI_special_end" bpmnElement="ip_special_end"> 
-        <dc:Bounds x="1302.0" y="92.0" width="36" height="36" /> +        <ns3:Bounds x="1302.0" y="92.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_stale" bpmnElement="ip_stale"> +      <ns2:BPMNShape id="ip_DI_stale" bpmnElement="ip_stale"> 
-        <dc:Bounds x="275.0" y="265.0" width="150" height="70" /> +        <ns3:Bounds x="275.0" y="265.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_stale_end" bpmnElement="ip_stale_end"> +      <ns2:BPMNShape id="ip_DI_stale_end" bpmnElement="ip_stale_end"> 
-        <dc:Bounds x="562.0" y="282.0" width="36" height="36" /> +        <ns3:Bounds x="562.0" y="282.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_auto" bpmnElement="ip_auto"> +      <ns2:BPMNShape id="ip_DI_auto" bpmnElement="ip_auto"> 
-        <dc:Bounds x="805.0" y="275.0" width="50" height="50" /> +        <ns3:Bounds x="805.0" y="275.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_manual" bpmnElement="ip_manual"> +      <ns2:BPMNShape id="ip_DI_manual" bpmnElement="ip_manual"> 
-        <dc:Bounds x="1005.0" y="265.0" width="150" height="70" /> +        <ns3:Bounds x="1005.0" y="265.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_transition" bpmnElement="ip_transition"> +      <ns2:BPMNShape id="ip_DI_transition" bpmnElement="ip_transition"> 
-        <dc:Bounds x="755.0" y="445.0" width="150" height="70" /> +        <ns3:Bounds x="755.0" y="445.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_confirmed" bpmnElement="ip_confirmed"> +      <ns2:BPMNShape id="ip_DI_confirmed" bpmnElement="ip_confirmed"> 
-        <dc:Bounds x="1055.0" y="455.0" width="50" height="50" /> +        <ns3:Bounds x="1055.0" y="455.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_remove" bpmnElement="ip_remove"> +      <ns2:BPMNShape id="ip_DI_remove" bpmnElement="ip_remove"> 
-        <dc:Bounds x="1245.0" y="445.0" width="150" height="70" /> +        <ns3:Bounds x="1245.0" y="445.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_done" bpmnElement="ip_done"> +      <ns2:BPMNShape id="ip_DI_done" bpmnElement="ip_done"> 
-        <dc:Bounds x="1542.0" y="462.0" width="36" height="36" /> +        <ns3:Bounds x="1542.0" y="462.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_not_found" bpmnElement="ip_not_found"> +      <ns2:BPMNShape id="ip_DI_not_found" bpmnElement="ip_not_found"> 
-        <dc:Bounds x="1062.0" y="612.0" width="36" height="36" /> +        <ns3:Bounds x="1062.0" y="612.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_api_error" bpmnElement="ip_api_error"> +      <ns2:BPMNShape id="ip_DI_api_error" bpmnElement="ip_api_error"> 
-        <dc:Bounds x="862.0" y="497.0" width="36" height="36" /> +        <ns3:Bounds x="862.0" y="497.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_workflow_error" bpmnElement="ip_workflow_error"> +      <ns2:BPMNShape id="ip_DI_workflow_error" bpmnElement="ip_workflow_error"> 
-        <dc:Bounds x="1112.0" y="127.0" width="36" height="36" /> +        <ns3:Bounds x="1112.0" y="127.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_notify_error" bpmnElement="ip_notify_error"> +      <ns2:BPMNShape id="ip_DI_notify_error" bpmnElement="ip_notify_error"> 
-        <dc:Bounds x="862.0" y="127.0" width="36" height="36" /> +        <ns3:Bounds x="862.0" y="127.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_retry" bpmnElement="ip_retry"> +      <ns2:BPMNShape id="ip_DI_retry" bpmnElement="ip_retry"> 
-        <dc:Bounds x="1485.0" y="265.0" width="150" height="70" /> +        <ns3:Bounds x="1485.0" y="265.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_wait" bpmnElement="ip_wait"> +      <ns2:BPMNShape id="ip_DI_wait" bpmnElement="ip_wait"> 
-        <dc:Bounds x="1055.0" y="805.0" width="50" height="50" /> +        <ns3:Bounds x="1055.0" y="805.0" width="50" height="50" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_timer" bpmnElement="ip_timer"> +      <ns2:BPMNShape id="ip_DI_timer" bpmnElement="ip_timer"> 
-        <dc:Bounds x="1302.0" y="752.0" width="36" height="36" /> +        <ns3:Bounds x="1302.0" y="752.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_revision" bpmnElement="ip_revision"> +      <ns2:BPMNShape id="ip_DI_revision" bpmnElement="ip_revision"> 
-        <dc:Bounds x="1302.0" y="942.0" width="36" height="36" /> +        <ns3:Bounds x="1302.0" y="942.0" width="36" height="36" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNShape id="ip_DI_ready" bpmnElement="ip_ready"> +      <ns2:BPMNShape id="ip_DI_ready" bpmnElement="ip_ready"> 
-        <dc:Bounds x="1485.0" y="795.0" width="150" height="70" /> +        <ns3:Bounds x="1485.0" y="795.0" width="150" height="70" /> 
-      </bpmndi:BPMNShape> +      </ns2:BPMNShape> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_0" bpmnElement="ip_Flow_0"> +      <ns2:BPMNEdge id="ip_DI_Flow_0" bpmnElement="ip_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="ip_DI_Flow_1" bpmnElement="ip_Flow_1"> +      <ns2:BPMNEdge id="ip_DI_Flow_1" bpmnElement="ip_Flow_1"> 
-        <di:waypoint x="375.0" y="110.0" /> +        <ns4:waypoint x="375.0" y="110.0" /> 
-        <di:waypoint x="555.0" y="110.0" /> +        <ns4:waypoint x="555.0" y="110.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_2" bpmnElement="ip_Flow_2"> +      <ns2:BPMNEdge id="ip_DI_Flow_2" bpmnElement="ip_Flow_2"> 
-        <di:waypoint x="350.0" y="135.0" /> +        <ns4:waypoint x="350.0" y="135.0" /> 
-        <di:waypoint x="350.0" y="265.0" /> +        <ns4:waypoint x="350.0" y="265.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_3" bpmnElement="ip_Flow_3"> +      <ns2:BPMNEdge id="ip_DI_Flow_3" bpmnElement="ip_Flow_3"> 
-        <di:waypoint x="425.0" y="300.0" /> +        <ns4:waypoint x="425.0" y="300.0" /> 
-        <di:waypoint x="562.0" y="300.0" /> +        <ns4:waypoint x="562.0" y="300.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_4" bpmnElement="ip_Flow_4"> +      <ns2:BPMNEdge id="ip_DI_Flow_4" bpmnElement="ip_Flow_4"> 
-        <di:waypoint x="605.0" y="110.0" /> +        <ns4:waypoint x="605.0" y="110.0" /> 
-        <di:waypoint x="755.0" y="110.0" /> +        <ns4:waypoint x="755.0" y="110.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_5" bpmnElement="ip_Flow_5"> +      <ns2:BPMNEdge id="ip_DI_Flow_5" bpmnElement="ip_Flow_5"> 
-        <di:waypoint x="905.0" y="110.0" /> +        <ns4:waypoint x="905.0" y="110.0" /> 
-        <di:waypoint x="1005.0" y="110.0" /> +        <ns4:waypoint x="1005.0" y="110.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_6" bpmnElement="ip_Flow_6"> +      <ns2:BPMNEdge id="ip_DI_Flow_6" bpmnElement="ip_Flow_6"> 
-        <di:waypoint x="1155.0" y="110.0" /> +        <ns4:waypoint x="1155.0" y="110.0" /> 
-        <di:waypoint x="1302.0" y="110.0" /> +        <ns4:waypoint x="1302.0" y="110.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_7" bpmnElement="ip_Flow_7"> +      <ns2:BPMNEdge id="ip_DI_Flow_7" bpmnElement="ip_Flow_7"> 
-        <di:waypoint x="605.0" y="110.0" /> +        <ns4:waypoint x="605.0" y="110.0" /> 
-        <di:waypoint x="700.0" y="110.0" /> +        <ns4:waypoint x="700.0" y="110.0" /> 
-        <di:waypoint x="700.0" y="245.0" /> +        <ns4:waypoint x="700.0" y="245.0" /> 
-        <di:waypoint x="830.0" y="245.0" /> +        <ns4:waypoint x="830.0" y="245.0" /> 
-        <di:waypoint x="830.0" y="275.0" /> +        <ns4:waypoint x="830.0" y="275.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_8" bpmnElement="ip_Flow_8"> +      <ns2:BPMNEdge id="ip_DI_Flow_8" bpmnElement="ip_Flow_8"> 
-        <di:waypoint x="855.0" y="300.0" /> +        <ns4:waypoint x="855.0" y="300.0" /> 
-        <di:waypoint x="1005.0" y="300.0" /> +        <ns4:waypoint x="1005.0" y="300.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_9" bpmnElement="ip_Flow_9"> +      <ns2:BPMNEdge id="ip_DI_Flow_9" bpmnElement="ip_Flow_9"> 
-        <di:waypoint x="830.0" y="325.0" /> +        <ns4:waypoint x="830.0" y="325.0" /> 
-        <di:waypoint x="830.0" y="445.0" /> +        <ns4:waypoint x="830.0" y="445.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_10" bpmnElement="ip_Flow_10"> +      <ns2:BPMNEdge id="ip_DI_Flow_10" bpmnElement="ip_Flow_10"> 
-        <di:waypoint x="905.0" y="480.0" /> +        <ns4:waypoint x="905.0" y="480.0" /> 
-        <di:waypoint x="1055.0" y="480.0" /> +        <ns4:waypoint x="1055.0" y="480.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_11" bpmnElement="ip_Flow_11"> +      <ns2:BPMNEdge id="ip_DI_Flow_11" bpmnElement="ip_Flow_11"> 
-        <di:waypoint x="1105.0" y="480.0" /> +        <ns4:waypoint x="1105.0" y="480.0" /> 
-        <di:waypoint x="1245.0" y="480.0" /> +        <ns4:waypoint x="1245.0" y="480.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_12" bpmnElement="ip_Flow_12"> +      <ns2:BPMNEdge id="ip_DI_Flow_12" bpmnElement="ip_Flow_12"> 
-        <di:waypoint x="1395.0" y="480.0" /> +        <ns4:waypoint x="1395.0" y="480.0" /> 
-        <di:waypoint x="1542.0" y="480.0" /> +        <ns4:waypoint x="1542.0" y="480.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_13" bpmnElement="ip_Flow_13"> +      <ns2:BPMNEdge id="ip_DI_Flow_13" bpmnElement="ip_Flow_13"> 
-        <di:waypoint x="1080.0" y="505.0" /> +        <ns4:waypoint x="1080.0" y="505.0" /> 
-        <di:waypoint x="1080.0" y="612.0" /> +        <ns4:waypoint x="1080.0" y="612.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_14" bpmnElement="ip_Flow_14"> +      <ns2:BPMNEdge id="ip_DI_Flow_14" bpmnElement="ip_Flow_14"> 
-        <di:waypoint x="1155.0" y="300.0" /> +        <ns4:waypoint x="1155.0" y="300.0" /> 
-        <di:waypoint x="1190.0" y="300.0" /> +        <ns4:waypoint x="1190.0" y="300.0" /> 
-        <di:waypoint x="1190.0" y="705.0" /> +        <ns4:waypoint x="1190.0" y="705.0" /> 
-        <di:waypoint x="1080.0" y="705.0" /> +        <ns4:waypoint x="1080.0" y="705.0" /> 
-        <di:waypoint x="1080.0" y="805.0" /> +        <ns4:waypoint x="1080.0" y="805.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_15" bpmnElement="ip_Flow_15"> +      <ns2:BPMNEdge id="ip_DI_Flow_15" bpmnElement="ip_Flow_15"> 
-        <di:waypoint x="898.0" y="515.0" /> +        <ns4:waypoint x="898.0" y="515.0" /> 
-        <di:waypoint x="940.0" y="515.0" /> +        <ns4:waypoint x="940.0" y="515.0" /> 
-        <di:waypoint x="940.0" y="570.0" /> +        <ns4:waypoint x="940.0" y="570.0" /> 
-        <di:waypoint x="1740.0" y="570.0" /> +        <ns4:waypoint x="1740.0" y="570.0" /> 
-        <di:waypoint x="1740.0" y="235.0" /> +        <ns4:waypoint x="1740.0" y="235.0" /> 
-        <di:waypoint x="1560.0" y="235.0" /> +        <ns4:waypoint x="1560.0" y="235.0" /> 
-        <di:waypoint x="1560.0" y="265.0" /> +        <ns4:waypoint x="1560.0" y="265.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_16" bpmnElement="ip_Flow_16"> +      <ns2:BPMNEdge id="ip_DI_Flow_16" bpmnElement="ip_Flow_16"> 
-        <di:waypoint x="1148.0" y="145.0" /> +        <ns4:waypoint x="1148.0" y="145.0" /> 
-        <di:waypoint x="1190.0" y="145.0" /> +        <ns4:waypoint x="1190.0" y="145.0" /> 
-        <di:waypoint x="1470.0" y="145.0" /> +        <ns4:waypoint x="1470.0" y="145.0" /> 
-        <di:waypoint x="1470.0" y="235.0" /> +        <ns4:waypoint x="1470.0" y="235.0" /> 
-        <di:waypoint x="1560.0" y="235.0" /> +        <ns4:waypoint x="1560.0" y="235.0" /> 
-        <di:waypoint x="1560.0" y="265.0" /> +        <ns4:waypoint x="1560.0" y="265.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_17" bpmnElement="ip_Flow_17"> +      <ns2:BPMNEdge id="ip_DI_Flow_17" bpmnElement="ip_Flow_17"> 
-        <di:waypoint x="898.0" y="145.0" /> +        <ns4:waypoint x="898.0" y="145.0" /> 
-        <di:waypoint x="940.0" y="145.0" /> +        <ns4:waypoint x="940.0" y="145.0" /> 
-        <di:waypoint x="940.0" y="210.0" /> +        <ns4:waypoint x="940.0" y="210.0" /> 
-        <di:waypoint x="1560.0" y="210.0" /> +        <ns4:waypoint x="1560.0" y="210.0" /> 
-        <di:waypoint x="1560.0" y="265.0" /> +        <ns4:waypoint x="1560.0" y="265.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_18" bpmnElement="ip_Flow_18"> +      <ns2:BPMNEdge id="ip_DI_Flow_18" bpmnElement="ip_Flow_18"> 
-        <di:waypoint x="1635.0" y="300.0" /> +        <ns4:waypoint x="1635.0" y="300.0" /> 
-        <di:waypoint x="1710.0" y="300.0" /> +        <ns4:waypoint x="1710.0" y="300.0" /> 
-        <di:waypoint x="1800.0" y="300.0" /> +        <ns4:waypoint x="1800.0" y="300.0" /> 
-        <di:waypoint x="1800.0" y="700.0" /> +        <ns4:waypoint x="1800.0" y="700.0" /> 
-        <di:waypoint x="1080.0" y="700.0" /> +        <ns4:waypoint x="1080.0" y="700.0" /> 
-        <di:waypoint x="1080.0" y="805.0" /> +        <ns4:waypoint x="1080.0" y="805.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_19" bpmnElement="ip_Flow_19"> +      <ns2:BPMNEdge id="ip_DI_Flow_19" bpmnElement="ip_Flow_19"> 
-        <di:waypoint x="1105.0" y="830.0" /> +        <ns4:waypoint x="1105.0" y="830.0" /> 
-        <di:waypoint x="1203.5" y="830.0" /> +        <ns4:waypoint x="1203.5" y="830.0" /> 
-        <di:waypoint x="1203.5" y="770.0" /> +        <ns4:waypoint x="1203.5" y="770.0" /> 
-        <di:waypoint x="1302.0" y="770.0" /> +        <ns4:waypoint x="1302.0" y="770.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_20" bpmnElement="ip_Flow_20"> +      <ns2:BPMNEdge id="ip_DI_Flow_20" bpmnElement="ip_Flow_20"> 
-        <di:waypoint x="1105.0" y="830.0" /> +        <ns4:waypoint x="1105.0" y="830.0" /> 
-        <di:waypoint x="1203.5" y="830.0" /> +        <ns4:waypoint x="1203.5" y="830.0" /> 
-        <di:waypoint x="1203.5" y="960.0" /> +        <ns4:waypoint x="1203.5" y="960.0" /> 
-        <di:waypoint x="1302.0" y="960.0" /> +        <ns4:waypoint x="1302.0" y="960.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_21" bpmnElement="ip_Flow_21"> +      <ns2:BPMNEdge id="ip_DI_Flow_21" bpmnElement="ip_Flow_21"> 
-        <di:waypoint x="1338.0" y="770.0" /> +        <ns4:waypoint x="1338.0" y="770.0" /> 
-        <di:waypoint x="1411.5" y="770.0" /> +        <ns4:waypoint x="1411.5" y="770.0" /> 
-        <di:waypoint x="1411.5" y="830.0" /> +        <ns4:waypoint x="1411.5" y="830.0" /> 
-        <di:waypoint x="1485.0" y="830.0" /> +        <ns4:waypoint x="1485.0" y="830.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_22" bpmnElement="ip_Flow_22"> +      <ns2:BPMNEdge id="ip_DI_Flow_22" bpmnElement="ip_Flow_22"> 
-        <di:waypoint x="1338.0" y="960.0" /> +        <ns4:waypoint x="1338.0" y="960.0" /> 
-        <di:waypoint x="1411.5" y="960.0" /> +        <ns4:waypoint x="1411.5" y="960.0" /> 
-        <di:waypoint x="1411.5" y="830.0" /> +        <ns4:waypoint x="1411.5" y="830.0" /> 
-        <di:waypoint x="1485.0" y="830.0" /> +        <ns4:waypoint x="1485.0" y="830.0" /> 
-      </bpmndi:BPMNEdge> +      </ns2:BPMNEdge> 
-      <bpmndi:BPMNEdge id="ip_DI_Flow_23" bpmnElement="ip_Flow_23"> +      <ns2:BPMNEdge id="ip_DI_Flow_23" bpmnElement="ip_Flow_23"> 
-        <di:waypoint x="1635.0" y="830.0" /> +        <ns4:waypoint x="1635.0" y="830.0" /> 
-        <di:waypoint x="1770.0" y="830.0" /> +        <ns4:waypoint x="1770.0" y="830.0" /> 
-        <di:waypoint x="1880.0" y="830.0" /> +        <ns4:waypoint x="1880.0" y="830.0" /> 
-        <di:waypoint x="1880.0" y="25.0" /> +        <ns4:waypoint x="1880.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="1460.0" y="5.0" width="180" height="26" /> +          <ns3:Bounds x="1460.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>
Строка 1037: Строка 1146:
  
 ==== Проверка документа ==== ==== Проверка документа ====
-Для ''document-verification-v1'' вызов ''advance'' возвращает ''manual_required'' и первоначальные уведомления. Он не создаёт ''DocumentVersion'' и не подтверждает документ автоматически. Решение вносит пользователь с соответствующим доступом. Применение результата, проверка ожидаемой редакции документа и дальнейшее закрытие принадлежат следующему ''DONE''/''WONTFIX'' workflow.+Для document-verification-v1: 
 + 
 +  * advance возвращает manual_required и первоначальные уведомления; 
 +  * новая DocumentVersion не создаётся этим вызовом; 
 +  * проверяющий вносит решение через доступный интерфейс; 
 +  * ожидаемая редакция документа и применение результата проверяются отдельным DONE/WONTFIX workflow. 
 + 
 +Наличие уведомления или статус IN_PROCESS не означают, что документ подтверждён.
  
 ==== Проверка требования ==== ==== Проверка требования ====
Строка 1052: Строка 1168:
  
 ===== Организация встречи не является результатом проверки ===== ===== Организация встречи не является результатом проверки =====
-Примитив ''prepare_verification_organization'' действует только для ''requirement-check-v1''; для проверки документа он ничего не меняет. Он вызывает действие ''organize'' и публичный интеграционный порт подготовки встречи. Отсутствие подключённого провайдера или ответ ''available=false'' не блокирует последующий ''advance'' и не означает отрицательную проверку.+Подготовка организации проверки выполняется явно перед advance: 
 + 
 +  * **document-verification-v1:** примитив ничего не меняет. 
 +  * **requirement-check-v1:** вызывается organize и публичный интеграционный порт подготовки встречи. 
 +  * **Провайдер не подключён либо available=false:** advance всё равно продолжается; это не отрицательный результат проверки. 
 + 
 +При доступной организации сохраняются: 
 + 
 +  * booking в RequirementCheck.organization_data; 
 +  * организационные данные в Ticket.json.organization; 
 +  * при отсутствии активной записи — уведомление автору о self-booking URL, если оно предусмотрено; 
 +  * уведомление проверяющим об assignment URL, если оно предусмотрено.
  
-При доступной организации backend сохраняет сведения о booking в ''RequirementCheck.organization_data'' и ''Ticket.json.organization''. Если активной записи ещё нет, наличие self-booking URL может породить уведомление автору, а assignment URL — уведомление проверяющим. Этот шаг не меняет результат ''RequirementCheck''. Наличие ссылки не доказывает, что пользователь записался, встреча состоялась или проверка пройдена.+Это организация встречи, а не изменение результата RequirementCheck. Ссылка не доказывает запись, состоявшуюся встречу или успешную проверку.
  
 Ошибка HTTP/разбора ответа ''organize'' логируется; проход продолжается с ''advance''. Ошибка отправки уведомления вне этого локального catch может попасть в общий retry. Внутреннее устройство необязательного провайдера встреч здесь не описывается: закреплён именно публичный порт backend. Ошибка HTTP/разбора ответа ''organize'' логируется; проход продолжается с ''advance''. Ошибка отправки уведомления вне этого локального catch может попасть в общий retry. Внутреннее устройство необязательного провайдера встреч здесь не описывается: закреплён именно публичный порт backend.
Строка 1270: Строка 1397:
 </sharix-bpmn> </sharix-bpmn>
  
-Пользователь открывает карточку Ticket и выбирает допустимый переход. Форма профильной проверки позволяет передать комментарий и, для ''requirement-check-v1'', применимые баллы. View сохраняет metadata результата вместе с разрешённой сменой статуса в atomic-секции. Это запись решения для последующего потребителя; сама форма не импортирует dbsynce и не применяет доменный результат напрямую.+Ручной результат вносится через карточку Ticket: 
 + 
 +  - Пользователь выбирает доступный DONE либо WONTFIX. 
 +  - Передаёт комментарий; для requirement-check-v1 при необходимости указывает применимые баллы. 
 +  - View проверяет разрешение перехода и в atomic-секции сохраняет metadata результата вместе со сменой статуса. 
 +  - Следующий профильный handler применяет доменный результат. 
 + 
 +Форма Tickets не импортирует dbsynce и не подтверждает проверку сама. Произвольный API-клиент может не сохранять поля результата так же, как эта форма.
  
 Чтение Ticket и право менять его статус проверяются отдельно. Авторство само по себе не даёт право менять статус; учитываются права управления Ticket и доступные переходы. Связанные с заказом Ticket не должны обходить lifecycle заказа через универсальную форму. Наличие API для смены статуса не доказывает, что произвольный API-клиент сохраняет все поля ручной проверки так же, как эта форма. Чтение Ticket и право менять его статус проверяются отдельно. Авторство само по себе не даёт право менять статус; учитываются права управления Ticket и доступные переходы. Связанные с заказом Ticket не должны обходить lifecycle заказа через универсальную форму. Наличие API для смены статуса не доказывает, что произвольный API-клиент сохраняет все поля ручной проверки так же, как эта форма.
Строка 1279: Строка 1413:
  
 ===== Уведомления и подтверждение отправки ===== ===== Уведомления и подтверждение отправки =====
-Backend возвращает audience, текст и ключ уведомления. Runtime получает JID автора через защищённый API; получатели ''reviewers'' — активные участники группы списка Ticket, полученные через отдельный защищённый endpoint. Повторяющиеся JID убираются. При наличии фактической попытки отправки сохраняется ''ack_notification'' для ключа; уже подтверждённые ключи backend не возвращает.+Для уведомления backend возвращает audience, текст и ключ: 
 + 
 +  * **creator:** runtime получает JID автора через защищённый API. 
 +  * **reviewers:** JID активных участников группы списка Ticket возвращает отдельный защищённый endpoint; повторяющиеся адреса исключаются. 
 +  * **Подтверждение:** после фактической попытки отправки runtime вызывает ack_notification для ключа; подтверждённые ключи backend больше не возвращает. 
 + 
 +Если получателя нет, доставка не подтверждается. Членство в списке получателей не выдаёт прав на Ticket.
  
 Это защита от обычных повторных отправок, а не гарантия exactly-once или прочтения человеком. Ошибка сохранения ack после отправки может привести к повтору уведомления. Отсутствие получателя не превращается в подтверждённую доставку. Сообщение проверяющему не выдаёт ему права на Ticket и не заменяет его решение. Это защита от обычных повторных отправок, а не гарантия exactly-once или прочтения человеком. Ошибка сохранения ack после отправки может привести к повтору уведомления. Отсутствие получателя не превращается в подтверждённую доставку. Сообщение проверяющему не выдаёт ему права на Ticket и не заменяет его решение.
sharixopen/knowledge/scenarios/st_request_inprocess.1793214851.txt.gz · Последнее изменение: — sx_knowledge_api_open

© 2022 ShariX