You are on page 1of 69

Modelowanie procesów biznesowych

– BPMN cz. II
Plan wykładu

• Łączenie przepływów
• Powtarzanie czynności
• Zdarzenia pośrednie
• Podprocesy

2
Literatura*

• http://www.omg.org/spec/BPMN/2.0/ – witryna organizacji


odpowiedzialnej m.in. za aktualną wersję BPMN

• Bruce Silver: BPMN Method and Style

• Thomas Allwayer: BPMN 2.0

• Stephen A. White, Derek Miers: BPMN Modeling and Reference Guide

• Szymon Drejewicz: Zrozumieć BPMN

*w prezentacji wykorzystano przykłady z wyżej wymienionych pozycji


3
• Łączenie przepływów
• Powtarzanie czynności
• Zdarzenia pośrednie
• Podprocesy

4
Koncepcja żetonu – tokena

• Żeton jest abstrakcyjną elementem służącym do opisania


zachowania procesu

• Żeton „krąży” zgodnie z przepływem sekwencji w procesie i


„przechodzi” przez elementy modelu

• Początek procesu biznesowego generuje żeton, koniec


procesu oznacza jego usunięcie

• Żetony mogą być kreowane, usuwane, rozszczepiane oraz


scalane
5
Bramki łączące (1)

• Każdy żeton docierający do bramki XOR jest


natychmiastowo i bezwarunkowo
przekazywany dalej. Jeśli zdarzy się, że do
bramki dotrze dwa lub więcej żetonów,
wówczas wszystkie są przekazywane dalej,
powodując często wielokrotne uruchomienie
czynności występujących po bramce

• Bramka równoległa oczekuje aż dotrą do


niej żetony z wszystkich dochodzących
gałęzi. Po dotarciu wszystkich żetonów są
one łączone w jeden i ten żeton jest
przekazywany dalej

6
Bramki łączące (2)

• Bramka OR po dotarciu pierwszego żetonu


sprawdza, czy w dochodzących gałęziach są
jakieś inne żetony. Jeśli są, wówczas czeka
na kolejny żeton i po jego nadejściu sprawdza
ponownie. Jeśli żetonów w dochodzących
gałęziach już nie ma, wówczas wszystkie
żetony które dotarły są łączone w jeden i ten
nowy żeton jest przekazywany dalej

• Bramka złożona po dotarciu żetonu sprawdza


warunek. Jeśli warunek nie jest spełniony, nic
się nie dzieje. Jeśli warunek okaże się
prawdziwy, wówczas żeton jest natychmiast
przekazywany dalej, a bramka czeka nadal.
Od tego momentu wszystkie żetony, które
dotrą do bramki są usuwane.

7
Łączenie przepływów
alternatywnych (1)
• Klasyczne połączenie
przebiegów alternatywnych
przy pomocy bramki XOR
(zalecane)

• Połączenie przebiegów
alternatywnych przy pomocy
bramki równoległej
spowoduje zatrzymanie
procesu

8
Łączenie przepływów
alternatywnych (2)
• Połączenie przebiegów
alternatywnych jest
możliwe przy pomocy
bramki OR (niezalecane )

• Połączenie przebiegów
alternatywnych jest
również możliwe przy
pomocy bramki złożonej
po odpowiednim
sformułowaniu warunku
(niezalecane )
9
Łączenie przepływów
równoległych – bramka
równoległa
Oczekiwanie aż
Rozwidlenie na obydwa zadania
dwa równoległe zostaną ukończone
przepływy

Zadanie wykona się jeden raz


po ukończeniu wszystkich
poprzednich zadań

10
Łączenie przepływów
równoległych – bramka OR
Rozwidlenie na Oczekiwanie aż wszystkie rozpoczęte
dwa równoległe zadania zostaną ukończone (w tym
przepływy przypadku bramka OR zachowa się
identycznie jak bramka równoległa)

Zadanie wykona się jeden raz


po ukończeniu wszystkich
poprzednich zadań

11
Łączenie przepływów
równoległych – bramka XOR
Rozwidlenie na Po zakończeniu każdego z
dwa równoległe zadań wyszukiwania
przepływy natychmiast uruchomione
zostanie zadanie weryfikacji

Zadanie weryfikacji wykona się


dwa razy: po zakończeniu zadania
wyszukiwania w Internecie oraz po
zakończeniu zadania
wyszukiwania w bibliotece

12
Łączenie przepływów
równoległych – bramka
Złożona Bramka będzie oczekiwać na zakończenie
jednego z zadań wyszukiwania. Po
Rozwidlenie na zakończeniu jednego z tych zadań
dwa równoległe natychmiast uruchomione zostanie
przepływy zadanie weryfikacji.

Zakończenie drugiego z zadań Zadanie wykona się jeden raz


wyszukiwania pozostanie bez po ukończeniu pierwszego z
wpływu na zachowanie zadań wyszukiwania
procesu.

13
• Łączenie przepływów
• Powtarzanie czynności
• Zdarzenia pośrednie
• Podprocesy

14
Powtarzanie czynności (1)

• Powtarzanie czynności (pętle)


można zrealizować w oparciu o
bramki XOR i odpowiednie
warunki

• Warunek prawdziwy oznacza


powtarzanie czynności

• Warunek fałszywy oznacza


zaprzestanie powtarzania i
przejście dalej

• Warunek może być sprawdzany


na początku lub na końcu
15
Powtarzanie czynności (2)

• Zadania oraz podprocesy mogą być powtarzane

• Liczba powtórzeń nie jest z góry ustalona


– Do-While – warunek pętli sprawdzany jest po wykonaniu
czynności; pętla przestaje się wykonywać, gdy warunek
stanie się fałszywy
– While-Do – warunek pętli jest sprawdzany przed
wykonaniem czynności; pętla przestaje się wykonywać, gdy
warunek stanie się fałszywy

• Istnieje możliwość zdefiniowania maksymalnej liczby


iteracji. Przekroczenie tej liczby oznacza zakończenie
pętli niezależnie od wartości logicznej warunku pętli

16
Czynności wielo-instancyjne

• Wiele instancji tej samej czynności jest uruchamiane


sekwencyjnie lub równolegle

• Czynności wielo-instancyjne operują na kolekcji (liście)


danych, np. dla każdej pozycji zamówienia dokonaj
sprawdzenia dostępności towaru

• Liczba instancji czynności wielo-instancyjnej jest stała;


ustalana jest przed rozpoczęciem wykonywania

• Realizacji czynności wielo-instancyjnej odpowiada


programistycznej konstrukcji For-Each

17
Szeregowe czynności wielo-
instancyjne
• Szeregowa czynność wielo-instancyjna polega na sekwencyjnym
uruchamianiu kolejnych instancji czynności

• Szeregowa czynność wielo-instancyjna może być zastąpiona


sekwencją identycznych czynności, pod warunkiem jednak, że
liczba instancji czynności jest znana na etapie projektowania

• Czynności wielo-instancyjna szeregowa vs. pętla


(w pętli liczba iteracji nie jest ustalona, w czynności wielo-
instancyjnej szeregowej liczba iteracji jest ustalona przed
rozpoczęciem)

18
Równoległe czynności
wielo-instancyjne
• Równoległa czynność wielo-instancyjna polega na
uruchamianiu jednocześnie wszystkich instancji czynności

• Równoległa czynność wielo-instancyjna może być


zastąpiona bramką równoległą, pod warunkiem jednak, że
liczba instancji czynności jest znana w momencie
projektowania

19
Pozostałe elementy wielo-
instancyjne

• Pula wieloinstancyjna oznacza, że


może istnieć wiele jednostek
wykonujących identyczny proces, np.
Petent(wielo-instancyjny uczestnik),
Urząd (uczestnik jedno-instancyjny)

• Wielo-instancyjny obiekt danych


oznacza kolekcję / listę obiektów tego
samego rodzaju, np. Zamówienie jest
kolekcją pozycji zamówienia

20
Przykład (1)

• Proces zaopatrywania sieci hurtowni samochodowych w


części od różnych producentów

• Proces składa się z następujących czynności:


– Zebranie zapotrzebowania na części ze wszystkich oddziałów
hurtowni
– Przekazanie zamówień do poszczególnych producentów
– Dostawa części do wszystkich oddziałów hurtowni przy
wykorzystaniu floty samochodów dostawczych

21
Przykład (2)
Dopóki nie zostaną Niezależnie dla każdego
zebrane zamówienia ze kierowcy zaopatrzeniowego
wszystkich hurtowni oddzielnie

Kolejno dla każdego


producenta części
oddzielnie

22
• Łączenie przepływów
• Powtarzanie czynności
• Zdarzenia pośrednie
• Podprocesy

23
Zdarzenia w BPMN 2.0

24
Zdarzenia pośrednie

• Zdarzenie pośrednie oznacza, że coś wydarzyło się po


starcie procesu i przed jego zakończeniem

• Zdarzenia pośrednie mogą być typu wychwytującego


(catch) oraz wysyłającego (throw)

• Zdarzenia pośrednie mają jeden wejściowy oraz jeden


wyjściowy przepływ sekwencji

25
Wzorzec kamienia milowego
Kiedy koncepcja książki jest
gotowa, wysyłany jest sygnał

Dwa podprocesy
rozpoczynają działanie
(równolegle)

Sygnały pełnią role


kamieni milowych –
informują otoczenie, że
pewien etap właśnie
się zakończył
Oczekuje na sygnał oznaczający, że
koncepcja książki jest gotowa.
Kiedy sygnał dotrze uruchamiane jest
zadanie przygotowania projektu oprawy
26
Kamień milowy – a dlaczego
nie tak?

• Usunięcie podprocesów wyraźnie upraszcza model (możliwe jest np. użycie


przepływów sekwencji)

• Usuniecie podprocesów nie zawsze jest jednak możliwe, bo podprocesy mogą być
używane w innych miejscach lub też do podprocesów mogą być przypięte pewne
zdarzenia

• Zastosowanie sygnałów w tym konkretnym przypadku skutkuje większą złożonością


modelu, ale oznacza też słabsze powiązanie pomiędzy niektórymi czynnościami
(loosely coupling)
27
Zdarzenia pośrednie
krawędziowe (1)
• Zdarzenia krawędziowe są rodzajem
zdarzeń pośrednich

• Nazwę zawdzięczają temu, że są


przypięte (do krawędzi) czynności

• Wszystkie zdarzenia krawędziowe są


typu wychwytującego (catch)

• Po uruchomieniu czynności do której


przypięte jest zdarzenie krawędziowe
następuje oczekiwanie na to zdarzenie

28
Zdarzenia pośrednie
krawędziowe (2)
• Zdarzenia krawędziowe muszą mieć
określony typ, tj. nie można użyć
zdarzenia nieokreślonego

• Zdarzenia krawędziowe służą przede


wszystkim do obsługi sytuacji
wyjątkowych

• Z czynności posiadającej zdarzenie


krawędziowe wychodzą co najmniej dwa
przepływy: przepływ normalny oraz
przepływ wyjątku

29
Zdarzenia krawędziowe
przerywające
• Jeśli do zakończenia czynności nie nadejdzie zdarzenie,
wówczas proces kontynuuje działanie po ścieżce normalnej

• Jeśli przed zakończeniem czynności pojawi się zdarzenie


krawędziowe, wówczas przerywana jest czynność oraz
następuje przejście do ścieżki wyjątku

30
Zdarzenie krawędziowe
nieprzerywające
• Jeśli do zakończenia czynności nie nadejdzie zdarzenie, wówczas
proces kontynuuje działanie po ścieżce normalnej

• Jeśli przed zakończeniem czynności pojawi się zdarzenie, wówczas


tworzona jest równoległa ścieżka wyjątku (czynność jest nadal
wykonywana)

31
Zdarzenia krawędziowe
przerywające – przykład
Jeśli w trakcie przetwarzania
zamówienia nie zostanie odebrany
komunikat anulowania zamówienia,
wówczas proces przejdzie do
dostawy zamówienia

Jeśli w trakcie przetwarzania


zamówienia zostanie odebrany
komunikat anulowania zamówienia,
wówczas przerwana zostanie
czynność przetwarzania
zamówienia i proces przejdzie do
zdarzenia końcowego

32
Zdarzenie krawędziowe
nieprzerywające – przykład
Jeśli w trakcie przetwarzania
zamówienia nie zostanie odebrany
komunikat aktualizacji zamówienia,
wówczas proces przejdzie do
dostawy zamówienia

Jeśli w trakcie przetwarzania zamówienia


zostanie odebrany komunikat aktualizacji
zamówienia, wówczas uruchomiona zostanie
dodatkowa (równoległa) ścieżka procesu
prowadząca do czynności „Aktualizuj
zamówienie”.
Czynność „Przetwarzaj zamówienie” będzie
nadal wykonywana, a po jej zakończeniu proces
przejdzie do czynności „Dostawa zamówienia” 33
Wiele zdarzeń
krawędziowych
Do czynność można przypisać
wiele zdarzeń krawędziowych

Jeśli zdarzenia te są
obsługiwane identycznie,
wówczas można wykorzystać
tzw. wielozdarzenia

34
Nasłuchiwanie vs.
oczekiwanie
• Czynność zaczyna być wykonywana,
jednocześnie prowadzony jest nasłuch
na określone zdarzenie
• Proces przejdzie dalej po zakończeniu
czynności (jedną lub obydwiema
ścieżkami)

 Proces zatrzymuje się i czeka na


określone zdarzenie

 Proces przejdzie dalej tylko wtedy,


gdy określone zdarzenie nadejdzie
35
Zgłaszanie błędu

• BPMN umożliwia zgłaszanie błędu przy pomocy


zdarzenia końcowego Błąd

 Zdarzenie końcowe Błąd oznacza sytuację, kiedy dana


ścieżka procesu kończy się błędem

 Zdarzenie błąd może być zgłaszane explicite (w definicji


procesu) lub implicite przez systemy informatyczne

 Rodzaje błędów:
 Techniczne (np. automat nie może odczytać karty, usługa
sieciowa niedostępna)
 Biznesowe (np. brak środków na koncie, odrzucenie podania)

36
Zachowanie procesu po
zgłoszeniu błędu

 Zdarzenie końcowe Błąd powoduje zakończenie wszystkich


aktywnych ścieżek bieżącego procesu oraz wszystkich jego
podprocesów, nie kończy jednak procesu nadrzędnego

 Zdarzenie końcowe błąd przekazuje rezultat błędu do


procesu nadrzędnego (przekazywanie błędów może
odbywać się tylko w ramach tej samej puli)

37
Obsługa błędów

• Możliwości przechwytywania i obsługi błędów:


– zdarzenie krawędziowe
– podprocesy zdarzeniowe

• Przechwytywane są tylko te zgłoszenia błędów, które


mają taką samą nawę jak zdarzenie zgłaszające

• Jeśli zdarzenie przechwytujące nie posiada nazwy,


wówczas przechwytywane są wszystkie zgłoszenia
błędów

• Zgłoszenia błędów mogą przemieszczać się tylko w


górę w hierarchii procesów

38
Mechanizm throw-catch dla
błędów
Proces znajdzie się na ścieżce
Zdarzenie końcowe normalnej tylko wtedy, gdy w
błąd służy do trakcie wykonywania podprocesu
zgłoszenia błędu nie zostanie zgłoszony żaden błąd

Każdy błąd zgłoszony w okresie


aktywności podprocesu „Weryfikacji
zdolności kredytowej” jest
przechwytywany przez zdarzenie
krawędziowe
Proces znajdzie się na ścieżce
wyjątku tylko wtedy, gdy w trakcie
wykonywania podprocesu
zostanie zgłoszony błąd
39
Eskalacja

• Procedurę eskalację można interpretować jako


konieczność wykonania pewnych dodatkowych
działań, najczęściej bez naruszania bieżącej
ścieżki procesu
• BPMN dopuszcza dwa sposoby na zgłoszenie
potrzeby eskalacji: zdarzenie końcowe oraz
zdarzenie pośrednie

 Zgłoszenie eskalacji nie oznacza zakończenia procesu

 Zdarzenia zgłaszające eskalację przekazują rezultat eskalacji


do procesu nadrzędnego (przekazywanie rezultatu eskalacji
może odbywać się tylko w ramach tej samej puli)

40
Obsługa eskalacji

• Możliwości przechwytywania i obsługi eskalacji:


– zdarzenie krawędziowe (przerywające i
nieprzerywające)
– podprocesy zdarzeniowe (przerywające i
nieprzerywające)

• Przechwytywane są tylko te zgłoszenia eskalacji, które


mają taką sama nawę jak zdarzenie zgłaszające

• Jeśli zdarzenie przechwytujące nie posiada nazwy,


wówczas przechwytywane są wszystkie zgłoszenia
eskalacji

• Zgłoszenia eskalacji mogą przemieszczać się tylko w


górę w hierarchii procesów

41
Mechanizm throw-catch dla
eskalacji
Zdarzenie końcowe Proces znajdzie się na ścieżce
eskalacji służy do normalnej zawsze po skończeniu
zgłoszenia potrzeby wykonywania podprocesu
eskalacji „Przyjęcie zamówienia”

Każde zgłoszenie eskalacji w


okresie aktywności podprocesu
„Przyjęcie zamówienia” jest
przechwytywane przez zdarzenie
Ścieżka prowadząca do aktualizacji krawędziowe
danych zostanie uaktywniona jako
równoległa do ścieżki normalnej
wówczas, gdy odebrane zostanie
zgłoszenie eskalacji
42
Eskalacja vs. Błąd

Eskalacja Błąd
• Eskalacja służy do wykonania pewnych • Błędy służą do poinformowania, że
dodatkowych działań, najczęściej bez proces nie zachowuje się zgodnie z
naruszania bieżącej ścieżki procesu oczekiwaniami

• Zgłoszenie eskalacji nie kończy • Zgłoszenie błędu kończy bieżący proces


bieżącego procesu

• Istnieje jedno zdarzenie zgłaszające


• Istnieją dwa zdarzenia zgłaszające błąd: zdarzenie końcowe
potrzebę eskalacji: zdarzenia pośrednie
i końcowe

• Procedura obsługi błędu przerywa


• Procedura obsługi eskalacji może być
wykonywanie czynności, w której
wykonywana równolegle do czynności w
nastąpiło zgłoszenie błędu
której nastąpiło zgłoszenie

43
• Łączenie przepływów
• Powtarzanie czynności
• Zdarzenia pośrednie
• Podprocesy

44
Rodzaje czynności

• Zadanie
Czynność atomowa

• Podproces
Czynności nie atomowe

• Czynność wywołania
Reprezentuje wywołanie innej
czynności

45
Podprocesy

• Podproces to rodzaj czynności na którą składają się inne


czynności, bramki, zdarzenia oraz przepływy

• Podproces określa zakres / zasięg widoczności atrybutów,


transakcji, obsługi wyjątków kompensacji

• Istnieją 4 rodzaje podprocesów:

46
Podproces osadzony

• Podproces osadzony to rodzaj czynności, która


została rozłożona na „mniejsze” czynności, bramki,
zdarzenia i przepływy

 Podprocesy osadzony funkcjonuje tylko w kontekście procesu


nadrzędnego

 Jeśli podproces posiada zdarzenia początkowe, to musi to być


zdarzenie niekreślonego typu

 Podproces osadzony jest uruchamiany poprzez przepływ sekwencji

 Podproces osadzony posiada bezpośredni dostęp do danych


procesu nadrzędnego (bo jest częścią procesu nadrzędnego)

47
Podprocesy zwinięte i
rozwinięte

Podproces osadzony Podproces osadzony


w formie zwiniętej w formie rozwiniętej

48
Podprocesy Ad-Hoc

Grupa czynności realizowanych bez narzuconej kolejności

Czynności mogą być wykonywane


 Sekwencyjnie – w danym momencie może być wykonywana tylko
jedna czynność
(ordering=parallel)

 Równolegle – w danym momencie może być wykonywane kilka


czynności
(ordering=sequential)

Każda czynność może być wykonywana wielokrotnie

49
Rozpoczynanie i kończenie
podprocesu Ad-Hoc
O sposobie rozpoczęcia procesu decydują wykonawcy
poszczególnych zadań

Do zakończenia procesu Ad-Hoc nie jest wymagane zakończenie


wszystkich czynności

Zakończenie procesu jest uzależnione od pewnych warunków


(CompletionCondition)

Parametr cancelRemainingInstances określa, co należy zrobić z


instancjami zadań po spełnieniu warunku zakończenia (wartość
true w trybie parallel anuluje wszystkie czynności w trakcie
wykonywania )

50
Przykład podprocesu Ad-
Hoc

51
Szczególne przypadki
podprocesu
Ad-hoc

• W podprocesie Ad-Hoc mogą pojawić się czynności


połączone w sekwencję. W takim przypadku czynności te
muszą być wykonane sekwencyjne

• Może się zdarzyć sytuacja, że nie jest możliwe


zdefiniowanie kolejności wykonania czynności, ale jest
możliwość zdefiniowania przepływu obiektów/dokumentów.
Wówczas na diagramie należy ten przepływ dokumentów
zaznaczyć

52
Podprocesy zdarzeniowe

• Podproces zdarzeniowy może być utworzony


wewnątrz podprocesu
• Jego zadanie polega na nasłuchiwaniu określonych
zdarzeń

 Nasłuchiwanie rozpoczyna się w momencie rozpoczęcia podprocesu i


kończy się w chwili jego zakończenia

 Jest rodzajem wbudowanej (inline) procedury obsługi zdarzeń

 Wykonuje się w kontekście podprocesu w ramach którego jest


zdefiniowany

 Jest uruchamiany zdarzeniem a nie przepływem sekwencji

 Może być uruchomiony wielokrotnie, może też w ogóle nie zostać


uruchomiony
53
Przerywający podproces
zdarzeniowy
Przejście do przygotowywania listy
kandydatów nastąpi, gdy do 7 dni uda się
znaleźć kandydata wewnątrz firmy. Jeśli się nie
uda, wówczas zakończy się dopiero po
ukończeniu poszukiwań przez agencję
(podproces zdarzeniowy)

Jeśli po upływie 7 dni poszukiwanie wewnętrzne


Po rozpoczęciu podprocesu „Poszukiwanie nie zostało zakończone, wówczas jest
kandydata do pracy” uruchamiane jest przerywane i rozpoczyna się poszukiwania przez
poszukiwanie kandydata wewnątrz firmy agencję (podproces zdarzeniowy )
oraz mierzony jest czas 54
Nieprzerywający podproces
zdarzeniowy
Przejście do dostawy zamówienia nastąpi wtedy,
gdy zakończy się kompletowanie zamówienia i
podproces zdarzeniowy aktualizacji zamówienia,
(jeśli został uruchomiony), Jeśli podproces
zdarzeniowy nie został uruchomiony, wówczas
przejście do dostawy zamówienia nastąpi zaraz
po zakończeniu kompletowania

Po rozpoczęciu podprocesu W chwili gdy zdarzenie „Aktualizuj


przetwarzania zamówienie podproces zamówienie” nadejdzie rozpoczyna się
zdarzeniowy rozpoczyna nasłuch. podproces zdarzeniowy aktualizacji
Interesuje go zdarzenie „Aktualizuj zamówienia. Podproces „Przetwarzaj
zamówienie”, które może przysłać np. zamówienie nadal jest jednak
klient wykonywany
55
Podproces Zdarzeniowy vs.
Podproces osadzony
Podproces zdarzeniowy Podproces osadzony

Jest wykonywany poza normalnym Jest wykonywany w ramach


przepływem normalnego przepływu

Rozpoczyna się zdarzeniem Rozpoczyna się zdarzeniem


początkowym konkretnego typu początkowym bez ustalonego typu

Nie może posiadać wejściowych i Posiada wejściowe i wyjściowe


wyjściowych przepływów sekwencji przepływy sekwencji

56
Podproces zdarzeniowy vs.
Zdarzenia krawędziowe
Podproces zdarzeniowy Zdarzenia krawędziowe

Może być zdefiniowany tylko Może być zdefiniowane dla


wewnątrz podprocesu podprocesu i zadań

Jest traktowany jako wbudowana Jest traktowany jako zewnętrzna


(inline) procedura obsługi procedura obsługi zdarzenia
zdarzenia

Ma dostęp do danych podprocesu Wszelkie dane wymagane przez


wewnątrz którego jest zdefiniowany obsługę zdarzenia muszą być
przekazywane

Po zakończenie działania proces Po zakończeniu działania proces


kontynuuje ścieżkę normalną może kontynuować ścieżkę
normalną albo ścieżkę wyjątku albo
też
57
obydwie te ścieżki
Procesy i zadania globalne

• W BPMN można definiować procesy i zadania, które mogą być


wielokrotnie używane

• Procesy wielokrotnie używane noszą nazwę procesów globalnych

• Zadanie wielokrotnie używane noszą nazwę zadań globalnych

• Dopuszcza się 4 rodzaje zadań globalnych: manualne, użytkownika,


skryptowe, reguły biznesowej

58
Czynność wywołania

• Do wywoływania procesów i zadań


globalnych służą tzw. czynności
wywołania

 Wywoływany proces nie posiada dostępu do danych procesu


wywołującego

 Czynność wywołania musi zadbać by do wywołanego procesu


trafiły wszystkie niezbędne dane

 Czynność wywołania musi też odebrać wyniki z procesu


wywoływanego

59
Transakcje w systemach IT

• Transakcja – zbiór operacji, które stanowią pewna całość i powinny być


wykonane wszystkie lub żadna z nich

• ACID – własności transakcji gwarantujące poprawne jej przetwarzanie

– Atomicity – wszystko albo nic


– Consistence – po wykonaniu transakcji system będzie spójny
– Isolated – transakcje nie wpływają na siebie
– Durable – operacje wykonane w trakcie transakcji są trwałe

• Przykład transakcji: Przelew bankowy

60
Transakcje w procesach
biznesowych
• W procesach biznesowych zwykle trudno spełnić
wymagania ACID (problemem jest izolacja transakcji)

• Czynności mogą trwać zbyt długo, by możliwe i sensowne


było blokowanie zasobów realizujących czynności, np.
zakup towaru w sklepie internetowym przy pomocy karty,
gdzie po zakupie okazuje się, że producent towaru nie może
go dostarczyć do sklepu

61
Podproces transakcji

• Transakcja w procesach biznesowych jest


rodzajem umowy pomiędzy dwoma lub więcej
uczestnikami

 Aby transakcja zakończyła się sukcesem wszystkie strony umowy


muszą zrealizować swoje czynności i zgodzić się na zakończenie
transakcji

 Jeśli jedna ze stron wycofa się z umowy lub pojawi się nieoczekiwany
błąd, wówczas transakcja jest anulowana i wszystkie strony
podejmują działania zmierzające do cofnięcia / kompensacji
wszystkich ukończonych czynności

 Przebieg transakcji jest kontrolowany przez tzw. protokół transakcyjny


(np. WS-Transaction, BTP)
62
Zdarzenia występujące w
transakcji
Zgłoszenie
Odbiera anulowania
zgłoszenie o transakcji
kompensacji

Podproces
transakcji

Odbiera Czynność
zgłoszenie o wykonywana podczas
błędzie obsługi kompensacji

Odbiera Odbiera
zgłoszenie o zgłoszenie
błędzie anulowania

63
Anulowanie transakcji –
zgłoszenie
• Anulowanie transakcji ma na celu przerwanie
czynności wykonywanych w ramach podprocesu
transakcyjnego i doprowadzenie do stanu sprzed
wykonania tych czynności (kompensacja)

• Istnieją dwa sposoby anulowania transakcji:


– wewnątrz podprocesu transakcji istnieje ścieżka która prowadzi do
zdarzenia końcowego Anuluj
– protokół transakcyjny w pewnych sytuacjach sam zgłasza Anuluj

• Zdarzenie końcowe Anuluj może być użyte tylko


wewnątrz podprocesu transakcji

64
Anulowanie transakcji –
obsługa
• Anulowanie transakcji odbywa się według
schematu try-catch

• Zgłoszenie anulowania transakcji może być


odebrane tylko przez zdarzenie krawędziowe
anulowania, przypięte do podprocesu
transakcyjnego

• Po zgłoszeniu anulowania podproces


transakcyjny jest przerywany

• Zanim jednak proces podąży ścieżką


anulowania zgłaszane jest zdarzenie
kompensacji
65
Kompensacja – zgłaszanie

• Kompensacja oznacza przywrócenie czynności do stanu


sprzed jej wykonania

• Niektóre czynności takie jak odebranie wiadomości nie mogą


być cofnięte, inne takie jak np. zapis w bazie danych mogą być
kompensowane

• W podprocesie transakcji zgłoszenie konieczności kompensacji


jest robione automatycznie po zgłoszeniu zdarzenia
anulowania

• Istnieje również możliwość zgłoszenia konieczności


kompensacji poprzez zdarzenia kompensacji (pośrednie lub
końcowe)
66
Kompensacja – obsługa

• Zgłoszenie o konieczności kompensacji może być


odebrane przez zdarzenie krawędziowe kompensacji
lub przez podproces zdarzeniowy

• Obsługą kompensacji zajmuje się specjalizowana


czynność

• Protokół transakcyjny pamięta kolejność w jakiej


zostały wykonane czynności wewnątrz podprocesu
transakcyjnego

• Po odebraniu zgłoszenia o konieczności kompensacji


dla każdej ukończonej czynności w kolejności
odwrotnej do ich uruchomienia wykonuje procedurę
kompensacji 67
Zakończenie transakcji
Zakończenie prawidłowe
(OK):

Wszystkie czynności wewnątrz


podprocesu transakcji zakończyły
się poprawnie. Następnie pod
kontrolą protokołu transakcyjnego
wszyscy uczestnicy potwierdzili
zamiar zakończenia transakcji
(gdyby nie potwierdzili, to
wygenerowano by zdarzenie
anulowania transakcji)

Zakończenie nieprawidłowe Zakończenie ryzykowne


(Anulowanie transakcji): (Wystąpił nieodwracalny błąd):
Transakcja anulowana przez zdarzenie anulowania z Wystąpił poważny błąd uniemożliwiający
wewnątrz podprocesu transakcji lub przez protokół cofnięcie/ kompensację transakcji. Pod kontrolą
transakcyjny. Pod kontrolą protokołu transakcyjnego protokołu transakcyjnego błąd jest
zdarzenie anulowania jest rozsyłane wszystkim przekazywany pozostałym uczestnikom.
uczestnikom. Następnie przerywane są wszystkie Wszystkie czynności są automatycznie
czynności i podjęta zostaje próba cofnięcia i przerywane.
kompensacji zakończonych czynności

68
KONIEC

69

You might also like