Политика совпадений DMN

Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine

Политика совпадений

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

Политика совпадений задаётся в атрибуте hitPolicy XML-элемента decisionTable. Если политика совпадений не задана, используется политика по умолчанию UNIQUE.

<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/" id="definitions" name="definitions" namespace="http://camunda.org/schema/1.0/dmn">
  <decision id="dish" name="Dish">
    <decisionTable id="decisionTable" hitPolicy="RULE ORDER">
      <!-- .. -->
    </decisionTable>
  </decision>
</definitions>

Движок DMN OpenBPM поддерживает следующие политики совпадений:

Политика совпадений Представление в XML Unique

UNIQUE

Any

ANY

First

FIRST

Rule order

RULE ORDER

Collect

COLLECT

Роль политики совпадений

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

Политика совпадений Unique

Может быть удовлетворено только одно правило либо ни одного. Результат таблицы решений содержит выходные условия удовлетворённого правила.

Если удовлетворено более одного правила, политика совпадений Unique нарушается.

См. следующую таблицу решений. Политика совпадений Unique В зависимости от текущего сезона следует выбрать блюдо. Может быть выбрано только одно блюдо, так как в один момент времени может существовать только один сезон.

Политика совпадений Any

Может быть удовлетворено несколько правил. Однако все удовлетворённые правила должны порождать одинаковый выход. Результат таблицы решений содержит только выход одного из удовлетворённых правил.

Если удовлетворено несколько правил, порождающих разные выходы, политика совпадений нарушается.

См. следующий пример: Политика совпадений Any Это таблица решений для заявления на отпуск. Если у заявителя не осталось дней отпуска или он в настоящее время находится на испытательном сроке, заявление будет отклонено. В противном случае заявление одобряется.

Политика совпадений First

Может быть удовлетворено несколько правил. Результат таблицы решений содержит только выход первого удовлетворённого правила.

Политика совпадений First См. приведённую выше таблицу решений для рекламы. С учётом текущего возраста пользователя принимается решение о том, какую рекламу следует показать. Например, пользователю 19 лет. Все правила совпадут, но поскольку политика совпадений установлена в First, используется только реклама автомобилей (Cars).

Политика совпадений Rule Order

Может быть удовлетворено несколько правил. Результат таблицы решений содержит выход всех удовлетворённых правил в порядке следования правил в таблице решений.

Политика совпадений Rule Order Снова рассмотрим пример с рекламой, но уже с политикой rule order. Допустим, у нас снова пользователь в возрасте 19 лет. Все правила удовлетворены, поэтому выдаются все выходы, упорядоченные по порядку правил. Это можно использовать, например, для указания приоритета отображаемой рекламы.

Политика совпадений Collect

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

Политика совпадений Collect С этой политикой совпадений список выходов не имеет упорядочивания. Поэтому реклама будет произвольной, если, например, возраст равен 19.

Кроме того, для политики совпадений Collect можно указать агрегатор. Если агрегатор указан, результат таблицы решений будет содержать только одно выходное условие. Агрегатор сформирует выходное условие из всех удовлетворённых правил. Примечание: если политика совпадений Collect используется с агрегатором, таблица решений может иметь только один выход.

Агрегатор задаётся в атрибуте aggregation XML-элемента decisionTable.

<decisionTable id="decisionTable" hitPolicy="COLLECT" aggregation="SUM">
  <!-- .. -->
</decisionTable>

Агрегаторы для политики совпадений Collect

В визуальном представлении таблицы решений в дополнение к политике совпадений COLLECT можно выбрать агрегатор. Движок DMN OpenBPM поддерживает следующие агрегаторы:

Визуальное представление Представление в XML Результат агрегации

Collect (Sum)

SUM

сумма всех выходных значений

Collect (Min)

MIN

наименьшее из всех выходных значений

Collect (Max)

MAX

наибольшее из всех выходных значений

Collect (Count)

COUNT

количество выходных значений

Агрегатор SUM

Агрегатор SUM суммирует все выходы удовлетворённых правил. Политика совпадений Collect SUM Показанную таблицу решений можно использовать для суммирования надбавки к зарплате сотрудника. Например, сотрудник работает в компании 3,5 года. Тогда первое, второе и третье правила совпадут, и результат таблицы решений равен 600, так как выходы суммируются.

Агрегатор MIN

Агрегатор MIN можно использовать для возврата наименьшего выходного значения из всех удовлетворённых правил. См. следующий пример со страхованием автомобиля. После нескольких лет без аварий страховой взнос уменьшается. Политика совпадений Collect MIN Например, если вход для таблицы решений равен 3,5 года, результат будет 98,83, так как первые три правила совпадают, но третье правило имеет минимальный выход.

Агрегатор MAX

Агрегатор MAX можно использовать для возврата наибольшего выходного значения из всех удовлетворённых правил.

Политика совпадений Collect MAX

Эта таблица решений представляет решение о сумме карманных денег для ребёнка. В зависимости от возраста сумма растёт. Например, вход 9 удовлетворит первое и второе правила. Выход второго правила больше выхода первого правила, поэтому выход будет равен 5. Ребёнок в возрасте 9 лет получит 5 в качестве карманных денег.

Агрегатор COUNT

Агрегатор COUNT можно использовать для возврата количества удовлетворённых правил.

Политика совпадений Collect COUNT

Например, снова рассмотрим таблицу решений с надбавкой к зарплате, на этот раз с агрегатором COUNT. При входе 4 будут удовлетворены первые три правила. Следовательно, результат таблицы решений будет равен 3, что означает, что после 4 лет результат таблицы решений составляет 3 надбавки к зарплате.

Лицензия и атрибуция

Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .

Оригинал документации: https://docs.camunda.org