Пример использования динамической роли DMN в бизнеc-процессе

Примечание

В статье указаны произвольные пользователи и группы.

Добавьте пользователей, как описано в статье Создание пользователей для Citeck Community

Добавьте группы, как описано в Создание группы

Создадим простой бизнес-процесс для проверки назначения динамической роли с использованием таблицы DMN при согласовании закупки мебели.

В зависимости от условий закупки прописанных в таблице DMN, роль согласующего будет вычисляться автоматически.

Для этого:

  1. Создаем таблицу принятия решения (DMN)

  2. Создаем Тип данных, указываем в нем динамическую роль DMN

  3. Создаем простой бизнес-процесс

  4. Создаем Заказ мебели и проверяем назначенного в бизнес-процессе согласующего

Таблица DMN

Для таблицы требуется определить критерии, по которым будет приниматься решение.

Основные критерии - наименование мебели и согласующий.

Для создания таблицы принятия решений перейдите в рабочее пространство администратора. В разделе Управление процессами перейдите в пункт Модели DMN:

Нажмите «+ - Создать DMN модель»:


Заполните поля:

1

Идентификатор

approve-furniture

2

Имя

Согласование заявки мебель

Нажмите «Сохранить».

Для перехода к редактору разверните раздел «По умолчанию», наведите курсор на созданную модель и нажмите:

Откроется решение:

В правой части в модели необходимо определить входные данные для вычисления роли на основе DMN.

По ключу модели будут доступны вычисленные данные в контексте DMN.

Зададим сопоставление ключ и значение:

Ключ

name

входной элемент для решения, который далее необходимо указать в expression.

Значение

name

атрибут типа данных. То самое условие, по которому будет вычисляться роль.

Примечание

Ключ-значений (условий) может быть несколько, а для каждого условия будет вычисляться необходимая роль.

Для ввода данных в таблицу кликните:


Двойным кликом по наименованию решения (1) перейдите в режим редактирования и назовите решение Decision_furniture.

Hit policy (2) - политика выбора Определим ее как Unique (по умолчанию).

(3) – входные элементы, (4) – выходные элементы.

Совокупность входных элементов и выходного формируют решение.

Входные элементы

Для установки наименования входного элемента, дважды кликните поле под When и введите «Наименование»:

В свойствах укажите:

Поле

Значение

Пояснение

Expression

name

Ключ из модели

Type

string

Соответствует типу атрибута name из типа данных

Выходной элемент

Наименование выходного элемента, дважды кликните поле под Then и введите «Согласующий»:

В свойствах укажите:

Поле

Значение

Пояснение

Type

string

Чтобы решение DMN вернуло String с именами реципиентов.

Правила

Выберем 3 наименования мебели. Укажем для каждого наименования соответствующего согласующего.

Примечание

Системное имя пользователя можно получить в Оргструктуре, открыв профиль пользователя:

Группы:

Добавьте первое правило, указывающее, что для наименования «Стол» — согласующий с системным именем «alexandra.filchenko» и группа «GROUP_company_chief_accountant».

Примечание

Если указывать группу, то перед именем группы необходимо добавить GROUP_

Наименование и Согласующий типа string, поэтому элементы обязательно указывать в кавычках.

Несколько значений добавляется через запятую без пробелов в одних кавычках.

../_images/112.png

Нажмите кнопку 88 внизу таблицы или просто нажмите в любом месте последней строки.

Добавьте второе правило, указывающее, что для наименования «Шкаф» — согласующий с логином «elvira.danilenko».

Финальная таблица:

Наименование

Согласующий


"Стол"

"alexandra.filchenko,GROUP_company_chief_accountant"

"Шкаф"

"elvira.danilenko"

"Стул"

"alexandra.filchenko"

Решение DMN должно вернуть String с именами реципиентов.

Теперь таблицу принятия решения можно сохранить и опубликовать, нажав:

Тип данных

Создаем тип данных. Аналогично как в разделе Процесс заявки на закупку оборудования

Сразу приведем примеры заполненных вкладок:

Вкладка «Основные»

1

id

furniture-order

2

Имя

Заказ мебели

3

Родитель

Кейс

4

Форма

Оставить по умолчанию (система автоматически сгенерирует форму по тем атрибутам, которые мы укажем далее, но автоматически сгенерированные формы нельзя редактировать)

5

Журнал

Оставить по умолчанию (система автоматически сгенерирует журнал по тем атрибутам, которые мы укажем далее, но автоматически сгенерированные журналы нельзя редактировать)

Вкладка «Атрибуты»

Id (1)

Имя (2)

Тип (3)

name

Наименование

Text

price

Цена

Number

Вкладка «Роли»

Id (1)

Имя (2)

approver

Согласующий

Назначим согласующему динамическую роль. В форме выберите тип DMN, решение – Decision_furniture:

Нажмите Подтвердить.

Вкладка «Статусы»

Id (1)

Имя (2)

to_approve

На согласовании

approve

Согласован

reject

Отказано

Бизнес-процесс

Поскольку из прошлых примеров вы знаете, как создать процесс пошагово, какие элементы могут в нем быть, отобразим процесс и поэлементно его опишем.

Подробно о создании бизнес-процесса

Данные для создания процесса:

1

Идентификатор

furniture-order-bpmn

2

Имя

Заказ мебели

3

Тип данных

Заказ мебели

4

Включен

True. Отметка об активности процесса.

5

Автоматический старт процесса.

True, чтобы старт процесса осуществлялся автоматически. Подробно о запуске процесса

../_images/20.png

Рассмотрим поэлементно:

1. Установить статус

1

Имя

На согласовании

2

Статус

На согласовании

2. Пользовательская задача

1

Имя

Согласование

2

Реципиенты

Согласующий

3

Приоритет

Средний

5

Результаты задачи

Средний

  • approve - согласовать

  • reject - отказать

3. Шлюз

Простой эксклюзивный шлюз.

4. Установить статус

1

Имя

Согласован

2

Статус

Согласован

5. Установить статус

1

Имя

Отказ

2

Статус

Отказано

Поток А

1

Имя

Согласован

2

Тип условия

Исходящий

3

Исходящий

Согласование – согласовать

Поток В

1

Имя

Отказ

2

Тип условия

Исходящий

3

Исходящий

Согласование – отказать

6, 7 Конечное событие

Конечное событие (заканчивающее бизнес-процесс).

Добавить журнал в меню

Добавьте в меню журнал type$furniture-order.

Подробно о добавлении журнала

Проверка процесса

Перейдите в журнал, создайте новый элемент, заполните карточку, нажмите «Сохранить»:

Статус изменится на «На согласовании». Исполнитель – Александра Фильченко (аккаунт alexandra.filchenko) и Главный бухгалтер (группа company_chief_accountant)

Проверка прав через консоль браузера

Назначенную роль можно проверить через консоль браузера командой: await Records.get('emodel/type-id@local-id').load('_roles.assigneesOf.approver[]?str', true)

где

approver - id роли из типа данных

emodel/type-id@local-id – можно взять из строки браузера:

../_images/31.png

Система выдаст кому назначена данная задача согласования.

../_images/30.png