Skip to content

Latest commit

 

History

History
563 lines (414 loc) · 17.5 KB

dmn_dynamic_role.rst

File metadata and controls

563 lines (414 loc) · 17.5 KB

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

Note

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

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

Создайте группы, как описано в :ref:`Создание группы<new_group>`

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

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

Для этого:

  1. Создаем таблицу принятия решения (DMN)
  2. Создаем Тип данных, указываем в нем динамическую роль DMN
  3. Создаем простой бизнес-процесс
  4. Создаем Заказ мебели и проверяем назначенного в бизнес-процессе согласующего

Таблица DMN

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

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

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

_static/dmn_dynamic_role/01.png

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

_static/dmn_dynamic_role/02.png

_static/dmn_dynamic_role/03.png

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

1 Идентификатор approve-furniture
2 Имя Согласование заявки мебель

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

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

_static/dmn_dynamic_role/04.png

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

_static/dmn_dynamic_role/05.png

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

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

_static/dmn_dynamic_role/06.png

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

Ключ name входной элемент для решения, который далее необходимо указать в expression.
Значение name атрибут типа данных. То самое условие, по которому будет вычисляться роль.

Note

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

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

_static/dmn_dynamic_role/07.png

_static/dmn_dynamic_role/08.png

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

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

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

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

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

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

_static/dmn_dynamic_role/09.png

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

Поле Значение Пояснение
expression name Ключ из модели
Type string Соответствует типу атрибута name из типа данных

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

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

_static/dmn_dynamic_role/10.png

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

Поле Значение Пояснение
Type string Чтобы решение DMN вернуло String с именами реципиентов.

Правила

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

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

Note

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

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

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

_static/dmn_dynamic_role/11.png

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

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

_static/dmn_dynamic_role/12.png

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

Наименование Согласующий
"Стол" "entdirgorbunkov,GROUP_it"
"Шкаф" "entbuhgorbunkov"
"Стул" "accountant"

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

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

_static/dmn_dynamic_role/13.png

Тип данных

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

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

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

_static/dmn_dynamic_role/14.png
1 id furniture-order
2 Имя Заказ мебели
3 Родитель Кейс
4 Форма Оставить по умолчанию (система автоматически сгенерирует форму по тем атрибутам, которые мы укажем далее, но автоматически сгенерированные формы нельзя редактировать)
5 Журнал Оставить по умолчанию (система автоматически сгенерирует журнал по тем атрибутам, которые мы укажем далее, но автоматически сгенерированные журналы нельзя редактировать)

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

_static/dmn_dynamic_role/15.png
Id (1) Имя (2) Тип (3)
name Наименование Text
price Цена Number

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

_static/dmn_dynamic_role/16.png
Id (1) Имя (2)
approver Согласующий

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

_static/dmn_dynamic_role/17.png

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

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

_static/dmn_dynamic_role/18.png
Id (1) Имя (2)
to_approve На согласовании
approve Согласован
reject Отказано

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

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

Подробно о :ref:`создании бизнес-процесса <bp_sample>`

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

_static/dmn_dynamic_role/19.png
1 Идентификатор furniture-order-bpmn
2 Имя Заказ мебели
3 Тип данных Заказ мебели
4 Включен True. Отметка об активности процесса.
5 Автоматический старт процесса. True, чтобы старт процесса осуществлялся автоматически. Подробно о :ref:`запуске процесса<new_bp_start>`

_static/dmn_dynamic_role/20.png

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

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

_static/dmn_dynamic_role/21.png
1 Имя На согласовании
2 Статус На согласовании

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

_static/dmn_dynamic_role/22.png
1 Имя Согласование
2 Реципиенты Согласующий
3 Форма задачи
К задаче необходимо создать форму.
Заполните поля следующими данными:
  • Идентификатор формы - «furniture-request-approve-form»

  • Название формы – «Форма согласования заказа мебели»

    _static/dmn_dynamic_role/23.png
4 Приоритет Средний
5 Результаты задачи

Средний

  • approve - согласовать
  • reject - отказать

3. Шлюз

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

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

_static/dmn_dynamic_role/24.png
1 Имя Согласован
2 Статус Согласован

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

_static/dmn_dynamic_role/25.png
1 Имя Отказ
2 Статус Отказано

Поток А

_static/dmn_dynamic_role/26.png
1 Имя Согласован
2 Тип условия Исходящий
3 Исходящий Согласование – согласовать

Поток В

_static/dmn_dynamic_role/27.png
1 Имя Отказ
2 Тип условия Исходящий
3 Исходящий Согласование – отказать

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

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

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

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

Подробно о :ref:`добавлении журнала<journal_to_menu>`

Прохождение процесса

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

_static/dmn_dynamic_role/28.png

Статус изменится на «На согласовании». Исполнитель – entDir (аккаунт entdirgorbunkov) и ИТ-отдел (группа it)

_static/dmn_dynamic_role/29.png

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

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

где

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

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

_static/dmn_dynamic_role/30.png

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