
Jak typy danych i indeksy wpływają na prędkość działania i wydajność bazy danych
To w jakim formacie przechowujesz dane w bazie danych ma znaczenie. Ogromne. Mają też znaczenie indeksy. Właściwe połaczenie typów danych z indeksami jest kluczowe dla wydajności całej bazy danych. W testach poniżej mamy dwie proste tabele wypełnione pseudolosowymi danymi. Testy pokazują jak zmienia się prędkość wykonania zapytań w zależności od typów danych i obecności lub braku indeksów.
Testowe tabele
Utworzymy dwie proste tabele do testow; 'demo_table1' i 'demo_table2'. Obie tabele maja na celowo ustawiony typ danych varchar dla kolumny 'random_number' by zademonstrować różnice czasie wykonania zapytania dla różnych typów danych.
CREATE TABLE demo_table1 (
random_number VARCHAR(8),
random_text VARCHAR(100)
);
CREATE TABLE demo_table2 (
random_number VARCHAR(8),
random_text VARCHAR(100)
);
Wypełniamy tabele danymi
Umieszczamy pseudolosowe dane w testowych tabelach. W każdej tableli umieszczamy dwa miliony rekordów.
Tabela demo_table1:
Tabela 'demo_table2':

Instalacja Apache Spark w Windows
By korzystać z Apache Spark, potrzebujemy Hadoop. Hadoop to system do przetwarzania dużych zbiorów danych w sposób rozproszony na wielu komputerach. Składa się z HDFS (system plików) i MapReduce (model obliczeniowy). Apache Spark jest do pobrania w jednym z trzech pakietow:
- Prebuilt for Apache Hadoop
- Prebuild for Apache Hadoop (Scala)
- Prebuild with user-provided Hadoop
1. Pobranie Apache Spark
Ze strony https://spark.apache.org/downloads.html pobieramy pierwsza wersję; Prebuilt for Apache Hadoop. Pobrany plik *.tgz rozpakowujemy do pliku *tar który nastepnie rozpakujemy np w katalogu D:\spark-3.5.4-bin-hadoop3
Następnie dodajemy zmienną systemową 'SPARK_HOME' która wskazuje na katalog 'D:\spark-3.5.4-bin-hadoop3' oraz dodajemy '%SPARK_HOME%\bin' do zmiennej środowiskowej PATH.
2. Instalacja Hadoop
Spark wymagać będzie Hadoop do działania. Pobieramy odpowiednia wersje. Wersję dla której będziemy mieć Winutils - na stronie https://github.com/cdarlint/winutils, sprawdzisz dla której wersji dostępne jest narzędzie Winutils. Jesli np ostatnia wersją Winutils jest 'hadoop-3.3.6/bin' - pobierz Hadoop w wersji 3.3.6.
Pobrany plik *.gz rozpakowujemy najpierw do postaci *tar a nastepnie do katalogu docelowego programu, np. 'D:\hadoop'
3. Pobranie Winutils
Winutils.exe to narzędzie umożliwiające działanie Hadoop na Windowsie, emulując funkcje systemu plików Linuxa wymagane przez Hadoop. Wchodzimy na stronę https://github.com/cdarlint/winutils i pobieramy cale repozytorium ('Download zip'). Rozpakowujemy zip i wybieramy wersję Hadoop zgodna z naszym Hadoop zainstalowanym w kroku powyżej. Kopiujemy zawartość katalogu 'hadoop-x.x.x/bin' do katalogu 'D:\hadoop\bin' nadpisując kilka plików.
Następnie tworzymy zmienną 'HADOOP_HOME' wskazującą na 'D:\hadoop' oraz dodajemy '%HADOOP_HOME\bin%' do zmiennej środowiskowej PATH.

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"