W analizie i modelowaniu procesów biznesowych na platformie BPM możemy zetknąć się z zagadnieniami, których implementacja w regułach procesu może być bardzo trudna. Dotyczy to np. tworzenia skomplikowanych kalkulatorów, arkuszy scoringowych, modeli ratingowych lub innych przekształceń danych. W takich sytuacjach z pomocą przychodzą nam silniki decyzyjne. Przykładem takiego silnika jest Ferryt Decision Engine. Jest to moduł służący do modelowania oraz wykonywania różnego rodzaju złożonych przeliczeń. Pozwala to na uzyskanie zdecydowanie wyższej wydajności, a także wydzielenie złożonych obliczeń poza logikę działania procesów na platformie BPM.

Celem tego artykułu jest przedstawienie zalet wykorzystania modułu Silnika Decyzyjnego oraz łatwości jego integracji z platformą Ferryt. Omówimy także możliwości jego wykorzystania w procesach tworzonych na tej platformie, bazując na przykładzie jednego z zaimplementowanych rozwiązań – walidacji plików CSV.

Kilka słów o silniku decyzyjnym

Platforma BPM może korzystać z wielu silników decyzyjnych naraz. Powodem, dla którego korzysta się z takich silników, jest z reguły szybkość ich działania. Nowoczesne silniki zwracają odpowiedź w ułamkach sekundy. Kolejną zaletą jest możliwość wykonywania skomplikowanych obliczeń czy przekształceń oraz zamykanie wewnętrznej logiki usługi w odrębnym module – tzw. ‘czarnej skrzynce’. 

Przykładem takiego silnika jest Ferryt Decision Engine. Jest to moduł Platformy Ferryt umożliwiający definiowanie złożonych, parametryzowanych modeli, które mogą być wykorzystywane na różnych etapach procesów. Takie modele mogą być wywoływane jako usługi.

Ferryt Decision Engine umożliwia tworzenie tzw. flow, czyli schematów wykonywania silników. W praktyce możliwe jest więc wywoływanie kilkunastu silników w określonej kolejności lub według określonych warunków, co ważne – jako jednej usługi. Przykładowy schemat flow zamieszczony został w dalszej części artykułu.

Rejestracja silnika decyzyjnego

Rejestracja silnika decyzyjnego na platformie Ferryt jest niezwykle prosta. W zasadzie jedyną rzeczą, której na tym etapie potrzebujemy, to URL do wywołania silnika (usługi zewnętrznej) według poniższego schematu:

http://nazwaSerwera/nazwaSerwisu/modelNazwaModelu.asmx?wsdl

W przypadku flow korzystamy ze schematu:

http://nazwaSerwera/nazwaSerwisu/flowNazwaFlow.asmx?wsdl

Powyższą informację otrzymujemy zwykle od osoby, która wytworzyła dany model silnika decyzyjnego.

Pierwszym krokiem w rejestracji silnika decyzyjnego jest uruchomienie modułu ‘Ferryt Architect’ i przejście do sekcji Integracja, a następnie Serwisy Zewnętrzne.

W tym miejscu definiujemy typ usługi (dla silników decyzyjnych będzie to protokół SOAP), nazwę usługi oraz adres URL. Zaznaczamy również usługę jako aktywną:

Po kliknięciu przycisku Dodaj nasz model (lub flow) zostaje zarejestrowany. Stworzone zostają: wersja, metody oraz odpowiednie struktury danych dla input i output modelu:

Konfiguracja i połączenie z silnikiem w procesie na platformie Ferryt

Struktury (typy danych) dla wejścia i wyjścia tworzone są zawsze na poziomie Systemu. Aby móc z nich korzystać w procesie (poprawnie zmapować dane na input i output usługi) musimy utworzyć pola charakterystyczne w odpowiedniej domenie i obszarze.  Następnie dodajemy je jako pola procesu, w którym chcemy skorzystać z silnika.

Po wykonaniu takich czynności możemy przejść do projektowania procesu, w którym skonfigurujemy wywołanie silnika.

W module Flow Designer przechodzimy do odpowiedniego zadania i akcji, w której umieścimy kontrolkę wywołania serwisu zewnętrznego – czyli naszego modelu. Z panelu bocznego wybieramy kontrolkę SERWIS ZEWNĘTRZNY i przenosimy ją do obszaru roboczego.

Po przeniesieniu kontrolki do obszaru roboczego nadajemy jej symbol oraz nazwę:

Następnie dwuklikiem (lub przyciskiem Konfiguracja widocznym w panelu po lewej stronie) uruchamiamy konfigurację, w której wskazujemy m. in. nazwę serwisu. Możemy tutaj włączyć również obsługę błędów i wybrać pola, do których zapisywane będą ewentualny kod i opis błędu. W tym miejscu (Parametry wejściowe/ wyjściowe) wskazujemy również pola procesu, zawierające strukturę danych wejściowych i wyjściowych naszego modelu, które przygotowaliśmy krok wcześniej. Po poprawnej konfiguracji klikamy przycisk Ok:

Każdy model wymaga danych wejściowych. Należy więc pamiętać o tym, aby przed wykonaniem akcji lub bezpośrednio przed kontrolką serwisu zewnętrznego, umieścić bloczek reguły, w którym musimy odpowiednio zmapować pola procesu do pola przechowującego dane wejściowe silnika.

Wykorzystanie Silnika Decyzyjnego w procesie jako narzędzia walidacyjnego plików CSV

Silnik Decyzyjny ma szerokie zastosowania w procesach biznesowych, czego dowodem jest możliwość wykorzystania go np. w celu walidowania poprawności plików CSV.

W przedstawionym poniżej rozwiązaniu, poza oczywistą integracją Silnika Decyzyjnego i platformy Ferryt, mamy również do czynienia z odczytywaniem danych z tabel bazodanowych przez Silnik. Wspomniane tabele wystawiane są jako tabele parametryzacyjne w Workplace, do których dostęp ma określony profil administratorski. Przykładem takiego rejestru jest rejestr walidacji danych zawartych w pliku .csv. Umożliwia on parametryzację wymagalności pól, określenia przyjmowanego typu danych, sprawdzenia pod kątem zawartości słowników czy pozostałych walidacji logicznych:

Uruchamiany w procesie Silnik Decyzyjny odczytuje aktualne informacje przechowywane w powyższej tabeli, a następnie korzysta z nich w celu walidacji załączanego we wniosku pliku CSV.

Schemat takiego Silnika Decyzyjnego (flow) wygląda następująco:

Prezentacja działania walidacji wniosku na Platformie Ferryt

Na formularzu wniosku użytkownik załącza plik CSV, który spełniać musi szereg wymogów, aby mógł zostać zaakceptowany i zapisany do bazy danych.

Następnie użytkownik przesyła załącznik do systemu. Pod przyciskiem Przekaż do … uruchamiana jest akcja wywołująca Silnik Decyzyjny, który waliduje poprawność nagłówków oraz wierszy załączonego pliku.

W wyniku takiej walidacji użytkownik jest informowany o poprawności lub błędach w pliku. W przypadku, gdy plik zawiera błędy, użytkownik otrzyma na ekranie szczegółowe informacje dotyczące liczby błędów, z dokładnym wskazaniem linii oraz kolumny wymagającej korekty.

Po zapoznaniu się z błędami i poprawieniu pliku CSV, użytkownik załącza go w tym samym wniosku, przechodząc do zakładki Formularz wysyłki widocznej powyżej. Jeśli plik załączony przez użytkownika będzie poprawny, pokaże się odpowiedni komunikat, a wniosek zostanie zakończony:

Podsumowanie

Zilustrowany powyżej przebieg, to tylko jeden z przykładów wykorzystania Silnika Decyzyjnego jako elementu procesu w platformie Ferryt. Potencjalnych możliwości jego wykorzystania jest wiele, a samo narzędzie jest cały czas udoskonalane i rozwijane. Budując na Ferryt Low-Code Platform procesy biznesowe zawierające skomplikowane zadania, warto zawsze mieć na uwadze możliwość skorzystania z ogromnych możliwości obliczeniowych oraz szybkości działania Ferryt Decision Engine.

Autorzy:
Milena Jażdżyk
Maciej Andrzejewski