Расширение процесса заявки на закупку оборудования: включение DMN в процесс
Примечание
Данная статья является продолжением Заявки на закупку оборудования.
Если вы следуете статье Процесс заявки на закупку оборудования. Добавление справочника. Журнал и форма не по умолчанию, удалите Script task «Сохранение комментария» перед началом.
Для работы в локальном рабочем пространстве перейдите в Администрирование → Модели DMN и нажмите + — Создать DMN модель.
Закупку оборудования всегда согласовывают: если заявка не соответствует установленным критериям — её отклоняют. Часть таких решений можно автоматизировать с помощью таблицы принятия решений (DMN).
DMN обрабатывает входящие данные процесса и на их основе принимает конечные или промежуточные бизнес-решения.
Создание таблицы принятия решений
Для таблицы необходимо определить критерии принятия решения. Основные критерии — наименование оборудования и его стоимость.
Перейдите в рабочее пространство администратора. В разделе Управление процессами выберите Модели DMN:
Нажмите «+ — Создать DMN модель»:
Заполните поля:
1 |
Идентификатор |
equipment-decision |
2 |
Имя |
Решение по заявке на покупку оборудования |
Нажмите «Сохранить».
Для перехода в редактор разверните раздел «По умолчанию», наведите курсор на созданную модель и нажмите:
Откроется решение:
Для ввода данных в таблицу кликните:
Двойным кликом по наименованию решения (1) перейдите в режим редактирования и введите Комп техника.
Hit policy (2) — политика выбора. Оставьте значение Unique (по умолчанию).
(3) — входные элементы, (4) — выходные элементы. Совокупность входных и выходного элементов формирует решение.
Примечание
Переменные входных и выходных элементов, указанные ниже, потребуются при настройке Business rule task в целевом бизнес-процессе.
Входные элементы
Дважды кликните поле под When и введите Наименование:
В свойствах укажите:
Поле |
Значение |
Пояснение |
|---|---|---|
Input Variable |
name |
Соответствует атрибуту |
Type |
string |
Типу |
Нажмите + для добавления второго входного элемента:
Дважды кликните поле под When и введите Стоимость:
В свойствах укажите:
Поле |
Значение |
Пояснение |
|---|---|---|
Input Variable |
price |
Соответствует атрибуту |
Type |
integer |
Типу |
Выходной элемент
Дважды кликните поле под Then и введите Решение:
В свойствах укажите:
Поле |
Значение |
Пояснение |
|---|---|---|
Output Name |
decision |
Передаётся в бизнес-процесс как переменная результата. |
Type |
string |
Правила
Автоматическое согласование, отказ или назначение согласующего зависит от наименования оборудования и его стоимости.
Для примера возьмём 3 товара: Монитор, Мышь, Ноутбук. Для каждого зададим диапазон стоимости и соответствующее решение:
|
Согласовано автоматически |
|
Отказано автоматически |
|
Назначение согласующего |
В зависимости от решения процесс пойдёт по соответствующему потоку управления.
Добавьте первое правило: для Монитора стоимостью 15 000 и менее — решение Approve.
Примечание
Поля Наименование и Решение имеют тип string, поэтому значения необходимо указывать в кавычках.
Нажмите «+» внизу таблицы или кликните в любом месте последней строки, чтобы добавить следующее правило.
Добавьте второе правило: для Монитора стоимостью больше 15 000 — решение Reject.
Итоговая таблица правил:
Наименование |
Цена |
Решение |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сохраните и опубликуйте таблицу принятия решений:
Добавление модели принятия решения в бизнес-процесс
Добавим модель в существующий бизнес-процесс. Для этого необходимо:
Настроить переменные процесса (1) — чтобы модель и бизнес-процесс могли взаимодействовать.
Добавить элемент Business rule task (2) — для встраивания модели в процесс.
Настроить шлюз и потоки управления (3) и (4) — для маршрутизации по нужным ветвям.
Добавление переменных в процесс (1)
Между элементами Статус «Заявка создана» и пользовательская задача «На согласование» добавьте скриптовую задачу.
Используя произвольное выделение (1), выберите и переместите элементы левее:
В меню выберите элемент «Task» и перетащите его после статуса «Заявка создана»:
Измените тип элемента на Script task:
Чтобы данные входных элементов решения стали доступны в бизнес-процессе, их необходимо передать в виде переменных.
Заполните форму:
Имя —
Стоимость и наименованиеСкрипт:
execution.setVariable('price', document.load("price?num")); execution.setVariable('name', document.load("name"));
Добавление элемента Business rule task (2)
Добавьте Business rule task следующим элементом после скриптовой задачи.
Используя произвольное выделение (1), выберите и переместите элементы левее. В меню выберите «Task» и перетащите его за созданную скриптовую задачу.
Измените тип элемента на Business Rule Task:
Заполните форму:
Имя —
Решение по заявкеРешение — выберите из журнала созданное ранее решение
Связь —
Актуальное(всегда последняя версия решения)Переменная результата —
decision(задана при создании выходного элемента)Сопоставление результатов решения —
Один объект (TypedValue)(так как на выходе одно значение)
Обновление шлюзов и потоков управления (3) и (4)
После элемента Решение по заявке добавьте шлюз с тремя выходами в соответствии с правилами, а также два дополнительных шлюза к первоначально созданному в базовом процессе:
Соедините элементы:
где:
1 — «Assign approver» (согласование назначенным сотрудником)
2 — «Approve» (автоматическое согласование)
3 — «Reject» (автоматический отказ)
1 — Согласование сотрудником |
Поток (1) является потоком по умолчанию. Для его настройки:
После потока по умолчанию следуют элементы базового процесса:
|
2 — Авт. согласование |
Поток автоматического согласования:
|
3 — Авт. отказ |
Поток автоматического отказа:
|
Потоки (4) и (5) были настроены в базовом процессе:
4 — Согласовано согласующим |
|
5 — Отказано согласующим |
Сохраните и опубликуйте процесс:
Проверка процесса
Проверим работу таблицы принятия решений.
Примечание
Чтобы решение принималось автоматически, название оборудования в форме заявки должно точно совпадать (включая регистр) с наименованием в таблице принятия решений. Будьте внимательны при использовании символов Unicode.
Автоматическое согласование
Создайте заявку в журнале:
Название оборудования —
МышьСтоимость —
500Инициатор — текущий пользователь
Согласующий — текущий пользователь или другой из оргструктуры
Нажмите «Сохранить». Статус заявки автоматически изменится на «Согласовано»:
Автоматический отказ
Создайте заявку в журнале:
Название оборудования —
МониторСтоимость —
250001Инициатор — текущий пользователь
Согласующий — текущий пользователь или другой из оргструктуры
Нажмите «Сохранить». Статус заявки автоматически изменится на «Отказано»:
Согласование сотрудником (поток по умолчанию)
Если указать наименование, отсутствующее в таблице, или указать:
Название оборудования —
НоутбукСтоимость —
65000Инициатор — текущий пользователь
Согласующий — текущий пользователь или другой из оргструктуры
процесс выполнится стандартным образом, как в базовой Заявке на закупку оборудования: