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'):
Instalacja Rancher do obslugi klastrow Kubernetes
Co potrzebujemy by uruchomić Kubernetes
Poniższy tutorial jest o tym jak stworzyć testowe środowisko Kubernetes. Nie jest to materiał szkoleniowy o samym Kubernetes ani też o pozostałych komponentach które są wymagane dla uzyskania tego środowiska. Kubernetes jest systemem zlożonym i jego poznanie wymaga zaangażowania.
Kubernetes to system do zarządzania kontenerami, który automatyzuje wdrażanie, skalowanie i zarządzanie aplikacjami kontenerowymi w klastrze. Umożliwia łatwe zarządzanie grupą kontenerów jako jedną jednostką. Dlaczego wymaga środowiska Docker?
- Platforma Kontenerowa: Kubernetes wykorzystuje Docker do tworzenia i zarządzania kontenerami.
- Standardizacja: Kubernetes opiera się na standardach kontenerów, a Docker jest de facto standardem dla tworzenia tych kontenerów.
Kubernetes najczęściej uruchamiany jest z kontenerami Docker, jest systemem orkiestracji kontenerów, ale może wykorzystywać także inne środowiska niż Docker do tworzenia kontenerów.
Dlaczego uruchamianie Dockera w Windows to bardzo zły pomył?
Choć docker.com udostępnia swoje oprogramowanie także dla systemu operacyjnego Windows, w praktyce nie nadaje się ono nawet do testów nie mówiąc już produkcyjnej instalacji Dockera. Instalacja Docker'a potrafi się zaorać sama z siebie w Windows w każdym momencie bez właściwie żadnej przyczyny. Oto kilka punktów 'formalnych' dlaczego Docker w Windows to niezbyt wspaniały pomysł:
-
Wydajność: Docker na Windows wymaga maszyny wirtualnej, co wprowadza dodatkowy narzut i opóźnienia w uruchamianiu kontenerów.
-
Kompatybilność: Niektóre obrazy są zoptymalizowane dla Linuxa i mogą nie działać poprawnie na Windowsie.
-
Ograniczone Narzędzia: Mniej narzędzi do zarządzania kontenerami, co utrudnia automatyzację i monitorowanie.
-
Problemy z Systemem Plików: Różnice w systemach plików mogą prowadzić do problemów z wydajnością i interoperacyjnością.
Dla środowisk produkcyjnych zaleca się korzystanie z systemów Linux.