Decyzje w procesie BPM - tworzenie reguł biznesowych
Reguły biznesowe w BPM to zbiory zasad określających, jak działa proces biznesowy. Definiują warunki, akcje i decyzje, które automatyzują logikę procesów, np. zatwierdzenie wniosku czy obliczenie rabatu. Są one odseparowane od procesu, co ułatwia ich zarządzanie i modyfikację bez zmiany całego modelu.
jBPM oferuje szereg narzędzie do zbudowania reguł biznesowych użytych w procesach - najpopularniejsze z nich to 'Guided Decision Table' oraz 'DMN Decision'.
Data Objects
Data Objects w jBPM to logiczne obiekty danych, które służą do przechowywania i przekazywania danych w procesie. W przeciwieństwie do zmiennych procesowych, Data Objects pozwalają na lepszą organizację danych i ich powiązanie z logiką biznesową na wyższym poziomie abstrakcji. Choć nie są widoczne na diagramie BPMN, ułatwiają modelowanie i analizę przepływu danych w procesie.
Pierwszy ze sposobów na utworzenie decyzji biznesowych wymaga wcześniejszego utworzenia Data Object. Pola (zmienne) które umieścimy w tym obiekcie będą atuomatycznie przeniesione do do formularza procesu. Będąc w oknie procesu kliknij na 'Add Asset' i wybierz 'Data Object (model)'. Nazwij model (uwaga: unikaj zastrzeżonych nazw jak np. 'DataObject'), przypisz Data Object do pakietu projektu i w następnych krokach dodaj pola poprzez wybranie przycisku '+ add field'. Pomiń etykiety dla zmiennych, wprowadź tylko nazwy pol i typy tych zmiennych. Szczegóły Data Object mogą wyglądać jak poniżej:
Formularze
By pola z formularzy trafiały do pol obiektu danych, musisz utworzyć formularz który jest powiązany z Data Object. Wykonaj dwa kroki by utworzyć taki formularz. W pierwszym kroku utwórz zmienną procesu w 'Process Data' => 'Process Variables' wpisując jako name 'ObiektDanychOne' a w Data Type wybierz obiekt ktory utworzyliśmy wyżej (ObiektDanychOne - pakiet projektu). Jeśli klikniesz teraz w oknie diagramu procesu na 'Generate process form' utworzone zostaną automatycznie dwa formularze. Pierwszy formularz bedzie zawierać zestaw pól pobranych z obiektu 'ObiektDanychOne'. To jest formularz źródłowy dla drugiego formularza, formularza który jest formularzem startowym procesu. Formularz startowy procesu będzie wskazywac na 'Nested Form' (formularz z polami powiązanymi z Obiektem Danych). Do takiego typu formularza, Sub Form, możesz oczywiście dodać pola które nie są obecne w Data Object (wystarczy zdefiniować je w zmiennych procesu).
A - Guided Decision Table
Guided Decision Table w jBPM to narzędzie do definiowania reguł biznesowych w formie tabel decyzyjnych. Umożliwia określanie warunków i działań w przyjazny, interaktywny sposób. Reguły mogą być wykonywane przez silnik reguł Drools, a logika opiera się na hit policy. Naszym celem jest stworzenie reguł które pokierują przepływem w procesie akceptacji faktur w zależności od wybranego działu i kwoty faktury.
W oknie projektu kliknij na 'Add asset' i wybierz 'Guided Decision Table'. W pierwszym oknie dialogowym nadaj nazwę obiektowi, przypisz reguły do odpowiedniego pakietu projektu oraz określ 'Hit policy'.
Hit policy w Guided Decision Table w jBPM określa, jak traktowane są reguły, gdy spełnionych jest więcej niż jeden warunek w tabeli decyzyjnej. Najczęściej spotykane polityki to:
Unique – tylko jedna reguła może być spełniona (brak konfliktów).
First Hit – wykonywana jest pierwsza pasująca reguła, pozostałe są ignorowane.
Any – dowolna z reguł może być spełniona, ale wszystkie muszą dawać ten sam wynik.
Rule Order – wszystkie pasujące reguły są wykonywane w kolejności ich wystąpienia.
Collect – wykonuje wszystkie pasujące reguły i zwraca zbiorczy wynik (np. suma, średnia).
Wybór hit policy zależy od logiki decyzyjnej i oczekiwanego wyniku. Wybieramy 'First Hit'. Nie wybieramy opcji 'Wizard' i po kliknięciu na OK pojawi się okno edytora:
Tworzenie pierwszego procesu biznesowego w jBPM
jBPM wykorzystuje język BPMN (Business Process Model and Notation) do tworzenia i modelowania procesów biznesowych. Dzięki BPMN można w prosty sposób wizualizować, definiować i wdrażać procesy, które odwzorowują rzeczywiste przepływy pracy.
Modelowanie procesów w jBPM polega na graficznym przedstawieniu kroków oraz zależności pomiędzy nimi, co umożliwia tworzenie przejrzystych schematów przepływów. Można w jBPM definiować różnorodne elementy procesów, takie jak punkty decyzyjne, zadania użytkownika, bramki logiczne czy komunikaty, tworząc w ten sposób kompletny proces, który może być zautomatyzowany i monitorowany.
jBPM wspiera także zarządzanie regułami biznesowymi i integrację z zewnętrznymi systemami, co pozwala na budowę zaawansowanych procesów, odpowiadających na potrzeby konkretnych scenariuszy biznesowych.
Menu jBPM
Po zalogowaniu się jako administrator do jBPM na stronie startowej zobaczysz stronę startową z czterema kategoriami:
Design - projektowanie i wdrażanie modeli biznesowych, tworzenie stron [raporty]
Deploy - zarządzanie wdrożonymi procesami. Umożliwia przegląd i zarządzanie kontenerami procesów, wdrażanie nowych jednostek, pracę z różnymi wersjami oraz ustawianie strategii wykonywania procesów.
Manage - umożliwia zarządzanie uruchomionymi procesami i zadaniami użytkowników. Można tu monitorować aktywne instancje procesów, zarządzać zadaniami (np. przypisywać je, zatwierdzać) oraz przeglądać historię wykonanych procesów i audytów.
Track - służy do monitorowania i śledzenia aktywności procesów biznesowych. Umożliwia przeglądanie aktualnych instancji procesów, ich statusów, historii wykonania oraz szczegółów poszczególnych kroków. Jest to pomocne przy analizie przepływów, diagnozowaniu problemów i optymalizacji procesów.
By utworzyć pierwszy projekt w jBPM i wdrożyć go, przejdziesz kolejno przez kroki:
Space => Project => Assets => Deploy
Space
W jBPM "Spaces" pełnią rolę organizacyjną, podobnie jak przestrzenie nazw (ang. namespaces) w Java, takie jak com.jakisProjekt. W Java przestrzenie nazw są tworzone przy użyciu pakietów (np. com.jakisProjekt), co pozwala grupować powiązane klasy i zasoby, unikając konfliktów nazw między różnymi projektami.
Podobnie w jBPM, spaces pomagają strukturyzować projekty w odrębne, logiczne obszary. W każdym z nich użytkownicy mogą tworzyć procesy, reguły i inne zasoby, które są niezależne od zasobów w innych przestrzeniach, co ułatwia pracę zespołów nad różnymi projektami w jednej instancji jBPM. Taka organizacja przypomina strukturę pakietów w programowaniu, umożliwiając lepsze zarządzanie zależnościami oraz wersjonowanie.
W jBPM nazwy przestrzeni (ang. spaces) powinny być jasne, opisowe i odzwierciedlać cel lub obszar działalności, do którego są przypisane. Pomaga to w zarządzaniu i organizowaniu procesów w większych środowiskach, zwłaszcza gdy wiele zespołów pracuje równolegle nad różnymi projektami.
Zalecenia dotyczące nazw przestrzeni w jBPM:
-
Opisowe i związane z obszarem działania:
- Przykłady:
sales-processes
,hr-approvals
,inventory-management
. Takie nazwy jasno wskazują, do jakiego obszaru lub działu organizacji należy przestrzeń.
- Przykłady:
-
Konsystencja z konwencjami nazw:
- Stosowanie struktury nazw podobnej do konwencji w Java, np.
com.companyname.projectname
, pozwala na zachowanie porządku i jednoznaczności, zwłaszcza w większych organizacjach.
- Stosowanie struktury nazw podobnej do konwencji w Java, np.
-
Uwzględnienie wersji lub środowisk:
- Jeśli przestrzenie są używane w różnych etapach projektu lub środowiskach, warto dodać informacje o wersji lub środowisku, np.
dev-sales-processes
(środowisko deweloperskie) czyprod-inventory-management
(środowisko produkcyjne).
- Jeśli przestrzenie są używane w różnych etapach projektu lub środowiskach, warto dodać informacje o wersji lub środowisku, np.
-
Unikanie ogólnych nazw:
- Nazwy takie jak "jakaś przestrzeń" są niepraktyczne i mogą prowadzić do zamieszania. Zamiast tego, przestrzenie powinny mieć konkretne, łatwe do zrozumienia i przypisania nazwy.
Przykłady dobrych nazw:
finance-processes
– procesy związane z finansami.customer-service
– przestrzeń dla procesów obsługi klienta.order-fulfillment
– przestrzeń związana z realizacją zamówień.production-workflows
– przestrzeń dla procesów produkcyjnych.support-ticketing-system
– przestrzeń dla procesów systemu zgłoszeń.
Dzięki takim nazwom łatwiej jest zarządzać i segregować procesy, co jest szczególnie ważne w dużych organizacjach. Klarowne nazewnictwo pomaga uniknąć nieporozumień i ułatwia odnalezienie potrzebnych zasobów.
Utwórz zatem przestrzeń klikając na przycisk "Add space".
Projekt
W jBPM projekt to zbiór zasobów, które umożliwiają definiowanie i zarządzanie procesami biznesowymi. Kluczowe elementy w menu 'Projekt' to:
- Procesy – Zawiera definicje przepływów pracy w formacie BPMN.
- Reguły – Określenie zasad biznesowych wykorzystywanych w procesach.
- Deployment – Wdrożenie projektu na środowisku jBPM.
- Zasoby – Elementy wspierające procesy, takie jak usługi, dane, formularze.
Projekt w jBPM służy do organizowania i zarządzania tymi zasobami, a także do ich wdrażania i monitorowania w systemie.
Wybierz zatem z menu "Add Project". Do nazewnictwa projektów (nie używaj spacji) możesz użyć trzech popularnych konwencji:
- CamelCase – Każdy wyraz zaczyna się wielką literą, np.
SalesProcess
. - Podkreślenia (
snake_case
) – Wyrazy oddzielone są podkreśleniami, np.sales_process
. - Kebab-case – Wyrazy oddzielone są myślnikami, np.
sales-process
.
Każda z tych metod poprawia czytelność nazw i zapobiega problemom z kompatybilnością, które mogą wynikać z użycia spacji lub innych znaków specjalnych.
Assets
W jBPM assets to zasoby projektu, które wspierają tworzenie i zarządzanie procesami biznesowymi. Główne typy assets w jBPM to:
- Procesy – Modele BPMN definiujące sekwencje działań w procesie.
- Reguły biznesowe – Logika decyzyjna sterująca przebiegiem procesów.
- Formularze – Interfejsy użytkownika do wprowadzania i przetwarzania danych w procesach.
- Obiekty danych (Data Objects) – Przechowują i przekazują dane między elementami procesów.
Kliknij na "Add Asset" i wybierz "Business process"
Instalacja JBPM
jBPM to elastyczny pakiet Business Process Management (BPM). Jest lekki, w pełni open-source (dystrybuowany na licencji Apache License 2.0) i napisany w Javie. Umożliwia modelowanie, wykonywanie i monitorowanie procesów biznesowych i przypadków przez cały cykl ich życia.
jBPM korzysta z następujących komponentów:
- Serwera aplikacji WildFly (wersja community Jboss Entreprise Application Server) rozwijanej przez Red Hat
- Drools jako silnik reguł biznesowych, Artemis JMS do obsługi komunikacji między komponentami,
- KIE Server - lekki serwer wykonawczy, który służy do uruchamiania procesów biznesowych BPMN, reguł Drools oraz optymalizacji OptaPlanner. Jego główną rolą jest wykonywanie tych elementów w oparciu o zadania przekazywane przez API (REST lub JMS). Sam KIE Server nie oferuje interfejsu graficznego do modelowania – jest jedynie serwerem uruchamiającym procesy i reguły. Kiedy finalnie uruchomisz http://localhost:8080/business-central połączysz sie właśnie z KIE Server
- KIE Workbench - aplikacja webowa działająca na serwerze aplikacyjnym (np. WildFly), która udostępnia graficzny interfejs do modelowania procesów BPMN, zarządzania regułami Drools i tworzenia formularzy.
Pobranie JBPM i przygotwanie systemu operacyjnego
jBPM wymaga Maven. jBPM jest zbiorem bibliotek i zależności zewnętrznych (np. Hibernate, Drools, itp.), które muszą być zainstalowane i dostępne podczas kompilacji i uruchamiania aplikacji. Maven pozwala na łatwe zarządzanie tymi zależnościami jBPM jest podzielone na różne moduły (np. jBPM core, jBPM console, jBPM human task, itp.), z których każdy może mieć swoje własne zależności. Maven pozwala na zarządzanie tymi zależnościami i modułami w sposób spójny, co ułatwia zarówno rozwój, jak i utrzymanie projektu.
Maven
Pobierz Maven ze strony https://maven.apache.org/download.cgi a następnie dodaj do zmiennych Windows 'MAVEN_HOME' oraz do zmiennej 'PATH' scieżkę '%MAVEN_HOME%\bin'.
Repozytorium projektów JBPM będzie domyślnie przechowywane w:
C:\Users\user\.m2\repository
Możesz to zmienić ustawiając zmienna M2_HOME z odpowiednią ścieżką.
Java
JBPM nie uruchamia się w środowisku Java wyższym niż versja 8. Pobierz JDK np w wersji 'jdk8u432-b06'. Nie musisz ustawiać JAVA_HOME ze wskazaniem na tę wersję, wystarczy że ustawisz ją w pliku który uruchamia JBPM, standalone.bat:
set "JAVA_HOME=C:\Program Files\Java\jdk8u432-b06"
Pobranie JBPM
Ze strony https://www.jbpm.org/download/community.html pobierz zip oznaczony 'Download jBPM 7.74.1.Final server (single zip) distribution'. Po rozpakowaniu na dysku, upenij się że system będzie miał prawo zapisu w katalogach JBPM - pisanie do pliku konfiguracyjnego, tworzenie XML z ustawieniami serwera, pobieranie konektorów bazy danych i tworzenie konfiguracji połączenia.
Przygotowanie bazy danych
Domyślna instalacja JBPM zawiera baze danych H2. Do celów produkcyjnych potrzebujesz innej. Jeśli zdecydujesz sie na skorzytanie z MySQL lub Postgresql, JBPM ma skrypt ktory wykona konfigurajcę za Ciebie. Najlepszym pomysłem będzie użycie Postgresql (MySQL czesto faktycznie jest bazą MariaDB, domyslny konektor ktory przychodzi z instalacja JBPM nie wspolpracuje z MySQL w Windows a po instalacji mysql-connector-java-5.1.49-bin.jar JBPM mimo ze uzywa bazy, zglasza w logu bledy o niekompatybilnosci). Użyjemy zatem Postgresql.
Instalacja Postgresql
Nie musisz instalować bazy Postgres trwale w systemie. Do celów testu wystarczy pobranie np postgresql-17.0-1-windows-x64-binaries ze strony https://www.postgresql.org/download/. Po rozpakowaniu zip uruchom polecenia:
# Inicjacja bazy (wcześniej ustaw użytkownika w config, katalogu share). Katalog 'data' przechowuje dane.
initdb -D Z:\Postgresql\data -U postgres -A scram-sha-256 --pwprompt
# Uruchamianie
pg_ctl -D "Z:/Postgresql/data" -l "plik_dziennika.log" start
# Sprawdzanie statusu
pg_ctl -D "Z:/Postgresql/data" status
# Zatrzymanie:
pg_ctl -D "Z:/Postgresql/data" stop
Utworz baze, użytkownika dla JBPM i nadaj uprawnienia
Dobrym pomysłem będzie użycie DBeaver - jest lżejszy niż PGAdmin. Korzystając z tego GUI (zaznacz opcje 'show all databases' we właściwościach połączenia) utwórz baze 'jbpm', użytkownika 'jbpm' z hasłem 'jbpm' (to test) a następnie wykonaj szereg poleceń SQL by nadać temu użytkownikowi odpowiednie uprawnienia:
GRANT CONNECT ON DATABASE jbpms TO jbpm;
GRANT USAGE ON SCHEMA public TO jbpm;
GRANT CREATE ON SCHEMA public TO jbpm;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jbpm;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO jbpm;
Instalacja Camunda w klastrze Kubernetes za pomocą Rancher
Zestaw aplikacji możemy zainstalować w klastrach Kubernetes na dwa sposoby:
- Instalacja Helm Chart przez CLI (użycie konsoli)
- Instalacja Helm Chart przez GUI Ranchera
W tym tutorialu wykorzystamy ten pierwszy sposób.
Wybranie właściwego klastra
Repozytorium i instalację aplikacji przeprowadzamy w wybranym przez nas klastrze w Rancher. Pamiętaj by nie tworzyć klastra dla aplikacji na tej samej maszynie na której działa już klaster Rancher - dwa klastry na tym samym hoscie to konflikty ip, portów, ram, cpu (taka instalacja wymaga specjalnej konfiguracji). Upewnij się że działasz na właściwym klastrze. Wybierz 'Home" a następnie kliknij na właściwy klaster (tutaj jest to 'camunda-cluster'):
Dodanie repozytorium Helm
Camunda posiada reposytorium Helm. Możesz dodać to repozytorium Helm z chartami Camunda, aby móc z nich korzystać. Po wykonaniu tego kroku Helm będzie mógł pobierać i instalować chart'y dostępne pod adresem https://helm.camunda.io.
Krok wyżej wybrał(a)ś właściwy klaster. Teraz rozwiń 'Apps' i kliknij na 'Repositories'. Następnie klinij przycisk 'Create':
Na ekranie który pojawi się po wciśnięciu przycisku "Create" wpisz dane repozytorium plus dodatkowy opis:
Instalowanie aplikacji
Helm charts to gotowe pakiety do zarządzania aplikacjami na Kubernetes, które zawierają definicje zasobów potrzebnych do instalacji oraz konfiguracji aplikacji w klastrze. We wcześniejszym kroku dodaliśmy ich repozytorium dla aplikacji Camunda. W tym kroku przechodzimy do ich wyboru. Rozwiń menu "Apps" i kliknij na "Charts". W filtrze wpisz pierwsze litery nazwy naszej aplikacji ('cam'):