DMN
Поддерживаемые типы
Камунда поддерживает следующие типы в DMN:
- Number
- String
- Boolean
- Time
- Date
- Date-Time
- Days-Time-Duration
- Years-Months-Duration
Таблица принятия решений
Ввод данных
Таблица решений может иметь один или несколько входов. Столбец ввода описывается заголовком, выражением и типом ввода.
Входное выражение состоит из следующих полей:
- заголовок входящего выражения;
- 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.
Скриптовое выражение
Данное решение представляет собой логику решения, которая может быть представлена в виде скриптового выражения. Поддерживается несколько языков:
- FEEL - язык оценки выражений, который используется в шлюзах. Описание языка в документации камунды. (opens in a new tab)
- JUEL - повсеместно используется в диаграмме процесса, пример:
${content.contains("Camunda")}
. Может использоваться совместно с FEEL. - JavaScript
- Groovy
- Python
- JRuby