НАЧАЛО >> Workflow >> Системные определения Workflow📄 Скачать в DOCX
Системные проекты и workflow могут поставляться модулем в JSON. Это нужно, когда модуль должен иметь преднастроенный рабочий процесс, но администратор не должен редактировать системные записи напрямую.
JSON проекта может содержать:
projects - проекты Workflow;workflows - рабочие процессы;statuses - статусы;transitions - переходы и post-functions;screens - экраны he3;screenSchemes - схемы экранов;filters - фильтры списков;filterSchemes - схемы фильтров;views - представления списков, карточек, форм, досок и внешних страниц;viewSchemes - схемы представлений;rights - права на записи.Системные файлы прикладного модуля размещаются в каталоге modules/<Module>/workflow/.
Для проектов рекомендуется заполнять defaultPageKey: это ключ стартовой страницы из WorkflowViewScheme, которая открывается из списка проектов Workflow. Для проектов, статусов и переходов рекомендуется заполнять description: это административное описание попадает в запись и используется в диагностике, Help и экспорте. Для статусов можно задавать color; если цвет не указан, WorkflowStatus выбирает стандартный цвет по укрупненному API-статусу.
Состав меню задается в viewSchemes: в навигацию могут попасть только страницы, у которых есть строка pageKey -> viewKey в активной схеме представлений проекта. В элементах views можно задавать не только колонки и секции, но и параметры отображения этих пунктов:
viewType - list, detail, create, page, kanban или timebox;board - вложенная настройка доски для viewType=kanban и viewType=timebox: колонки, swimlanes, профиль карточки, быстрые фильтры и политика перемещения;rendererKey - резервный ключ специализированного renderer для будущих типов представлений; для досок не используется;navigationGroup - группа верхней навигации;navigationSort - порядок пункта;navigationVisible - показывать пункт в навигации;navigationBadgeFilterKey - фильтр для счетчика рядом с пунктом;navigationBadgeLabel и navigationBadgeTitle - подпись и подсказка счетчика.Обычные ссылки навигации строятся через единый маршрут Workflow/Show. Он находит представление по pageKey и выбирает renderer по viewType: список, карточка, форма создания, Kanban или timebox. Для представлений типа page можно указать canonicalRoute, если страница обслуживается отдельным модулем.
Синхронизация выполняется функцией Workflow::SyncSystemDefinitions. Она читает JSON поставщиков, нормализует ключи, создает недостающие записи, обновляет изменившиеся системные записи и удаляет системные записи, которые исчезли из поставляемого JSON.
Во время синхронизации включается внутренний режим IsSystemDefinitionSyncActive(). Он нужен, чтобы массовое обновление системных записей не вызывало лишние обработчики изменения конфигурации.
Системные записи помечаются служебными признаками поставки. В обычном режиме редактирование таких записей блокируется через общий механизм Workflow::ApplySystemManagedEditorMode() и проверки OnBeforeSave.
Для разработки системных определений в классе Workflow предусмотрен кодовый режим разрешения редактирования системных записей. Его следует включать только в локальной разработческой копии и не использовать как пользовательскую настройку.
Если администратору нужно изменить поставляемый workflow, правильный путь - создать копию проекта:
Создать копию.Копия получает собственные workflow, статусы, переходы, экраны, фильтры, представления, схемы и права. Системные признаки в копию не переносятся.
WorkflowProject поддерживает экспорт проекта в JSON и импорт из JSON. Экспорт нужен для переноса конфигурации между стендами и подготовки системного файла модуля. Импорт доступен из настроек модуля WorkflowProject.
При импорте проверяется структура JSON, создаются связанные записи и назначаются права. При экспорте в JSON попадает проект и все связанные сущности, которые относятся к workflow проекта.