НАЧАЛО >> Workflow >> Модули Workflow >> Workflow📄 Скачать в DOCX
Модуль Workflow является ядром подсистемы рабочих процессов. Он хранит записи типа WORKFLOW, выполняет переходы, проверяет условия, запускает post-function и ведет историю действий в стандартном поле 907.
Запись workflow описывает сам рабочий процесс: ключ, название, активность и описание. Состав статусов, переходов, экранов, фильтров и представлений хранится в отдельных модулях и связывается с workflow по ключу.
| Поле | Назначение |
|---|---|
920 |
тип записи WORKFLOW |
1^A |
ключ workflow |
1^B |
название |
1^C |
активность |
1^D |
описание |
Состояние прикладной записи хранится в поле 113 с типом связи WORKFLOW. В одном экземпляре поля фиксируются workflow, владелец состояния и текущий статус. За счет повторяемости поля одна запись может участвовать в нескольких workflow одновременно.
Workflow не должен знать внутреннюю структуру прикладного типа записи. Поиск записи по внешнему идентификатору, workflow для v920, проектный тип объекта и схемы интерфейса определяются проектом WorkflowProject.
Основной метод для кода приложения - ApplyRecordTransition(). Он получает базу, запись, проект и переход либо целевой статус. Перед сохранением модуль:
113;907;Для UI, API и массовых операций до выполнения перехода следует использовать ExplainRecordTransition() или DryRunRecordTransition().
ExplainRecordTransition() возвращает единый диагностический ответ: разрешен ли переход, какой diagnosticCode получен, какие проверки пройдены, какие причины отказа есть, какой экран потребуется и какие post-functions будут запланированы.
DryRunRecordTransition() использует тот же набор проверок на копии записи и показывает будущий workflow-state без сохранения записи и без выполнения post-functions.
GetWorkflowImpactAnalysis() показывает where-used workflow: связанные проекты, статусы, переходы, экраны, схемы, фильтры, представления и количество записей с материализованным состоянием этого workflow.
Condition задается в записи перехода как имя формата. Workflow вызывает Format128 с параметрами контекста. Пустое значение, 0, false и нет запрещают переход. Отрицательное число считается ошибкой условия.
Если нужна сложная логика доступности, ее лучше выносить в формат ИРБИС 128. Так настройка остается декларативной, а модуль Workflow не получает привязку к прикладной области.
Workflow поддерживает два типа post-function:
| Тип | Назначение |
|---|---|
gbl |
выполнение выбранного GBL-сценария из MNU whitelist |
command |
вызов workflow-команды прикладного модуля |
Команды вызываются через __call/Workflow и получают WorkflowContext. Возврат выполняется через WorkflowCommandResult.
Модуль умеет помечать записи как системно управляемые и запрещать их ручное редактирование. Для разработки системных конфигураций предусмотрена внутренняя настройка в коде, разрешающая редактирование таких записей.
Синхронизация поставляемых JSON-конфигураций выполняется отдельной __call-функцией SyncSystemDefinitions.