Расширение процесса заявки на закупку оборудования: включение DMN в процесс

Примечание

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

Если вы следуете статье Процесс заявки на закупку оборудования. Добавление справочника. Журнал и форма не по умолчанию, удалите Script task «Сохранение комментария» перед началом.

Для работы в локальном рабочем пространстве перейдите в Администрирование → Модели DMN и нажмите + — Создать DMN модель.

Закупку оборудования всегда согласовывают: если заявка не соответствует установленным критериям — её отклоняют. Часть таких решений можно автоматизировать с помощью таблицы принятия решений (DMN).

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

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

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

Перейдите в рабочее пространство администратора. В разделе Управление процессами выберите Модели DMN:

../_images/019.png

Нажмите «+ — Создать DMN модель»:

../_images/028.png

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

../_images/036.png

1

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

equipment-decision

2

Имя

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

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

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

../_images/045.png

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

../_images/054.png

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

../_images/065.png

../_images/075.png

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

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

(3) — входные элементы, (4) — выходные элементы. Совокупность входных и выходного элементов формирует решение.

Примечание

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

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

Дважды кликните поле под When и введите Наименование:

../_images/085.png

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

Поле

Значение

Пояснение

Input Variable

name

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

Type

string

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

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

../_images/093.png

Дважды кликните поле под When и введите Стоимость:

../_images/102.png

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

Поле

Значение

Пояснение

Input Variable

price

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

Type

integer

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

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

Дважды кликните поле под Then и введите Решение:

../_images/113.png

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

Поле

Значение

Пояснение

Output Name

decision

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

Type

string

Правила

Автоматическое согласование, отказ или назначение согласующего зависит от наименования оборудования и его стоимости.

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

"Approve"

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

"Reject"

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

"Assign approver"

Назначение согласующего

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

Добавьте первое правило: для Монитора стоимостью 15 000 и менее — решение Approve.

Примечание

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

../_images/122.png

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

Добавьте второе правило: для Монитора стоимостью больше 15 000 — решение Reject.

../_images/132.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) и (4) — для маршрутизации по нужным ветвям.

../_images/151.png

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

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

Используя произвольное выделение (1), выберите и переместите элементы левее:

../_images/162.png

В меню выберите элемент «Task» и перетащите его после статуса «Заявка создана»:

../_images/172.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 следующим элементом после скриптовой задачи.

Используя произвольное выделение (1), выберите и переместите элементы левее. В меню выберите «Task» и перетащите его за созданную скриптовую задачу.

Измените тип элемента на Business Rule Task:

../_images/201.png

Заполните форму:

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

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

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

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

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

../_images/211.png

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

После элемента Решение по заявке добавьте шлюз с тремя выходами в соответствии с правилами, а также два дополнительных шлюза к первоначально созданному в базовом процессе:

../_images/23_0.png

Соедините элементы:

../_images/231.png

где:

  • 1«Assign approver» (согласование назначенным сотрудником)

  • 2«Approve» (автоматическое согласование)

  • 3«Reject» (автоматический отказ)

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

Поток (1) является потоком по умолчанию. Для его настройки:
После потока по умолчанию следуют элементы базового процесса:

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

Поток автоматического согласования:
  • ИмяАвт. согласование

  • Скрипт:

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

3 — Авт. отказ

Поток автоматического отказа:
  • ИмяАвт. отказ

  • Скрипт:

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

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

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


  • ИмяСогласовано согласующим

  • Тип условияИсходящий

  • ИсходящийНа согласовании согласующим Согласовать

../_images/292.png

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


  • ИмяОтказано согласующим

  • Тип условияИсходящий

  • ИсходящийНа согласовании согласующим Отказать

../_images/302.png

Сохраните и опубликуйте процесс:

../_images/312.png

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

Проверим работу таблицы принятия решений.

Примечание

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

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

Создайте заявку в журнале:

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

  • Стоимость500

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

  • Согласующий — текущий пользователь или другой из оргструктуры

../_images/321.png

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

../_images/331.png

Автоматический отказ

Создайте заявку в журнале:

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

  • Стоимость250001

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

  • Согласующий — текущий пользователь или другой из оргструктуры

../_images/341.png

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

../_images/35.png

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

Если указать наименование, отсутствующее в таблице, или указать:

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

  • Стоимость65000

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

  • Согласующий — текущий пользователь или другой из оргструктуры

../_images/36.png

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

../_images/37.png