Расширение процесса заявки на закупку оборудования: использования динамической роли DMN в бизнес-процессе
Примечание
Данная статья является продолжением работы с бизнес-процессом Заявка на закупку оборудования.
Если вы продолжаете по статье Процесс заявки на закупку оборудования. Добавление справочника. Журнал и форма не по умолчанию, удалите Script task «Сохранение комментария».
Используйте пользователей из набора демо-данных или добавьте их, как описано в статье Создание пользователей для Citeck Community.
Используйте группы из набора демо-данных или добавьте их, как описано в Создание группы.
В данном примере мы добавим динамическую роль с использованием таблицы DMN при согласовании закупки оборудования. В зависимости от условий, прописанных в таблице DMN, роль согласующего будет вычисляться автоматически.
Для этого необходимо:
Создать таблицу принятия решений (DMN).
Добавить в тип данных динамическую роль DMN для согласующего.
Таблица DMN
Примечание
Для создания модели в локальном рабочем пространстве перейдите в раздел Администрирование → Модели DMN и нажмите + — Создать DMN модель.
Для таблицы необходимо определить критерии, по которым будет приниматься решение. Основные критерии — наименование оборудования и согласующий.
Перейдите в рабочее пространство администратора. В разделе Управление процессами выберите пункт Модели DMN:
Нажмите «+ — Создать DMN модель»:
Заполните поля:
1 |
Идентификатор |
approve-equipment |
2 |
Имя |
Согласование заявки на оборудование |
Нажмите «Сохранить».
Для перехода к редактору разверните раздел «По умолчанию», наведите курсор на созданную модель и нажмите кнопку редактирования:
Откроется редактор решения:
В правой части модели необходимо определить входные данные для вычисления роли на основе DMN. По ключу модели будут доступны вычисленные данные в контексте DMN.
Задайте сопоставление ключа и значения:
Ключ |
name |
Входной элемент для решения. Указывается далее в поле Expression. |
Значение |
name |
Атрибут типа данных — условие, по которому вычисляется роль. |
Примечание
Ключ-значений (условий) может быть несколько. Для каждого условия будет вычисляться соответствующая роль.
Для ввода данных в таблицу нажмите кнопку редактирования:
Двойным кликом по наименованию решения (1) перейдите в режим редактирования и задайте имя Decision_furniture.
Hit policy (2) — политика выбора. Установите значение Unique (по умолчанию).
(3) — входные элементы, (4) — выходные элементы. Совокупность входных и выходного элементов формирует решение.
Входные элементы
Дважды кликните поле под When и введите наименование входного элемента — «Наименование»:
В свойствах укажите:
Поле |
Значение |
Пояснение |
|---|---|---|
Expression |
name |
Ключ из модели |
Type |
string |
Соответствует типу атрибута |
Выходной элемент
Дважды кликните поле под Then и введите наименование выходного элемента — «Согласующий»:
В свойствах укажите:
Поле |
Значение |
Пояснение |
|---|---|---|
Type |
string |
Решение DMN вернёт строку (String) с именами реципиентов |
Правила
Добавьте три правила, сопоставляющие наименование оборудования с соответствующим согласующим.
Примечание
Системное имя пользователя можно найти в Оргструктуре, открыв профиль пользователя:
Группы:
Примечание
Если указывается группа, перед её именем необходимо добавить префикс
GROUP_.Значения типа string (поля Наименование и Согласующий) обязательно заключаются в кавычки.
Несколько значений указываются через запятую без пробелов внутри одних кавычек.
Добавьте первое правило: для наименования «Ноутбук» — согласующий «alexandra.filchenko» и группа «GROUP_company_chief_accountant»:
Нажмите кнопку + внизу таблицы для добавления следующего правила.
Добавьте второе правило: для наименования «Компьютер» — согласующий «elvira.danilenko»:
Итоговая таблица правил:
Наименование |
Согласующий |
|---|---|
"Ноутбук"
|
"alexandra.filchenko,GROUP_company_accountant"
|
"Компьютер"
|
"elvira.danilenko"
|
"Сервер"
|
"GROUP_production_director"
|
Сохраните и опубликуйте таблицу принятия решений:
Тип данных
Во вкладке «Роли» созданного ранее типа данных назначьте согласующему динамическую роль:
В форме выберите тип DMN и решение — Decision_furniture:
Нажмите «Подтвердить».
Проверка процесса
Перейдите в журнал, создайте новую заявку, заполните карточку и нажмите «Сохранить»:
На статусе «На согласовании» исполнителями назначены Александра Фильченко (аккаунт alexandra.filchenko) и Главный бухгалтер (группа company_accountant):
Проверка прав через консоль браузера
Назначенную роль можно проверить через консоль браузера командой:
await Records.get('emodel/type-id@local-id').load('_roles.assigneesOf.approver[]?str', true)
где:
approver— id роли из типа данных;emodel/type-id@local-id— идентификатор записи из строки браузера:
Система выдаст список пользователей, которым назначена задача согласования: