Проектирование бизнес-правил

DMN

Поддерживаемые типы

Камунда поддерживает следующие типы в DMN:

  • Number
  • String
  • Boolean
  • Time
  • Date
  • Date-Time
  • Days-Time-Duration
  • Years-Months-Duration

Таблица принятия решений

Ввод данных

Таблица решений может иметь один или несколько входов. Столбец ввода описывается заголовком, выражением и типом ввода.

empty

Входное выражение состоит из следующих полей:

  • заголовок входящего выражения;
  • expression/выражение - обычно это переменная;
  • expression language/язык выражений - язык скрипта;
  • input variable/входная переменная - если входное выражение является оценочным (наприме currentSeason != "Fall"), то результат оценки выражения будет записно в это поле;
  • type/тип - тип входящего выражения.

Вывод данных

Описывается точно также как и входное выражение. Стобец выходного выражения имеет теже самые поля.

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

⚠️

Выходное имя не может содержать никаких специальных символов или символов (например, пробелов, тире и т. д.). Выходным именем может быть любая буквенно-цифровая строка, включая '_' символ. Для комбинации слов рекомендуется использовать формат camelCase или snake_case. Формат kebab-case недопустим, так как содержит оператор '-'. Если имя вывода содержит специальный символ, то к выходу нельзя получить доступ ни в зависимом решении, ни в вызывающем процессе BPMN.

Политика применения правил / Hit Policy

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

Политики Unique, Any и First всегда будут возвращать не более одного удовлетворяемого правила. Политики попаданий Rule Order и Collect могут возвращать несколько удовлетворенных правил.

Поддерживаются следующие политики:

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

Скриптовое выражение

Данное решение представляет собой логику решения, которая может быть представлена в виде скриптового выражения. Поддерживается несколько языков:

empty