Содержание
Обработчики ShariX Open: Blockly, Python и выполнение
Назначение: Архитектура. Продукт: ShariX Open · Общий компонент.
Для кого: Разработчик · Интегратор · Оператор развёртывания · Нейросеть.
Темы: Обработчики → Blockly · Обработчики → Runtime.
Страница показывает, где искать алгоритм обработчика, как получить исполняемый Python и какие проверки нужны перед передачей изменения. Runtime исполняет выбранный Python-файл; Blockly — редактируемый источник алгоритма, а не интерпретируемая при обработке заявки программа.
Репозитории и ответственность
| Модуль | Что находится в нём | Что не следует переносить сюда |
|---|---|---|
| handlers_backend | Общий runtime, очередь, XMPP/HTTP-механика, генераторы, проверка происхождения и выбор файлов версий. | Готовые бизнес-обработчики отдельного продукта и прямые импорты его web-слоя. |
| handlers_examples | Каталог ShariX Open, встроенные handler implementations, workspaces и полученный из них Python. | Исходники обработчика отдельного optional-модуля ради включения в каталог. |
| webservice_running | Web-редактор Blockly и сервисные операции редактирования. | Второй независимый механизм исполнения очереди. |
| Владеющий optional-модуль | Собственный handler и объявленные contribution-пути к его коду/workspace. | Копию общего runtime или предположение, что все модули используют один каталог generated. |
Признак shared не определяет лицензию. У общего runtime есть открытый контракт, но подключаемый модуль может оставаться закрытым. Его внутренние алгоритмы документируют в intrawiki; публично обозначают только имя и границу. Подробности — владение моделями.
Файлы встроенного обработчика ShariX Open
Для open_st_request_new используются:
- handlers_examples/catalog.py — идентичность, тип Ticket, рабочий статус и capabilities.
- handlers_examples/generated_handler_blocks/open_st_request_new.json — Blockly workspace.
- handlers_examples/handlers/open_st_request_new.py — встроенный runnable Python.
- handlers_examples/generated_handlers/open_st_request_new.py — поставляемая копия результата генерации.
- handlers_examples/generated_handler_blocks/.provenance.json — сведения о происхождении встроенных версий.
- handlers_backend/ticket_codegen_contract.json — шаблоны и хеши исходников генераторов.
Это расположение встроенной пары ShariX Open, а не универсальная структура всех contributions. Для module-owned handler берут пути из contribution и provenance и проверяют их согласованность с владельцем.
Встроенная, локальная и выбранная версии
- Builtin: поставляемая Git-версия. Для ShariX Open её каталоги задаёт handlers_examples/runtime_provider.py.
- Локальная версия: отдельная версия в conf-real/handlers/local_versions с workspace, Python и сведениями о происхождении.
- Выбранная версия: версия, указанная в installation-local конфигурации conf-real/handlers/handler_runtime.json.
Наличие правильной builtin-пары не доказывает, что на сервере запущена именно она. При диагностике выясняют выбор версии и фактический файл. Конфигурацию и секреты не копируют в Wiki или отчёт целиком.
Порядок изменения алгоритма
- Найти текущий handler в каталоге и определить владельца его исходников.
- Прочитать workspace, полученный Python и вызываемые runtime/API-операции. Установить условия, действия и отказы.
- Если работающая ветвь Python отсутствует в Blockly, сначала отразить её в workspace. При необходимости добавить узкий переиспользуемый блок с ясным контрактом.
- Обновить генераторы/шаблоны, когда меняется сам набор поддержанных блоков. Не прятать новый процесс в блок «выполнить произвольный Python».
- Получить Python из workspace и сравнить его с поставляемыми файлами.
- Согласовать provenance, contribution-пути, toolbox/help, переводы и поведенческие проверки затронутой части.
- Проверить разрешённые операции и события с учётом выбранной runtime-версии.
- Обновить текст сценария и BPMN по тем же исходникам; передать человеку патч и полный сценарий применения.
Ручная правка generated Python и замена сохранённых хешей не восстанавливают соответствие. Неизвестный блок или изменившийся генератор должны дать явную ошибку. Перегенерация неполной модели с потерей работающей функции также не является исправлением.
Проверка генерации без запуска handler
Из корня checkout ShariX Open с установленными исходниками:
./venv/bin/python handlers_backend/tools/check_canonical_ticket_codegen.py \ --workspace-dir handlers_examples/generated_handler_blocks \ --python-dir handlers_examples/handlers \ --generated-dir handlers_examples/generated_handlers \ --contract handlers_backend/ticket_codegen_contract.json \ --project-root .
В этом режиме инструмент повторно получает Python и сравнивает файлы; он не запускает обработчики, не обращается к БД и не использует сеть. Параметр –write здесь намеренно не используется: изменение файлов генерации — отдельный авторский шаг после проверки workspace.
Для настроенной Django-установки существует дополнительная проверка:
./venv/bin/python manage.py check_handler_blockly_sync
Она проверяет materialized contribution manifest и builtin provenance. Отсутствующий или устаревший manifest — конкретная причина отказа, а не основание пропустить проверку. Подготовка contributions выполняется штатной процедурой; эта команда не доказывает исправность XMPP или успех пользовательского процесса.
Что должно быть видно в алгоритме и BPMN
- Кто инициирует действие и с каким объектом работает.
- Какие условия выбирают ветвь.
- Какой API вызывается и какое право/capability требуется.
- Где сохраняется бизнес-состояние.
- Когда действует человек или внешняя система.
- Какое событие возвращается после изменения.
- Какая настройка определяет таймер или повтор.
- Что происходит при отказе, повторном событии и завершении.
Для процесса сначала используют BPMN. Сверяют не только workspace, но и Python, операции runtime, API/ACL и внешний интерфейс. Значение таймера на сервере не угадывают по имени переменной. Просмотрщик Wiki не исполняет процесс; схема описательная.
Как различать результаты проверки
- Генерация совпала: workspace воспроизвёл данный Python.
- Происхождение проверено: сведения о файлах, генераторе и владельце согласованы.
- Процесс запущен: служба стартовала с нужной версией.
- Handler готов: подтверждены нужные runtime/XMPP-признаки.
- Сценарий выполнен: разрешённое действие привело к ожидаемому сохранённому и видимому результату.
Эти результаты не подменяют друг друга. Бизнес-состояние изменяет владелец через предусмотренную операцию; handler не записывает произвольный статус в обход прав. После публикации shared-изменения оповещают ответственного Platform для его проверки и принятия по intrawiki; публичный сценарий не запускает обновление другого продукта.
Подробности: приёмка, runtime health, ST_REQUEST.
Сценарии ST_REQUEST (BPMN)
Опубликованные встроенные обработчики разобраны по одному: алгоритм, внешние участники, таймеры и границы доменных действий.
CLOSED — терминальная стадия; отдельного встроенного open_st_request_closed в текущем каталоге нет. Историческое имя open_st_request_dublicate не является второй доступной реализацией DUPLICATE.
Сценарии ACCESS_REQUEST (BPMN)
Сценарии NEG_REQUEST (BPMN)
Сценарии SERVICE_REQUEST (BPMN)
Системные обработчики
| Handler | Сценарий |
|---|---|
| open_basic_bot | Диагностический XMPP-send, callback и границы проверки |
| open_report_handler | Приём отчётов, память, сводка и повтор пересылки |
| open_teltonika_gps_tracker | XMPP bootstrap, UDP, decoder, файлы и ACK |
Подключаемые обработчики
| Handler | Сценарий |
|---|---|
| repository_update_watch | Публичные Git-проверки, deployment/upstream и snapshot |
Исходники, сверенные 31.10.2026
Проверены опубликованные исходники указанных commits. Это анализ кода, а не подтверждение версии, конфигурации или выполнения сценария на сервере.