Aplikacje pakietu SAP Business Suite, takie jak SAP ERP, CRM, SRM umożliwiają realizację złożonych procesów biznesowych, wspierając przedsiębiorstwa w praktycznie wszystkich obszarach ich działalności. Imponujące możliwości adaptacji systemów pakietu SAP Business Suite do najbardziej złożonych wymagań procesów biznesowych są powszechnie znane. Systemy pakietu SAP Business Suite można konfigurować za pomocą standardowych narzędzi umożliwiających edycję setek tabel sterujących; można je również wzbogacać o specyficzną dla danego przedsiębiorstwa logikę zaimplementowaną w rozszerzeniach ABAP.
Począwszy od wersji 7.02 serwera aplikacji ABAP, jest dostępne nowe narzędzie zwiększające możliwości dostosowywania aplikacji SAP Business Suite w oparciu o reguły biznesowe (business rules), tzw. Business Rules Framework Plus (BRF+). Wprowadzenie do serwera aplikacji ABAP pełnowartościowego systemu zarządzania regułami biznesowymi (Business Rules Management System, BRMS), jakim jest BRF+, wpisuje się w aktualny kierunek rozwoju systemów informatycznych.
Reguły biznesowe
Reguły biznesowe są obecne w każdym przedsiębiorstwie i przyjmują różne formy, np. mogą to być wytyczne zgromadzone w dokumentacji dostępnej na firmowym portalu, konkretne algorytmy zaimplementowane w systemie informatycznym lub też wiedza ukryta pracowników (tacit knowledge). Niezależnie od formy, reguły biznesowe mają kluczowe znaczenie dla działania każdego przedsiębiorstwa.
W obiegu funkcjonuje szereg mniej lub bardziej formalnych definicji reguły biznesowej. Na przykład według Business Rules Group, organizacji zrzeszającej ekspertów i definiującej standardy w dziedzinie zarządzania regułami biznesowymi, „reguła biznesowa to stwierdzenie, które definiuje lub ogranicza jakiś aspekt biznesu. Jest przewidziana do tego, by zapewnić biznesowi strukturę lub by kontrolować lub wpływać na zachowanie biznesu”. W kontekście systemów informatycznych znacznie wygodniej jest jednak przyjąć nieco bardziej techniczną definicję, która mówi, że „reguła biznesowa wyraża pewne ograniczenia związane z tworzeniem, aktualizacją i usuwaniem danych trwałych w systemie informatycznym”.
Przykłady zastosowań reguł biznesowych:
- obliczenie wskaźnika zdolności kredytowej osoby ubiegającej się o kredyt hipoteczny,
- obliczenie wysokości składki na ubezpieczenie OC pojazdu,
- obliczenie ceny sprzedaży produktu,
- klasyfikacja przelewu z konta do kategorii/podkategorii w celu analizy wydatków,
- przypisanie właściwej ścieżki zatwierdzania do zapotrzebowania zakupu.
System zarządzania regułami biznesowymi – BRMS
Reguły biznesowe, które są używane przez systemy informatyczne, są utrzymywane w systemach zarządzania regułami biznesowymi (BRMS). Są to systemy informatyczne umożliwiające definiowanie, symulowanie, wykonywanie, monitorowanie i trwałe przechowywanie reguł biznesowych. Zasadniczo systemy tego typu składają się z trzech komponentów:
- środowiska projektowania i utrzymania reguł (interfejs użytkownika),
- silnika wykonawczego reguł (interpretera),
- repozytorium reguł (pamięć trwała, baza reguł).
W środowisku projektowania reguły są definiowane za pomocą określonego zestawu wyrażeń. Środowisko projektowania ma graficzny interfejs użytkownika, który jest wygodny i intuicyjny w użyciu nie tylko dla pracowników technicznych, ale przede wszystkim dla pracowników merytorycznych. Reguły biznesowe są często wyrażone w języku naturalnym, zrozumiałym dla osób nieposiadających technicznego wykształcenia. Środowisko projektowania umożliwia również organizowanie reguł, np. w łatwo zarządzane katalogi. Komponenty systemu klasy BRMS pokazano na schemacie poniżej.
Architektura aplikacji
Na przestrzeni ostatnich 30 lat architektura systemów informatycznych dla biznesu podlegała ciągłej ewolucji. Stare systemy zbudowane były w ten sposób, że wszystko, co wchodziło w ich skład (dane, reguły, procesy), było zaimplementowane w jednym monolitycznym komponencie. Pierwszą rewolucją było wprowadzenie na szeroką skalę systemów baz danych (DBMS – Database Management Systems). Bazy danych wyprowadziły dane na zewnątrz systemów, co umożliwiło ich niezależne składowanie. Rewolucja, która dzieje się obecnie, wyprowadza na zewnątrz procesy i/lub reguły biznesowe, np. do dedykowanych systemów BPMS (Business Process Management Systems) oraz BRMS. Proces został przedstawiony na schemacie poniżej.
Kluczową zaletą odseparowania reguł od procesów (a także kodu aplikacji) jest możliwość zarządzania nimi w sposób całkowicie niezależny. Procesy i kod aplikacji nie muszą być modyfikowane, gdy zmianie ulegają reguły biznesowe. Reguły biznesowe mają tendencję do częstych zmian, bo środowisko, w którym operuje dzisiaj biznes, jest wyjątkowo dynamiczne. Zmieniają się warunki rynkowe, regulacje prawne itd. Jeśli nie mamy systemu klasy BRMS, konieczne jest wsparcie specjalistów IT. Mając zaś system BRMS, możemy zaangażować pracowników merytorycznych w utrzymanie i ciągłą adaptację reguł biznesowych.
Droga do BRF+
Systemy SAP były konfigurowalne od zawsze. Kluczową funkcjonalnością była i wciąż jest możliwość ich konfigurowania za pomocą tabel konfiguracyjnych bazy danych, zgrupowanych w tzw. IMG (Implementation Guide). Bardzo złożone wymagania można implementować za pomocą rozszerzeń ABAP. Klienci od lat mogą również korzystać z całego spektrum narzędzi i fremeworków, które mają dużo wspólnego z regułami biznesowymi, np. walidacje i substytucje w modułach FI/CO/PS, technika warunków obecna w modułach MM/SD służąca do wyprowadzania warunków cenowych i informacji wyjściowych (wydruków, e-maili itp.) czy reguły zamodelowane we wzorcach workflow, sterujące np. wysyłaniem konkretnego zadania workflow.
Dostrzegając zmiany w sposobie myślenia o regułach biznesowych w systemach informatycznych, firma SAP AG podjęła decyzję o konieczności stworzenia całkowicie nowego, pełnowartościowego systemu klasy BRMS, który byłby odpowiednio elastyczny i transparentny. Nowe narzędzie miało przede wszystkim zagwarantować szybką implementację reguł biznesowych, umożliwić ciągłą optymalizację i adaptację logiki biznesowej do zmieniających się warunków zewnętrznych, zmniejszyć zależność pracowników merytorycznych od specjalistów IT, wciągając ich w proces utrzymania reguł biznesowych. W ten sposób powstał BRF+, pierwszy pełnowartościowy system klasy BRMS, w pełni zintegrowany z serwerem aplikacji ABAP.
Nowe systemy SAP (np. SAP TM – Transportation Management), a także nowe funkcjonalności udostępniane w ramach pakietów EHP dla systemu SAP ERP (np. koszyk zakupowy à la SRM w SAP ERP) coraz częściej opierają się na konfiguracji reguł biznesowych w BRF+. Coraz szersze zastosowanie reguł BRF+ wpisuje się w długofalową strategię firmy SAP AG.
Diagram prezentujący najnowszą koncepcję architektury aplikacji dla systemu SAP ERP został przedstawiony na schemacie poniżej. Procesy są realizowane przez moduły systemu SAP ERP, np. FI, CO, PS, MM, PP, SD itd. Procesy jednakże używają reguł biznesowych zamodelowanych w środowisku BRF+ w kluczowych punktach decyzyjnych. Wszystkie dane (zarówno dane procesów, jak i dane reguł) są przechowywane w osobnej bazie danych.
BRF+ jako system BRMS
BRF+ jako pełnowartościowy system BRMS składa się z trzech opisanych wcześniej komponentów:
- środowiska projektowania i utrzymania reguł (transakcje BRFPLUS albo BRF+),
- silnika wykonawczego reguł (zestaw narzędzi ABAP, tzw. API do wykonywania reguł),
- repozytorium reguł (dedykowany zestaw tabel w bazie danych SAP).
Środowisko projektowania i utrzymania reguł BRF+ może zostać uruchomione poprzez kod transakcji BRFPLUS albo BRF+. Uruchomienie transakcji przekierowuje użytkownika do okna przeglądarki WWW, w którym uruchamiana jest aplikacja BRFplus Workbench, wykonana w technologii WebDynpro ABAP (WDA). Środowisko projektowania BRF+ (zrzut ekranu 1) ma następujące cechy:
- wspiera definiowanie i zarządzanie wszystkimi obiektami BRF+: aplikacjami, funkcjami, zbiorami reguł, regułami, wyrażeniami, akcjami. Obiekty BRF+ mogą być organizowane w katalogi (w dalszej części artykułu znajduje się wyjaśnienie tych pojęć);
- może zostać uruchomione na stacji roboczej niemającej zainstalowanego SAP GUI;
- jest w pełni zintegrowane ze słownikiem ABAP, co pozwala na wykorzystanie tych samych elementów danych, których używają aplikacje SAP, a także użycie tych samych mechanizmów pomocy F1/F4;
- może być uruchomione w dwóch trybach: eksperckim (przewidziany dla pracowników technicznych/konsultantów) i zwykłym (przewidziany dla pracowników merytorycznych);
- udostępnia szereg narzędzi, np. import/eksport reguł do plików w formacie XML, symulację reguł, generowanie usług sieciowych/modułów RFC uruchamiających reguły (Web Services/RFC), analizę zleceń transportu itp.
Silnik wykonawczy reguł BRF+ to zestaw narzędzi ABAP, który umożliwia wywołanie i zinterpretowanie reguł BRF+ w sposób programowy. Wywołanie reguł BRF+ z poziomu aplikacji zajmuje dosłownie kilkanaście linijek kodu ABAP. Reguły biznesowe zamodelowane w BRF+ mogą zostać udostępnione na zewnątrz systemu SAP w postaci usług sieciowych, a także w postaci zdalnych modułów funkcyjnych.
Silnik wykonawczy ma ponadto dwa tryby działania: tryb interpretacji (wolny) oraz tryb generowania (szybki). W trybie interpretacji reguły BRF+ są odczytywane i interpretowane w swojej pierwotnej postaci. W trybie generowania logika zamodelowana w postaci reguł BRF+ jest najpierw konwertowana w tle na czysty kod ABAP i dopiero po konwersji interpretowana. Reguły BRF+ są ponadto zawsze wykonywane w kontekście stempla czasowego.
Reguły BRF+ są przechowywane w dedykowanych tabelach bazy systemu SAP, które w całości składają się na repozytorium. Jest ono zarządzane poprzez aplikację BRFplus Workbench. Repozytorium jest tak skonstruowane, że pozwala zarządzać obiektami BRF+ w następujący sposób:
- obiekty BRF+ mogą być przechowywane w sposób zależny lub niezależny od mandanta;
- obiekty BRF+ mogą podlegać systemowi transportowemu (są przenoszone zleceniami transportu pomiędzy systemami w ramach pejzażu systemów) albo mogą być lokalne;
- obiekty BRF+ mogą być importowane/eksportowane z/do plików XML;
- dostęp do obiektów BRF+ jest kontrolowany poprzez standardowe mechanizmy autoryzacji i blokowania;
- obiekty BRF+ mogą być wersjonowane.
Obiekty BRF+
Reguły biznesowe definiuje się w BRF+ za pomocą tzw. obiektów BRF+. W tabeli zawarto zestawienie wszystkich obiektów BRF+ wraz z opisem funkcji, jaką dany obiekt BRF+ pełni.
Obiekt BRF+ | Funkcja obiektu BRF+ |
Aplikacja | Aplikacja jest nadrzędnym kontenerem zawierającym zdefiniowane reguły biznesowe. Jej zadaniem jest grupowanie podrzędnych obiektów BRF+ w jedną powiązaną całość. W ramach aplikacji są definiowane niektóre dane domyślne i ograniczenia dla podrzędnych obiektów BRF+. W systemie może być zdefiniowanych wiele różnych aplikacji BRF+. |
Funkcja | Funkcja jest najważniejszym obiektem BRF+ i reprezentuje tzw. usługę decyzyjną (decision service), czyli ten element, który jest de facto wywoływany przez aplikację. Funkcja posiada tzw. kontekst, w ramach którego znajduje się zestaw danych wejściowych. Funkcja posiada również dokładnie jeden obiekt danych wyniku (zawierający wynik działania reguł). Funkcja może być zaimplementowana na dwa sposoby: w trybie funkcji i w trybie zdarzenia. W trybie funkcji możliwe jest użycie dokładnie jednego wyrażenia do zamodelowania wymaganej logiki, np. zwykłej formuły matematycznej. W trybie zdarzenia do funkcji przypisuje się jeden lub więcej zbiorów reguł. W trybie zdarzenia możliwe jest modelowanie dowolnie złożonej logiki biznesowej. Każda aplikacja BRF+ może mieć wiele funkcji BRF+. |
Obiekt danych | Obiekt danych to nośnik konkretnej wartości w BRF+. Do dyspozycji są elementarne, strukturalne i tabelaryczne obiekty danych. Możliwe jest przetwarzanie wartości liczbowych, logicznych, kwotowych (odnoszących się do waluty), ilościowych (odnoszących się do jednostki miary), tekstowych i oznaczających punkt w czasie (tzw. stempel czasowy). |
Zbiór reguł | Zbiór reguł to kontener zawierający kolekcję reguł. Każdy zbiór reguł posiada przypisany priorytet: od 01 (najwyższy) do 99 (najniższy). Jeżeli funkcja w trybie zdarzenia ma przypisany więcej niż jeden zbiór reguł, to po pierwsze są one przetwarzane w kolejności przypisanych priorytetów, a po drugie przetwarzanie jest zatrzymywane, jeśli zbiór o wyższym priorytecie wygenerował prawidłowy wynik. Dzięki takiej organizacji możliwe jest modelowanie reguł hierarchicznych, np. reguły bardziej precyzyjne, specyficzne mają wyższy priorytet, a reguły bardziej ogólne mają priorytet niższy. |
Reguły | Reguła jest elementem wchodzącym w skład zbioru reguł. Reguła modeluje podstawową logikę warunkową typu: JEŻELI <X> WÓWCZAS <Y> INACZEJ <Z> W miejsce <X> wstawia się wyrażenie zwracające wartość logiczną: PRAWDA/FAŁSZ. W miejsce <Y> wstawia się jedno lub więcej wyrażeń/akcji BRF+. W miejsce <Z> również wstawia się jedno lub więcej wyrażeń/akcji BRF+. |
Wyrażenia | Wyrażenie jest podstawowym elementem BRF+ umożliwiającym modelowanie reguł biznesowych. Do dyspozycji są następujące wyrażenia: wyrażenie logiczne, zakres wartości, stała, liczba losowa, sprawa, formuła, tabela decyzji, drzewo decyzyjne, drzewo wyszukiwania, przeszukiwanie DB, pętla, operacja tabeli, wyrażenie dynamiczne, wywołanie funkcji, wywołanie procedury, konektor do zewn. systemu BRMS, transformacja XSL. |
Akcje | Akcja jest podstawowym elementem BRF+ umożliwiającym wykonanie pewnych zadań poza środowiskiem BRF+, które nie stanowią treści reguł biznesowych. Do dyspozycji są następujące akcje: komunikat logu, wysłanie e-maila, uruchomienie workflow, zdarzenie workflow. |
Reguły biznesowe w praktyce
W celu zademonstrowania, jak działają reguły biznesowe zaimplementowane w BRF+, przedstawiamy prosty przykład obliczania finalnej ceny sprzedaży konkretnej ilości materiału (przedstawiony przykład ma charakter poglądowy i nie jest związany w żaden sposób z funkcjonalnością modułu SD).
Pierwszym obiektem BRF+, który musi zostać stworzony, jest aplikacja BRF+, np. o nazwie ZKU_PRICE_DETERMINATION. Na zrzucie ekranu 2 widać niektóre domyślne dane, np. obiekt/podobiekt standardowego logu aplikacji, do którego zapisywane będą komunikaty (ZKU_BRF_TESTS/ZKU_BRF_SUB_TESTS).
Kolejnym obiektem BRF+ jest funkcja BRF+ o nazwie PRICE_DETERMINATION, która będzie realizowała usługę decyzyjną polegającą na obliczeniu finalnej ceny sprzedaży na podstawie indeksu materiału oraz ilości. Na zrzucie ekranu 3 widoczne jest, że funkcja będzie działała w trybie zdarzenia (tzn. konieczne jest zdefiniowanie zbioru reguł). Pokazany jest również kontekst (parametry wejściowe: materiał i ilość) oraz obiekt danych wyniku (finalna cena sprzedaży).
Do funkcji przypisany został jeden zbiór reguł o nazwie DETERMINE_PRICE (zrzut ekranu 4). Zbiór reguł jest zdefiniowany prawidłowo, jest aktywny (zielony status) i jest możliwy do wykonywania.
W zbiorze reguł DETERMINE_PRICE znajdują się dokładnie dwie reguły (zrzut ekranu 5). Pierwsza reguła jest odpowiedzialna za pobranie ceny bazowej podanego na wejściu funkcji materiału. Reguła wykorzystuje tabelę decyzji o nazwie DETERMINE_BASE_PRICE (zrzut ekranu 6). W przypadku gdy cena bazowa materiału została znaleziona, druga reguła uruchamia logikę obliczenia finalnej ceny sprzedaży; w przypadku gdy cena bazowa nie została znaleziona, uruchomiona zostaje akcja NOTIFICATION, która wysyła wiadomość e-mail do osoby odpowiedzialnej za utrzymanie reguł biznesowych opisywanej aplikacji.
W bloku odpowiedzialnym za obliczenie finalnej ceny sprzedaży najpierw pobierany jest rabat na podstawie drzewa wyszukiwania o nazwie DETERMINE_DISCOUNT (zrzut ekranu 7), a następnie obliczania jest finalna cena sprzedaży poprzez formułę FINAL_PRICE (zrzut ekranu 8). Ostatnim krokiem jest zapisanie komunikatu do logu aplikacji poprzez akcję FINAL_MESSAGE.
Dla materiału 12345 oraz ilości 15 zaprezentowana funkcja BRF+ zadziałałaby następująco:
- reguła nr 1 zwróciłaby cenę bazową równą 80 EUR;
- reguła nr 2 pobrałaby najpierw rabat równy 10 (tj. wartość rabatu w %), a następnie obliczyłaby finalną cenę sprzedaży ze wzoru:
80 EUR * 15 * (1 – 10/100) = 80 EUR * 15 * (1 – 0,1) = 80 EUR * 15 * 0,9 = 1080 EUR.
Środowisko projektowania i utrzymania reguł BRF+ zawiera narzędzie do natychmiastowego symulowania projektowanych reguł. Po wprowadzeniu odpowiednich wartości kontekstu, po uruchomieniu symulacji system prezentuje finalną cenę sprzedaży; dokładnie taką, jak obliczona powyżej (zrzut ekranu 9).
Wywołanie dowolnej funkcji BRF+ w kodzie ABAP jest bardzo proste. W środowisku projektowania i utrzymania reguł BRF+ można wygenerować całość kodu ABAP niezbędnego do zaimplementowania takiego wywołania (zrzut ekranu 10). Wystarczy poprosić programistę, by umieścił wywołanie we właściwym miejscu, np. w rozszerzeniu ABAP typu BAdI.
Przykładowe zastosowania BRF+ zamiast rozszerzeń ABAP
BRF+ może być zastosowany do zrealizowania wielu różnych wymagań biznesowych implementowanych zazwyczaj za pomocą klasycznych technik tworzenia niestandardowych rozszerzeń ABAP, które są nieefektywne, mało elastyczne, pozbawione transparencji i wymagające znajomości programowania. Za pomocą BRF+ można zastąpić np.:
- niestandardowe tabele konfiguracyjne, zwłaszcza takie, które są często zmieniane i mają setki rekordów (wyrażenie tabel decyzji umożliwia bowiem łatwe przeładowywanie zawartości z BRF+ do MS Excel i z powrotem);
- nieskończone „tasiemce” instrukcji warunkowych (IF-ELSEIF-ELSE-ENDIF), które odzwierciedlają jakąś skomplikowaną logikę biznesową;
- rozszerzenia służące do wysyłania w tle wiadomości e-mail;
- rozszerzenia wykonujące skomplikowane obliczenia matematyczne;
- klasyfikację służącą do determinacji ścieżek zatwierdzania dokumentów zaopatrzenia;
- warunki sterujące przebiegami procesów workflow (środowisko SAP Business Workflow zostało nawet wzbogacone o specjalny rodzaj zadania BRF+);
- walidacje pól w rekordach danych podstawowych, np. materiałów czy dostawców itd.
Korzyści z zastosowania systemu BRMS, w szczególności BRF+
Korzyści z zastosowania systemu klasy BRMS jest bardzo dużo. Te najważniejsze to przede wszystkim:
- imponująca elastyczność rozwiązań opartych na regułach biznesowych,
- kontrolowana automatyzacja podejmowanych przez system decyzji biznesowych,
- znacznie ulepszona widoczność reguł biznesowych dla pracowników merytorycznych,
- znacznie szybsze i łatwiejsze wprowadzanie zmian do istniejących reguł biznesowych,
- zmniejszone koszty utrzymania i adaptacji reguł biznesowych do zmieniających się warunków otoczenia.
BRF+ jako pełnowartościowy system klasy BRMS ma następujące zalety:
- jest dostępny w każdym systemie SAP bazującym na serwerze aplikacji ABAP od wersji 7.02;
- jest dostępny w ramach standardowej licencji i nie wymaga żadnych dodatkowych kosztów (poza kosztami implementacji);
- praktycznie nie wymaga żadnej inicjalnej konfiguracji (poza aktywacją kilku usług);
- może być łatwo zintegrowany z istniejącymi rozszerzeniami ABAP czy wręcz może je zastąpić;
- jest technologią stabilną, dojrzałą, obecną w systemie od kilku lat.
Przyszłość…
Firma SAP AG nie stanęła w miejscu i od jakiegoś czasu udostępnia kolejny produkt wspierający zastosowanie reguł biznesowych, mianowicie SAP Decision Service Management (SAP DSM).
SAP DSM jest oparty na BRF+, ale idzie o krok dalej. BRF+ umożliwia zarządzanie regułami w ramach jednego systemu/jednego pejzażu systemów (DEV>QAE>PRD). SAP DSM pozwala zarządzać regułami biznesowymi w wielosystemowym pejzażu systemów. Ale to już temat na kolejny artykuł.
Korzystałem z książki Carstena Zieglera i Thomasa Albrechta: BRFplus – Business Rules Management for ABAP Applications (SAP Press, 2011).
Oferta BCC
W oparciu o wieloletnie doświadczenie w projektach SAP i kompetencje konsultantów BCC (aktualnie All for One Poland) oferuje wykonanie następujących usług związanych z implementacją Business Rules Management Plus (BRF+) w rozwiązaniach SAP Business Suite:
- projekty, w zakresie których mieści się implementacja usług decyzyjnych i rozszerzeń ABAP opartych na technologii BRF+
- projekty refaktoryzacji istniejących rozszerzeń ABAP, które są kłopotliwe w utrzymaniu i które wymagają częstych zmian oraz zaangażowania programistów ABAP
- szkolenia dla personelu technicznego klienta w zakresie projektowania, modelowania i wykorzystania obiektów BRF+