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

Примечание

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

Добавьте пользователей, как описано в статье Создание пользователей для ecos-community-demo

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

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

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

Для этого:

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

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

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

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

Таблица DMN

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

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

Для создания таблицы принятия решений перейдите левом меню в пункт «Моделирование – Методы принятия решения»:

../_images/012.png

Далее создайте DMN модель:

../_images/022.png

../_images/031.png

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

1

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

approve-furniture

2

Имя

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

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

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

../_images/04.png

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

../_images/05.png

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

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

../_images/061.png

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

Ключ

name

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

Значение

name

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

Примечание

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

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

../_images/071.png

../_images/081.png

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

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

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

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

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

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

../_images/09.png

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

Поле

Значение

Пояснение

Expression

name

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

Type

string

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

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

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

../_images/10.png

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

Поле

Значение

Пояснение

Type

string

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

Правила

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

Примечание

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

../_images/org_1.png

Группы:

../_images/org_2.png

../_images/org_3.png

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

Примечание

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

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

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

../_images/11.png

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

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

../_images/12.png

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

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

Согласующий

«Стол»

«alexandra.filchenko,GROUP_company_chief_accountant»

«Шкаф»

«elvira.danilenko»

«Стул»

«alexandra.filchenko»

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

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

../_images/13.png

Тип данных

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

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

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

../_images/14.png

1

id

furniture-order

2

Имя

Заказ мебели

3

Родитель

Кейс

4

Форма

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

5

Журнал

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

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

../_images/15.png

Id (1)

Имя (2)

Тип (3)

name

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

Text

price

Цена

Number

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

../_images/16.png

Id (1)

Имя (2)

approver

Согласующий

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

../_images/17.png

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

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

../_images/18.png

Id (1)

Имя (2)

to_approve

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

approve

Согласован

reject

Отказано

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

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

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

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

../_images/19.png

1

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

furniture-order-bpmn

2

Имя

Заказ мебели

3

Тип данных

Заказ мебели

4

Включен

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

5

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

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

../_images/20.png

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

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

../_images/21.png

1

Имя

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

2

Статус

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

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

../_images/22.png

1

Имя

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

2

Реципиенты

Согласующий

3

Приоритет

Средний

5

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

Средний

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

  • reject - отказать

3. Шлюз

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

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

../_images/24.png

1

Имя

Согласован

2

Статус

Согласован

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

../_images/25.png

1

Имя

Отказ

2

Статус

Отказано

Поток А

../_images/26.png

1

Имя

Согласован

2

Тип условия

Исходящий

3

Исходящий

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

Поток В

../_images/27.png

1

Имя

Отказ

2

Тип условия

Исходящий

3

Исходящий

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

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

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

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

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

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

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

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

../_images/28.png

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

../_images/29.png

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

Назначенную роль можно проверить через консоль браузера командой: await Citeck.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