Процесс заявки на закупку оборудования. Включение DMN в процесс
Примечание
Данная статья является продолжением работы с созданным ранее бизнес-процессом Заявка на закупку оборудования
Закупку оборудования всегда согласовывают, и если заявка по каким-то критериям не проходит – отклоняют.
В зависимости от условий согласование/отказ в покупке некоторых видов оборудования можно автоматизировать. Для рассмотрения данного варианта подходит использование DMN, а в частности таблицы принятия решений
DMN служит для сортировки входящих данных процесса или уменьшение их количества.
Данная функциональность, основываясь на входящих данных, помогает принять конечные или промежуточные решения по бизнес-процессу.
Для начала работы необходимо создать саму таблицу.
Создание таблицы принятия решений
Для таблицы требуется определить критерии, по которым будет приниматься решение. Основные критерии - наименование оборудования и его стоимость.
Для создания таблицы принятия решений перейдите левом меню в пункт «Моделирование – Методы принятия решения»:
Далее создайте DMN модель:
Заполните поля:
1 |
Идентификатор |
equipment-desicion |
2 |
Имя |
Решение по заявке на покупку оборудования |
Нажмите «Сохранить».
Для перехода к редактору разверните раздел «По умолчанию», наведите курсор на созданную модель и нажмите:
Откроется решение:
Для ввода данных в таблицу кликните:
Двойным кликом по наименованию решения (1) перейдите в режим редактирования и назовите решение Комп техника.
Hit policy (2) - политика выбора Определим ее как Unique (по умолчанию).
(3) – входные элементы, (4) – выходные элементы.
Совокупность входных элементов и выходного формируют решение.
Примечание
Указанные ниже переменные входных и выходных элементов выбраны не случайно. Они потребуются для настройки компонента business rule task в целевом бизнес-процессе.
Входные элементы
Для установки наименования входного элемента, дважды кликните поле под When и введите Наименование:
В свойствах укажите:
Поле |
Значение |
Пояснение |
---|---|---|
Input Variable |
name |
Соответствует атрибуту name из типа данных. Значение будет передаваться как переменная в бизнес-процесс. |
Type |
string |
Типу string соответствует text в типе данных. |
Нажмите + для добавления второго входного элемента:
Для установки наименования входного элемента, дважды кликните поле под When и введите Стоимость:
В свойствах укажите:
Поле |
Значение |
Пояснение |
---|---|---|
Input Variable |
price |
Соответствует атрибуту price из типа данных. Значение будет передаваться как переменная в бизнес-процесс. |
Type |
integer |
Типу integer соответствует number в типе данных. |
Выходной элемент
Для установки наименования выходного элемента, дважды кликните поле под Then и введите Решение:
В свойствах укажите:
Поле |
Значение |
Пояснение |
---|---|---|
Output Name |
decision |
Значение будет передаваться в бизнес-процесс как переменная результата. |
Type |
string |
Правила
Согласована / не согласована покупка автоматически, или необходимо согласование конкретного сотрудника зависит от оборудования и его стоимости.
Для примера выберем 3 товара: Монитор, Мышь, Ноутбук. Укажем для каждого товара лимит/ диапазон стоимости и соответствующее возможное решение:
Approve |
Согласовано автоматически |
Reject |
Отказано автоматически |
Assign approver |
Согласование конкретным сотрудником |
В зависимости от решения процесс по соответствующему потоку управления.
Добавьте первое правило, указывающее, что для Монитора стоимостью 15 000 или менее — решение Approve.
Примечание
Наименование и Решение типа string, поэтому элементы обязательно указывать в кавычках.

Нажмите кнопку «+» внизу таблицы или просто нажмите в любом месте последней строки.
Добавьте второе правило, указывающее, что для Монитора стоимостью больше 15 000 - решение Reject.
Финальная таблица:
Наименование |
Цена |
Решение |
---|---|---|
"Монитор"
|
<=15000
|
"Approve"
|
"Монитор"
|
>15000
|
"Reject"
|
"Мышь"
|
<=1500
|
"Approve"
|
"Мышь"
|
>1500
|
"Reject"
|
"Ноутбук"
|
<=60000
|
"Approve"
|
"Ноутбук"
|
>250000
|
"Reject"
|
"Ноутбук"
|
[60000..249999]
|
"Assign approver"
|
Теперь таблицу принятия решения можно сохранить и опубликовать, нажав:
Добавление модели принятия решения в бизнес-процесс
Далее добавим модель в существующий бизнес-процесс. Для этого необходимо:
Добавление переменной в процесс (1)
Между компонентами Статус «Заявка создана» и пользовательская задача «На согласование» необходимо добавить скриптовую задачу.
Для этого сначала удалите стрелку между компонентами Set status и User task:
Далее в контекстном меню нажмите на компонент «Task»:
Измените его тип на Script task:
Чтобы данные входных элементов решения стали доступны в бизнес-процессе, их необходимо ввести в виде переменных.
Укажите в форме:
Добавление компонентам Business rule task (2)
Следующим компонентом необходимо добавить Business rule task.
В контекстном меню нажмите на компонент «Task», измените его тип на Business Rule Task:
Укажите в форме:
Имя – Решение по заявке.
Решение – выбрать из журнала созданное ранее решение.
Связь – Актуальное (всегда последняя версия решения).
Переменная результата - decision (заданная при создании Выходного элемента).
Сопоставление результатов решения – Один объект (TypedValue) – так как у нас на выходе одно значение.
![]()
Обновление шлюзов и потоков управления (3)
Шлюзы и потоки управления рассмотрим на финальной схеме:
Следующий компонент - шлюз с 3 выходами в соответствии с правилами:
1 - «Assign approver» (Согласование согласующим)
2 - «Approve» (Авт. согласование)
3 - «Reject» (Авт. отказ)
1 Согласование согласующим |
Стрелка (1) означает поток по умолчанию и получается из стандартного потока следующим образом:
И далее за потоком по умолчанию следуют компоненты базового процесса:
|
2 Авт. согласование |
Поток автоматического согласования по итогу применения таблицы принятия решения:
|
3 Авт. отказ |
Поток автоматического отказа по итогу применения таблицы принятия решения:
|

Обратите внимание на потоки (4) и (5). Они были настроены в базовом процессе:
4 Согласовано согласующим |
|
5 Отказано согласующим |
Процесс можно сохранить и опубликовать, нажав:
Проверка процесса
Проверим, как работает таблица принятия решения.
Примечание
Чтобы решение принималось автоматически, название оборудования в форме завки должно четкое соответствовать (включая регистр) наименованию в таблице принятия решений.
Будьте внимательны при сравнении строк и использовании символов в unicode.
Случай автоматического согласования
В журнале создадим заявку с данными:
И нажмите «Сохранить». Заявка создается успешно и ее статус автоматически становится «Согласовано»:
Случай автоматического отказа
В журнале создадим заявку с данными:
И нажмите «Сохранить». Заявка создается успешно и ее статус автоматически становится «Отказано»:
Случай хода процесса по потоку по умолчанию (с согласованием сотрудником)
Если указать любое другое название оборудования, не указанное в таблице, или указать:
то процесс пойдет стандартным способом, как в первоначальной Заявке на закупку оборудования: