Введение в BRFPlus

Ни одна организация не может быть более эффективна, чем её системы. Системы должны быть направлены на саму организацию, её цели и сотрудников. Ориентация на бизнес-процессы показывает, как работает организация в действительности, и является первым шагом на пути к непрерывной оптимизации. Сочетание поддержки принятия решений с процессно-ориентированным образом мышления ведёт к упрощённым и быстро реагирующим процессам, а также к их гибкому применению. Аутсорсинг принятия решений и их моделирование в виде бизнес-правил улучшает понимание процессов, облегчает их преобразование и обеспечивает гармонию бизнеса с ИТ. Каждый из таких факторов как упрощённые процессы, их гибкое применение, лёгкость преобразования и целостность, усиливают ориентацию на бизнес-процессы в целях повышения созданной стоимости. Предоставление информации по поиску решений является ключевым моментом для сохранения предприятием полного контроля над процессами.

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

Управление бизнес-правилами, которые подвергаются частным изменениям, из-за влияния внешней среды является сложной организационной проблемой.  Развитие системы управления бизнес-правилами (BRMS – Business Rules Management System) будет способствовать поддержке гибкости в управление и обслуживании бизнес-процессами.  BRMS — позволяют управлять правилами, без необходимости привлечения IT экспертов, так как их изменение не повлечет за собой изменение программного кода.

Использование BRMS даёт компании следующие преимущества:

  • Высшую степень прозрачности в конфигурации и настройке правил
  • Уменьшение координации между IT специалистами и бизнес экспертами
  • Уменьшение количества тестирований и эксплуатационных расходов
  • Быстрая реакция на изменения
  • Отсутствие простоев, при отсутствии изменений в коде
  • Четкое разделение обязанностей, за код – IT эксперты, за бизнес правила – бизнес эксперты
  • Более быстрая разработка приложений из-за гибкости BRMS
  • Удобное графическое представление

Приложение использующие BRMS, спроектировано таким образом, что неизменяемые  части остаются в приложении, а части подверженные частым изменениям переданы на управление в BRMS. Неизменяемые части включают в себя основные процессы и логику приложения, средства вывода и т.п. Изменяемые части могут включать в себя следующее:

  • Логика принятия решений, обработка условий
  • Проверка данных и обнаружение ошибок
  • Классификация и определение данных
  • Всевозможные расчёты и формулы

Business Rule Framework +

BRFPlus — это инструмент манипулирования бизнес-правилами разработанный специально для ABAP. Он предоставляет соответствующий API (набор классов) и визуальное представление для определения и настройки бизнес-правил, основанное на Web DynPro. Одни и те же правила могут использоваться в различных ABAP приложениях. BRFPlus — поддерживает тестирование правил, работу с транспортной системой и XML экспорт и импорт.

Необходимые тех. требования для работы с BRFPlus:

Описание объекта полномочий:
Поле Обозначение
FDT_APPL ID приложения BRFPlus
FDT_OBJTYP Тип объекта BRFPlus. Типы объектов задаются константами из класса: IF_FDT_CONSTANTSначинающиеся на: GC_OBJECT_TYPE_<…>.Application — AP
Expression Type — ET
Expression — EX
Data Object — DO
Ruleset — RS
Function — FU
Catalog – CA
FDT_ACT Действие над объектом, задаются в интерфейсе IF_FDT_CONSTANTSконстанты начинающиеся с: GC_ACTIVITY_<…>.Create — 1
Change — 2
Display — 3
Delete — 4
Activate – 5

Для запуска BRFPlus запустите транзакцию — FDT_WORKBENCH или BRFPlus. Внешний вид среды:

Слева представлено дерево объектов репозитария, справа окно редактора текущего объекта.

Компоненты BRFPlus:

  • Приложение (Application) – контейнер верхнего уровня, содержащий все виды BRFPlus объектов.  На уровне приложения определяется тип его хранения (см. ниже), ведение версий, настройки ведения журналов, уровень хранения (пакет разработок), класс для дополнительной  обработки событий (application exit class) BRFPlus (авторизация и пр.).
  • Функция – инкапсулирует в себе бизнес-правило описанное средствами BRFPlus. Существует 3 режима работы функции.
  1. Функциональный режим – требует обязательного наличия верхнего выражения и объекта данных результата функции. В качестве примера такого верхнего выражения может выступать таблица принятия решений (см. ниже).
  2. Событийный режим – вместо верхнего выражения используются наборы правил (rulesets), которые выполняются с определенной последовательностью.
  3. Смешанный режим – совмещает в себя два первых режима.
  • Объекты данных (Data objects) – представляют собой то же самое что и переменные в языках программирования. Могут быть как элементарными типами (номер, количество, момент даты и времени,  количество, сумма, текст), так и структурами и таблицами, состоящими из элементарных типов. Создавая элементы данных можно настроить их привязку к существующим описаниям типов из словаря. Описание элементарных типов:
Тип Описание
Текст Текстовая переменная
Сумма Кол-во в денежном выражении
Номер Числовая переменная
Количество Количественная переменная с указанием ЕИ
Момент Дата, время, дата и время, дата и время в формате UTC
Булев. Переменная булевского типа

 

  • Контекст (Context) – содержит набор (или один) объектов данных, которые, как правило, используются как входные данные для выражений и операций, но так же могут там изменяться. В качестве выходных данных используются возвращаемые объекты данных (Result Data Objects) которые могут быть назначены функциям, выражениям.  Набор правил, функции содержат свой контекст.
  • Набор правил (Rulesets) – содержит правила, правило определяет условия запуска выражений.
  • Операции (Actions) – служат для работы с Workflow, отправки почты и вызова ФМ и статистических методов.
  • Каталог (Catalog) – представляет собой папку, внутри которой содержаться объекты одного или нескольких BRFPlus приложений. Благодаря каталогам можно отделить те объекты, которые будут изменяться пользователями (к примеру, правила расчёта % скидок пользователь изменять не должен, но обязан вести размеры процентов, используемых в правилах).
  • Выражения – определяют вычислительные блоки. Существует большое количество видов выражений:

Случай (Case)

Аналог CASE в ABAP. Позволяет определить логику в зависимости от значения объектаданных результата.

Константа

Самое простое выражение, возвращает константу, может использоваться в другихвыражениях. Возвращаемое значение может быть любым из элементарных типов.

Случайное число

Расчёт вероятности и случайных чисел

Вызов функции

Вызов BRFPlus функции

Вызов процедуры

Вызов статических методов из ABAP классов или ФМ

Диапазон значений

Проверка на вхождение в диапазон

LOOP

Выполнение циклических операций, аналог DO N TIMES, WHILE.. DO. DO..UNTIL.

Формула

Расчёт формул, пример будет ниже

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

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

Заполнение таблицы принятия решений можно осуществлять через ABAP, используя класс cl_fdt_convenience=>fill_decision_table

Дерево принятия решений

Относительно условий, которые задаются на верхнем уровне дерева, принимаютсярешения на более низких уровнях (листьях дерева):

XSL – преобразование

Выражение вызывает XSL преобразование для получения результата. Позволяетзадавать параметры для трансформаций.

BRMS Connector

Позволяет связаться с внешними BRMS системами.

Пример

В качестве примера создадим бизнес-правило (функцию) рассчитывающее объем скидки относительно авиакомпании и того является ли пассажир пассажиром премиум класса.

Создайте локальное приложение ZBRFTest:  Инструментальные средства -> создать приложение.

Тип хранения:

  • основные данные – всегда локальный объект, перенос невозможен, мета-данные хранятся в таблицах с классом поставки «А»
  • пользовательская настройка — изменения напрямую, все метаданные хранятся в таблицах с классом поставки «С»
  • система — перенос через систему транспорта, класс поставки таблиц с мета-данными – «S».

После создания приложения необходимо создать функцию. Функция это основная выполняемая сущность в BRFPlus она содержит так называемые наборы правил (Rulesets), на основе которых может быть изменен контекст функции (рассчитан результат). Под контекстом функции понимается сигнатура входящих данных.

Введите название функции DISCOUNT_CALCULATE.

После создания перейдите на закладку «Подпись». Необходимо создать объекты данных для контекста функции (входящие параметры функции):

 

Далее на той же закладке необходимо создать объект данных результата функции:

 

 

Укажем тип «Номер», длинна вывода и десятичные разряды – «3».

Далее создадим набор правил для расчёта скидки. Закладка «Присвоенные наборы правил» -> «Создать».

По условию задачи нам необходимо рассчитать скиду по следующему алгоритму:

  • Если Авиакомпания = Аэрофлот (у меня ее код – 002), считаем скидку = 1.
  • Если пассажир премиум класса, то размер скидки увеличиваем на 2.

Создадим первое правило:

 

В условие «Если» добавим сравнение диапазона значений S_CARR_ID, в условие «то» добавим изменение значения DISCOUNT:

Добавим второе правило, в нем проверим значение DISCOUNT и если оно не равно 0, умножим его на 2. Со сравнением проблем не возникнет, для умножения значения контекста на 2 воспользуемся формулой, которую необходимо предварительно создать:

 

При создании формулы необходимо указать ее имя, описание:

 

Как видно из рисунка чтобы изменить значение DISCOUNT необходимо его присвоить объекту данных результата, затем ввести формулу.

После создания всех правил, можно проверить работу функции через «моделирование». Для этого активируйте сначала приложение, тем самым сохранятся и активируются объекты данных и формулы. Затем активируйте функцию.

Запуск моделирования:

 

Выполнение функций в ABAP программе

Для запуска функции нам понадобится узнать её ID, находится он в подробных данных функции:

 

Далее привожу пример кода выполняющий функцию (ID функции у вас будет другим):

 

Результат:

Суффикс классов *fdt* является производным от «Formula & Derivation Tool» рабочее название BRFPlus.

Основные недостатки BRF+

  • Необходимость переключения между браузером и GUI
  • Нет ограничений на имена объектов, можете вообще не указывать, можете назвать все одним именем
  • Стабильность среды желает оставлять лучшего
  • Моделирование и проверка производительности пока далеки от совершенства