Дерево принятия решений или бизнес-правила
Дерево принятия решений состоит из связанных бизнес-правил. Любое правило из этого дерева может быть вызвано в бизнес-процессе. При этом, чтобы выполнилось вызываемое бизнес-правило, необходимо, чтобы выполнились все зависимые бизнес-правила, начиная с последнего узла.

Рассмотрим на примере дерева принятия решений "правило ruleCheckAge". Простой вариант: в бизнес-процессе можно инициализировать вызов правила "max" - в таком случае сначала вызовутся два зависимых-дочерних правила, будет произведено вычисление и только потом выполнится "max". А можно инициализировать вызов правила "Итоговое решение" и тогда будут вызваны всего его зависимости, начиная с самых нижних правил-узлов: проверка на VIP, Возраст с учетом срока кредита -> max, Минимальный возраст клиента, Пол клиента.
У диаграммы дерева принятия решений один основной элемент "решение/decision", который имеет два типа:

-
Literal expression / решение язык выражений - элемент нотации DMN, в котором с помощью скриптового языка можно запрограммировать логику и/или описать функцию по обработке данных.
Поддерживается несколько языков:- FEEL - язык оценки выражений, который используется в шлюзах. Описание языка в документации камунды (opens in a new tab);
- JUEL - повсеместно используется в диаграмме процесса, пример:
${content.contains("Camunda")}. Может использоваться совместно с FEEL; - JavaScript;
- Groovy;
- Python;
- JRuby;

-
Table / решение в виде таблицы - элемент нотации DMN в форме таблицы. Входных параметров может быть несколько, тип входного параметра является простым, допускается использование списков.
Выходных параметров также может быть несколько. Формат выходных параметров может иметь:- 1 столбец, имеющий одно значение - на выходе один параметр имеющий простой тип;
- 2+ столбцов - по умолчанию выходные параметры определяются в список "карта" = ключ-значение. Требуемый формат можно задать на элементе "Задача" в диаграмме процесса. Доступны следующие решения для результата:
- singleEntry - используется когда в выходных параметрах указан один столбец;
- singleResult - используется когда в выходных параметрах указано 2+ столбца. Используется для всех политик правила кроме: unique, first, всех видов collect;
- colectEntries - используется когда в выходных параметрах указан один столбец, но по политике правила возможно несколько результирующих значений (выполнений условий правила);
- resultList - используется когда в выходных параметрах указано 2+ столбца, при этом по политике правила возможно несколько результирующих значений (выполнений условий правила).
Проектирование элемента нотации BPMN для вызова бизнес-правила

Для того, чтобы в ходе исполнения бизнес-процесса было вызвано бизнес-правило, необходимо спроектировать элемент диаграммы "Задача" нотации BPMN как на примере выше. Для того, чтобы корректно спроектировать элемент понадобится:
- указать способ имплементации - DMN;
- заполнить поле "Ссылка на Decision (правило) - указать системное наименование правила (идентификатор) из DMN диаграммы";
- указать способ связывания - версия бизнес-правила, которая будет использоваться. Можно указать последнюю или номер версии;
- нить "Переменная результата" - наименование параметра, в который будет записан результат;
- указать "Карта Результата решения" - формат выходных параметров;
Входные параметры в бизнес-правило передаются из контекста бизнес-процесса. Если в результате исполнения бизнес-правила входных переменных в контексте бизнес-процесса не окажется, то будет инициирована ошибка, и произойдет откат транзакции к последней точке сохранения.
Политика применения правил / Hit Policy
Политика определяет сколько правил таблицы решений может быть удовлетворено, и какие из удовлетворенных правил включаются в результат решения.

Политики Unique,AnyиFirst всегда будут возвращать не более одного удовлетворяемого правила. Политики попаданий Rule Order и Collect могут возвращать несколько удовлетворенных правил.
Поддерживаются следующие политики:
- Unique - может быть выполнено 0-1 правил. Если выполняется более 1 правила, то происходит нарушение политики;
- Any - можно удовлетворить несколько правил. Однако все удовлетворяемые правила должны генерировать один и тот же результат. Если выполняются несколько правил, которые генерируют разные выходные данные, политика попаданий нарушается;
- First - можно удовлетворить несколько правил. Результат таблицы решений содержит только вывод первого выполненного правила;
- Rule order - можно удовлетворить несколько правил. Результат таблицы решений содержит выходные данные всех удовлетворяемых правил в порядке следования правил в таблице решений;
- Collect - можно удовлетворить несколько правил. Результат таблицы решений содержит вывод всех удовлетворяемых правил в произвольном порядке в виде списка. Для коллекции можно указать агрегатор. Если указан агрегатор, то результат будет содержать только одну выходную запись, а функция агрегатора будет применена ко всем удовлетворенным правилам;
- Priority;
- Output order
Примеры диаграмм дерева принятия решений
Скачать DMN ruleCheckAge Скачать DMN скоринговая карта клиента