BPMN

DMN таблицы решений: формализация бизнес-правил без программистов

Decision Model and Notation позволяет аналитикам формализовать сложную бизнес-логику без участия разработчиков. Разбираем синтаксис таблиц и язык FEEL.

Decision Model and Notation (DMN) — относительно молодой стандарт OMG (2015), который часто остаётся в тени своего «старшего брата» BPMN. Однако в проектах автоматизации DMN оказывается не менее важным инструментом, чем BPMN.

Зачем нужен отдельный стандарт для правил

Долгое время бизнес-логика встраивалась прямо в BPMN-диаграммы через XOR-шлюзы с многочисленными ветками. Когда правил становилось больше десятка, диаграммы превращались в нечитаемые джунгли. К тому же изменение правил требовало изменения диаграммы процесса, что приводило к ненужной связности.

DMN решает эту проблему, отделяя логику решения от логики процесса. BPMN-задача типа Business Rule Task ссылается на DMN-модель, которая может изменяться независимо.

Два уровня DMN

DMN имеет два уровня абстракции:

DRD (Decision Requirements Diagram)

DRD — это граф зависимостей между решениями. Каждый узел графа — отдельное решение, требующее определённых входных данных. Решения могут зависеть друг от друга, образуя иерархию.

Например, в задаче оценки кредитной заявки:

  • «Одобрить кредит» зависит от «Скоринг» и «Проверка дохода»
  • «Скоринг» зависит от «История погашений» и «Кредитная нагрузка»
  • «Проверка дохода» зависит от «Тип занятости» и «Подтверждённый доход»

Decision Tables

Decision Tables реализуют конкретную логику решений. Каждая строка таблицы — правило. Каждая колонка слева — входная переменная, справа — выходное значение.

Пример таблицы для решения «Скоринг»:

История погашенийКредитная нагрузкаВозрастБалл скоринга
Отличная< 30%> 2595
Отличная< 30%≤ 2580
Хорошая< 50%> 2575
Хорошая< 50%≤ 2560
Средняя< 70%-45
Плохая--20

Политики срабатывания (Hit Policies)

DMN определяет несколько политик того, как обрабатываются ситуации, когда правилу соответствует несколько строк таблицы:

  • Unique (U) — должна сработать ровно одна строка, иначе ошибка
  • Any (A) — несколько строк могут сработать, но все должны давать одинаковый результат
  • First (F) — срабатывает первая подходящая строка (порядок важен)
  • Priority (P) — применяется правило с наивысшим приоритетом
  • Collect (C) — собирается список всех результатов

Выбор политики существенно влияет на семантику. Большинство практиков рекомендуют использовать Unique там, где это возможно — это даёт максимальную предсказуемость.

FEEL — язык выражений

DMN включает специально разработанный язык выражений FEEL (Friendly Enough Expression Language). Его задача — позволить аналитикам записывать сложные правила в форме, понятной человеку, но строго формализованной для компьютера.

Примеры FEEL-выражений:

[100..500]        // диапазон 100-500 включительно
> 18              // больше 18
not("Москва")     // не равно "Москва"
in ("RU", "BY")   // одно из значений
date("2025-01-15")

FEEL поддерживает арифметику, логику, работу со строками, датами, списками, контекстами. Это не язык программирования общего назначения, а специализированный декларативный язык для бизнес-правил.

Где применяется DMN

Типичные сценарии:

  • Кредитный скоринг — расчёт балла и решение об одобрении
  • Страховые тарифы — расчёт стоимости полиса с учётом параметров клиента
  • Маршрутизация заявок — определение оператора для обработки
  • Конфигурация продуктов — допустимые комбинации параметров
  • Расчёт скидок — применение акций и бонусных программ

Платформы

DMN поддерживается в основных BPM-движках: Camunda DMN, IBM ODM, Drools, Trisotech, Signavio. Некоторые из них предоставляют визуальные редакторы решений для бизнес-аналитиков.

Ограничения

  • DMN не подходит для машинного обучения и нечёткой логики
  • Сложные многомерные правила в табличном виде становятся громоздкими
  • Стандарт менее известен, чем BPMN, что усложняет поиск специалистов

Заключение

DMN — мощный инструмент, недостаточно используемый в российской практике. Внедрение DMN рядом с BPMN позволяет существенно упростить процессные модели и дать бизнес-аналитикам прямой контроль над логикой решений без обращения к разработчикам.

#DMN#FEEL#Правила#OMG
Все статьи На главную