Системные определения Workflow


НАЧАЛО >> Workflow >> Системные определения Workflow📄 Скачать в DOCX


Системные проекты и workflow могут поставляться модулем в JSON. Это нужно, когда модуль должен иметь преднастроенный рабочий процесс, но администратор не должен редактировать системные записи напрямую.

1. Что хранится в JSON

JSON проекта может содержать:

Системные файлы прикладного модуля размещаются в каталоге modules/<Module>/workflow/.

Для проектов рекомендуется заполнять defaultPageKey: это ключ стартовой страницы из WorkflowViewScheme, которая открывается из списка проектов Workflow. Для проектов, статусов и переходов рекомендуется заполнять description: это административное описание попадает в запись и используется в диагностике, Help и экспорте. Для статусов можно задавать color; если цвет не указан, WorkflowStatus выбирает стандартный цвет по укрупненному API-статусу.

Состав меню задается в viewSchemes: в навигацию могут попасть только страницы, у которых есть строка pageKey -> viewKey в активной схеме представлений проекта. В элементах views можно задавать не только колонки и секции, но и параметры отображения этих пунктов:

Обычные ссылки навигации строятся через единый маршрут Workflow/Show. Он находит представление по pageKey и выбирает renderer по viewType: список, карточка, форма создания, Kanban или timebox. Для представлений типа page можно указать canonicalRoute, если страница обслуживается отдельным модулем.

2. Синхронизация

Синхронизация выполняется функцией Workflow::SyncSystemDefinitions. Она читает JSON поставщиков, нормализует ключи, создает недостающие записи, обновляет изменившиеся системные записи и удаляет системные записи, которые исчезли из поставляемого JSON.

Во время синхронизации включается внутренний режим IsSystemDefinitionSyncActive(). Он нужен, чтобы массовое обновление системных записей не вызывало лишние обработчики изменения конфигурации.

3. Защита системных записей

Системные записи помечаются служебными признаками поставки. В обычном режиме редактирование таких записей блокируется через общий механизм Workflow::ApplySystemManagedEditorMode() и проверки OnBeforeSave.

Для разработки системных определений в классе Workflow предусмотрен кодовый режим разрешения редактирования системных записей. Его следует включать только в локальной разработческой копии и не использовать как пользовательскую настройку.

4. Пользовательские варианты

Если администратору нужно изменить поставляемый workflow, правильный путь - создать копию проекта:

  1. Открыть проект Workflow.
  2. Нажать Создать копию.
  3. Указать новый ключ и название.
  4. Настраивать уже пользовательские записи копии.

Копия получает собственные workflow, статусы, переходы, экраны, фильтры, представления, схемы и права. Системные признаки в копию не переносятся.

5. Импорт и экспорт

WorkflowProject поддерживает экспорт проекта в JSON и импорт из JSON. Экспорт нужен для переноса конфигурации между стендами и подготовки системного файла модуля. Импорт доступен из настроек модуля WorkflowProject.

При импорте проверяется структура JSON, создаются связанные записи и назначаются права. При экспорте в JSON попадает проект и все связанные сущности, которые относятся к workflow проекта.