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

Примечание

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

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

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

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

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

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

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

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

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

../_images/013.png

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

../_images/023.png

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

../_images/032.png

1

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

equipment-desicion

2

Имя

Решение по заявке на покупку оборудования

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

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

../_images/041.png

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

../_images/051.png

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

../_images/062.png

../_images/072.png

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

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

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

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

Примечание

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

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

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

../_images/082.png

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

Поле

Значение

Пояснение

Input Variable

name

Соответствует атрибуту name из типа данных. Значение будет передаваться как переменная в бизнес-процесс.

Type

string

Типу string соответствует text в типе данных.

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

../_images/091.png

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

../_images/101.png

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

Поле

Значение

Пояснение

Input Variable

price

Соответствует атрибуту price из типа данных. Значение будет передаваться как переменная в бизнес-процесс.

Type

integer

Типу integer соответствует number в типе данных.

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

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

../_images/111.png

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

Поле

Значение

Пояснение

Output Name

decision

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

Type

integer

Правила

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

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

«Approve»

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

«Reject»

Отказано автоматически

«Assign approver»

Согласование конкретным сотрудником

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

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

Примечание

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

../_images/121.png

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

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

../_images/131.png

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

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

Цена

Решение

«Монитор»

<=15000

«Approve»

«Монитор»

>15000

«Reject»

«Мышь»

<=1500

«Approve»

«Мышь»

>1500

«Reject»

«Ноутбук»

<=60000

«Approve»

«Ноутбук»

>250000

«Reject»

«Ноутбук»

[60000..249999]

«Assign approver»

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

../_images/141.png

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

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

  • Настроить переменные процесса (1), чтобы модель и бизнес-процесс могли взаимодействовать друг с другом;

  • Добавить компонент Business rule task (2) – чтобы встроить в процесс модель;

  • Настроить шлюз и потоки управления (3) – чтобы объяснить системе по какому направлению необходимо идти

../_images/151.png

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

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

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

../_images/161.png

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

../_images/171.png

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

../_images/181.png

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

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

  • Имя - «Стоимость и наименование»,

  • в Скрипте указать:

execution.setVariable('price', document.load("price?num"));
execution.setVariable('name', document.load("name"));
../_images/191.png

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

Следующим элементом необходимо добавить Business rule task.

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

../_images/201.png

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

  • Имя – Решение по заявке.

  • Решение – выбрать из журнала созданное ранее решение.

  • Связь – Актуальное (всегда последняя версия решения).

  • Переменная результата - decision (заданная при создании Выходного элемента).

  • Сопоставление результатов решения – Один объект (TypedValue) – так как у нас на выходе одно значение.

../_images/211.png

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

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

../_images/221.png

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

../_images/23.png
  • 1 - «Assign approver» (Согласование согласующим)

  • 2 - «Approve» (Авт. согласование)

  • 3 - «Reject» (Авт. отказ)

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

Стрелка (1) означает поток по умолчанию и получается из стандартного потока следующим образом:
../_images/241.png
И далее за потоком по умолчанию следуют элементы базового процесса:
../_images/251.png

2 Авт. согласование

Поток автоматического согласования по итогу применения таблицы принятия решения:
  • Имя - «Авт. согласование»,

  • Скрипт:

decision === 'Approve';
../_images/261.png

3 Авт. отказ

Поток автоматического отказа по итогу применения таблицы принятия решения:
  • Имя - «Авт. отказ»,

  • Скрипт:

decision === 'Reject';
../_images/271.png
../_images/281.png

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

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


  • Укажите имя «Согласовано согласующим».

  • В поле «Тип условия» выберите вариант «Исходящий».

  • В появившемся поле «Исходящий» выберите вариант «На согласовании согласующим - Согласовать».

../_images/291.png

5 Отказано согласующим


  • Укажите имя «Отказано согласующим».

  • В поле «Тип условия» выберите вариант «Исходящий».

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

../_images/301.png

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

../_images/311.png

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

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

Примечание

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

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

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

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

  • Название оборудование – Мышь

  • Стоимость - 500

  • Инициатор – текущий пользователь

  • Согласующий – текущий пользователь

../_images/32.png

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

../_images/33.png

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

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

  • Название оборудование – Монитор

  • Стоимость - 250001

  • Инициатор – текущий пользователь

  • Согласующий – текущий пользователь

../_images/34.png

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

../_images/35.png

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

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

  • Название оборудование – Ноутбук

  • Стоимость - 65000

  • Инициатор – текущий пользователь

  • Согласующий – текущий пользователь

../_images/36.png

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

../_images/37.png