Skip to content

Latest commit

 

History

History
505 lines (354 loc) · 20.6 KB

equipment_request_p2.rst

File metadata and controls

505 lines (354 loc) · 20.6 KB

Процесс запроса на закупку оборудования. Включение DMN в процесс

Note

Данная статья является продолжение работы с созданным ранее бизнес-процессом :ref:`Запрос на закупку оборудования<sample_request>`

Закупку оборудования всегда согласовывают, и если заявка по каким-то критериям не проходит – отклоняют.

В зависимости от условий согласование/отказ в покупке некоторых видов оборудования можно автоматизировать. Для рассмотрения данного варианта подходит использование DMN, а в частности :ref:`таблицы принятия решений<dmn_decision>`

DMN служит для сортировки входящих данных процесса или уменьшение их количества.

Данная функциональность, основываясь на входящих данных, помогает принять конечные или промежуточные решения по бизнес-процессу.

Для начала работы необходимо создать саму таблицу.

Создание таблицы принятия решений

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

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

_static/equipment_request_p2/01.png

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

_static/equipment_request_p2/02.png

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

_static/equipment_request_p2/03.png
1 Идентификатор equipment-desicion
2 Имя Решение по заявке на покупку оборудования

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

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

_static/equipment_request_p2/04.png

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

_static/equipment_request_p2/05.png

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

_static/equipment_request_p2/06.png

_static/equipment_request_p2/07.png

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

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

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

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

Note

Указанные ниже переменные входных и выходных элементов выбраны не случайно. Они потребуются для настройки компонента business rule task в целевом бизнес-процессе.

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

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

_static/equipment_request_p2/08.png

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

Поле Значение Пояснение
Input Variable name Соответствует атрибуту name из :ref:`типа данных<sample_request_attributes>`. Значение будет передаваться как переменная в бизнес-процесс.
Type string Типу string соответствует text в :ref:`типе данных<sample_request_attributes>`.

Нажмите + для добавления второго входного элемента:

_static/equipment_request_p2/09.png

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

_static/equipment_request_p2/10.png

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

Поле Значение Пояснение
Input Variable price Соответствует атрибуту price из :ref:`типа данных<sample_request_attributes>`. Значение будет передаваться как переменная в бизнес-процесс.
Type integer Типу integer соответствует number в :ref:`типе данных<sample_request_attributes>`.

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

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

_static/equipment_request_p2/11.png

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

Поле Значение Пояснение
Output Name decision Значение будет передаваться в бизнес-процесс как переменная результата.
Type integer  

Правила

Согласована / не согласована покупка автоматически, или необходимо согласование конкретного сотрудника зависит от оборудования и его стоимости.

Для примера выберем 3 товара: Монитор, Мышь, Ноутбук. Укажем для каждого товара лимит/ диапазон стоимости и соответствующее возможное решение:

"Approve" Согласовано автоматически
"Reject" Отказано автоматически
"Assign approver" Согласование конкретным сотрудником

В зависимости от решения процесс по соответствующему потоку управления.

Добавьте первое правило, указывающее, что для «Монитора» стоимостью 15 000 или менее — решение «Approve».

Note

Наименование и Решение типа string, поэтому элементы обязательно указывать в кавычках.

_static/equipment_request_p2/12.png

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

Добавьте второе правило, указывающее, что для «Монитора» стоимостью больше 15 000 - решение «Reject».

_static/equipment_request_p2/13.png

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

Наименование Цена Решение
"Монитор" <=15000 "Approve"
"Монитор" >15000 "Reject"
"Мышь" <=1500 "Approve"
"Мышь" >1500 "Reject"
"Ноутбук" <=60000 "Approve"
"Ноутбук" >250000 "Reject"
"Ноутбук" [60000..249999] "Assign approver"

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

_static/equipment_request_p2/14.png

Добавление модели принятия решения в бизнес-процесс

Далее необходимо добавить модель в существующий бизнес-процесс. Для этого необходимо:

  • Настроить переменные процесса (1), чтобы модель и бизнес-процесс могли взаимодействовать друг с другом;
  • Добавить компонент Business rule task (2) – чтобы встроить в процесс модель;
  • Настроить шлюз и потоки управления (3) – чтобы объяснить системе по какому направлению необходимо идти
_static/equipment_request_p2/15.png

Добавление переменной в процесс (1)

Между элементами Статус «Заявка создана» и пользовательская задача «На согласование» необходимо добавить :ref:`скриптовую задачу<script_task>`.

Для этого сначала удалите стрелку между элементами Set status и User task:

_static/equipment_request_p2/16.png

Далее в контекстном меню нажмите на компонент «Task»:

_static/equipment_request_p2/17.png

Измените его тип на Script task:

_static/equipment_request_p2/18.png

Чтобы данные входных элементов решения стали доступны в бизнес-процессе, их необходимо ввести в виде переменных.

Укажите в форме:

  • Имя - «Стоимость и наименование»,
  • в Скрипте указать:
execution.setVariable('price', document.load("price?num"));
execution.setVariable('name', document.load("name"));
_static/equipment_request_p2/19.png

Добавление элемента Business rule task (2)

Следующим элементом необходимо добавить :ref:`Business rule task<business_rule_task>`.

В контекстном меню нажмите на компонент «Task», измените его тип на Business Rule Task:

_static/equipment_request_p2/20.png

Укажите в форме:

  • Имя – Решение по заявке.
  • Решение – выбрать из журнала созданное ранее решение.
  • Связь – Актуальное (всегда последняя версия решения).
  • Переменная результата - decision (заданная при создании Выходного элемента).
  • Сопоставление результатов решения – Один объект (TypedValue) – так как у нас на выходе одно значение.
_static/equipment_request_p2/21.png

Обновление шлюзов и потоков управления (3)

Шлюзы и потоки управления рассмотрим на финальной схеме:

_static/equipment_request_p2/22.png

Следующий компонент - шлюз с 3 выходами в соответствии с :ref:`правилами<sample_request_dmn_rules>`:

_static/equipment_request_p2/23.png
  • 1 - "Assign approver" (Согласование согласующим)
  • 2 - "Approve" (Авт. согласование)
  • 3 - "Reject" (Авт. отказ)
1 Согласование согласующим
Стрелка (1) означает поток по умолчанию и получается из стандартного потока следующим образом:
_static/equipment_request_p2/24.png
И далее за потоком по умолчанию следуют элементы базового процесса:
_static/equipment_request_p2/25.png
2 Авт. согласование
Поток автоматического согласования по итогу применения таблицы принятия решения:
  • Имя - «Авт. согласование»,
  • Скрипт:
decision === 'Approve';
_static/equipment_request_p2/26.png
3 Авт. отказ
Поток автоматического отказа по итогу применения таблицы принятия решения:
  • Имя - «Авт. Авт. отказ»,
  • Скрипт:
decision === 'Reject';
_static/equipment_request_p2/27.png

_static/equipment_request_p2/28.png

Обратите внимание на потоки (4) и (5). Они были настроены в базовом процессе:

4 Согласовано согласующим

  • Укажите имя «Согласовано согласующим».
  • В поле «Тип условия» выберите вариант «Исходящий».
  • В появившемся поле «Исходящий» выберите вариант «На согласовании согласующим - Согласовать».
_static/equipment_request_p2/29.png
5 Отказано согласующим

  • Укажите имя «Отказано согласующим».
  • В поле «Тип условия» выберите вариант «Исходящий».
  • В появившемся поле «Исходящий» выберите вариант «На согласовании согласующим - Отказать».
_static/equipment_request_p2/30.png

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

_static/equipment_request_p2/31.png

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

Проверим, как работает таблица принятия решения.

Note

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

Будьте внимательны при сравнении строк и использовании символов в unicode.

Случай автоматического согласования

В журнале создадим заявку с данными:

  • Название оборудование – Мышь
  • Стоимость - 500
  • Инициатор – текущий пользователь
  • Согласующий – текущий пользователь
_static/equipment_request_p2/32.png

И нажмите «Сохранить». Заявка создается успешно и ее статус автоматически становится «Согласовано»:

_static/equipment_request_p2/33.png

Случай автоматического отказа

В журнале создадим заявку с данными:

  • Название оборудование – Монитор
  • Стоимость - 250001
  • Инициатор – текущий пользователь
  • Согласующий – текущий пользователь
_static/equipment_request_p2/34.png

И нажмите «Сохранить». Заявка создается успешно и ее статус автоматически становится «Отказано»:

_static/equipment_request_p2/35.png

Случай хода процесса по потоку по умолчанию (с согласованием сотрудником)

Если указать любое другое название оборудования, не указанное в таблице, или указать:

  • Название оборудование – Ноутбук
  • Стоимость - 65000
  • Инициатор – текущий пользователь
  • Согласующий – текущий пользователь
_static/equipment_request_p2/36.png

то процесс пойдет стандартным способом, как в первоначальном :ref:`Запросе на закупку оборудования<sample_request>`:

_static/equipment_request_p2/37.png