Процесс заявки на закупку оборудования. Включение 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, поэтому элементы обязательно указывать в кавычках.

../_images/123.png

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

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

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

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

Цена

Решение


"Монитор"

<=15000

"Approve"

"Монитор"

>15000

"Reject"

"Мышь"

<=1500

"Approve"

"Мышь"

>1500

"Reject"

"Ноутбук"

<=60000

"Approve"

"Ноутбук"

>250000

"Reject"

"Ноутбук"

[60000..249999]

"Assign approver"

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

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

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

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

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

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

../_images/152.png

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

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

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

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

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

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

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

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

  • в Скрипте:

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

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

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

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

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

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

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

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

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

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

../_images/212.png

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

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

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

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

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

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

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

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

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

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

  • Скрипт:

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

3 Авт. отказ

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

  • Скрипт:

decision === 'Reject';
../_images/272.png
../_images/282.png

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

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


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

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

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

../_images/292.png

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


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

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

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

../_images/302.png

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

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

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

Примечание

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

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

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

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

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

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

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

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

../_images/321.png

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

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

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

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

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

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

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

../_images/341.png

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

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

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

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

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

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

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

../_images/36.png

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