Расширение типов триггеров
Каждый рабочий процесс должен быть настроен с конкретным триггером — это точка входа для запуска выполнения.
Тип триггера обычно соответствует конкретному событию в окружении системы. В течение жизненного цикла приложения для определения типа триггера можно использовать любую часть системы с подписываемыми событиями: приём запросов, операции с коллекциями, задачи по расписанию и т. д.
Типы триггеров регистрируются в таблице триггеров плагина по строковому идентификатору. В плагине «Рабочий процесс» есть несколько встроенных триггеров:
'collection': срабатывает при операциях с коллекциями;'schedule': срабатывает по расписанию;'action': срабатывает при событиях после действия;
Для добавляемых типов триггеров нужно обеспечивать уникальность идентификаторов. Реализация подписки и отписки регистрируется на сервере, а интерфейс настройки — на клиенте.
Серверная часть
Любой триггер наследует базовый класс Trigger и реализует методы on и off для подписки на события окружения и отписки от них соответственно. В методе on в обратном вызове нужного события нужно вызвать this.workflow.trigger(), чтобы запустить рабочий процесс. В методе off выполняется очистка при отписке.
this.workflow — экземпляр плагина рабочего процесса, передаваемый в конструктор базового класса Trigger.
Затем в плагине, расширяющем рабочий процесс, зарегистрируйте экземпляр триггера в движке рабочего процесса:
После старта и загрузки сервера триггер типа 'interval' можно добавить и выполнять.
Клиентская часть
На клиенте в основном задаётся интерфейс настройки по параметрам, которые требует тип триггера. Каждый тип триггера также должен зарегистрировать свою конфигурацию в плагине «Рабочий процесс».
Интерфейс настройки триггера определяется через Loader (функцию отложенной загрузки), которая указывает на обычный React-компонент, строящий форму с помощью Form.Item из antd.
Простейший триггер
Например, для триггера периодического запуска, описанного выше, определите в форме настройки параметр интервала (interval):
Здесь FieldsetLoader — функция, возвращающая Promise<{ default: ComponentType }>, реализующая отложенную загрузку через динамический import(). Компонент, на который она указывает, — стандартный функциональный React-компонент:
Обратите внимание, что поле формы name использует формат вложенного массива ['config', 'fieldName'] — стандартное соглашение antd Form.
Несколько интерфейсов настройки
Триггер может предоставлять несколько интерфейсов настройки для различных сценариев:
-
PresetFieldsetLoader— предустановленная форма при создании рабочего процесса (обычно содержит только обязательные поля)
-
FieldsetLoader— полная форма настройки триггера (отображается в панели настройки)
-
TriggerFieldsetLoader— форма ввода для ручного запуска
Когда Loader должен указывать на именованный экспорт (а не экспорт по умолчанию) файла, используйте .then() для переназначения:
Регистрация триггера
Зарегистрируйте тип триггера в экземпляре плагина рабочего процесса внутри расширяющего плагина:
После этого новый тип триггера появится в интерфейсе настройки рабочего процесса.
Идентификатор типа триггера, зарегистрированный на клиенте, должен совпадать с идентификатором на сервере, иначе возникнут ошибки.
Полный пример из реального проекта: исходный код CollectionTrigger
Подробнее об определении типов триггеров см. раздел Справочник API.
Если вы ранее использовали устаревший клиентский код (v1) и хотите перейти на новую версию v2, обратитесь к Руководству по миграции с v1 на v2.

