Пример использования динамической роли DMN в бизнеc-процессе
Примечание
В статье указаны произвольные пользователи и группы.
Добавьте пользователей, как описано в статье Создание пользователей для ecos-community-demo
Добавьте группы, как описано в Создание группы
Создадим простой бизнес-процесс для проверки назначения динамической роли с использованием таблицы DMN при согласовании закупки мебели.
В зависимости от условий закупки прописанных в таблице DMN, роль согласующего будет вычисляться автоматически.
Для этого:
Создаем таблицу принятия решения (DMN)
Создаем Тип данных, указываем в нем динамическую роль 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 наименования мебели. Укажем для каждого наименования соответствующего согласующего.
Примечание
Системное имя пользователя можно получить в Оргструктуре, открыв профиль пользователя:
Группы:
Добавьте первое правило, указывающее, что для наименования «Стол» — согласующий с системным именем «elvira.danilenko» и группа «GROUP_company_chief_accountant».
Примечание
Если указывать группу, то перед именем группы необходимо добавить GROUP_
Наименование и Согласующий string, поэтому обязательно элементы указываем в кавычках.
Несколько значений добавляется через запятую без пробелов в одних кавычках.
Нажмите кнопку 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, чтобы старт процесса осуществлялся автоматически. Подробно о запуске процесса |
Рассмотрим поэлементно:
1. Установить статус
1 |
Имя |
На согласовании |
2 |
Статус |
На согласовании |
2. Пользовательская задача
1 |
Имя |
Согласование |
2 |
Реципиенты |
Согласующий |
3 |
Приоритет |
Средний |
5 |
Результаты задачи |
Средний
|
3. Шлюз
Простой эксклюзивный шлюз.
4. Установить статус
1 |
Имя |
Согласован |
2 |
Статус |
Согласован |
5. Установить статус
1 |
Имя |
Отказ |
2 |
Статус |
Отказано |
Поток А
1 |
Имя |
Согласован |
2 |
Тип условия |
Исходящий |
3 |
Исходящий |
Согласование – согласовать |
Поток В
1 |
Имя |
Отказ |
2 |
Тип условия |
Исходящий |
3 |
Исходящий |
Согласование – отказать |
6, 7 Конечное событие
Конечное событие (заканчивающее бизнес-процесс).
Добавить журнал в меню
Добавьте в меню журнал type$furniture-order.
Подробно о добавлении журнала
Проверка процесса
Перейдите в журнал, создайте новый элемент, заполните карточку, нажмите «Сохранить»:
Статус изменится на «На согласовании». Исполнитель – Александра Фильченко (аккаунт alexandra.filchenko) и Главный бухгалтер (группа company_chief_accountant)
Проверка прав через консоль браузера
Назначенную роль можно проверить через консоль браузера командой:
await Citeck.Records.get('emodel/type-id@local-id').load('_roles.assigneesOf.approver[]?str', true)
где
approver
- id роли из типа данных
emodel/type-id@local-id
– можно взять из строки браузера:
Система выдаст кому назначена данная задача согласования.