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 Rozwidlenie na dwa równoległe przepływy Oczekiwanie aż obydwa zadania zostaną ukończone Zadanie wykona się jeden raz po ukończeniu wszystkich poprzednich zadań 10
Łączenie przepływów równoległych bramka OR Rozwidlenie na dwa równoległe przepływy Oczekiwanie aż wszystkie rozpoczęte zadania zostaną ukończone (w tym 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 dwa równoległe przepływy Po zakończeniu każdego z zadań wyszukiwania 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 Rozwidlenie na dwa równoległe przepływy Bramka będzie oczekiwać na zakończenie jednego z zadań wyszukiwania. Po zakończeniu jednego z tych zadań natychmiast uruchomione zostanie zadanie weryfikacji. Zakończenie drugiego z zadań wyszukiwania pozostanie bez wpływu na zachowanie procesu. Zadanie wykona się jeden raz po ukończeniu pierwszego z zadań wyszukiwania 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 wieloinstancyjne 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 wieloinstancyjnej 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 wieloinstancyjne 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ą zebrane zamówienia ze wszystkich hurtowni Niezależnie dla każdego kierowcy zaopatrzeniowego 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 Dwa podprocesy rozpoczynają działanie (równolegle) Kiedy koncepcja książki jest gotowa, wysyłany jest sygnał 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 Zdarzenie końcowe błąd służy do zgłoszenia błędu Proces znajdzie się na ścieżce normalnej tylko wtedy, gdy w trakcie wykonywania podprocesu nie zostanie zgłoszony żaden błąd Proces znajdzie się na ścieżce wyjątku tylko wtedy, gdy w trakcie wykonywania podprocesu zostanie zgłoszony błąd 39 Każdy błąd zgłoszony w okresie aktywności podprocesu Weryfikacji zdolności kredytowej jest przechwytywany przez zdarzenie krawędziowe
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 eskalacji służy do zgłoszenia potrzeby eskalacji Proces znajdzie się na ścieżce normalnej zawsze po skończeniu wykonywania podprocesu Przyjęcie zamówienia Ścieżka prowadząca do aktualizacji danych zostanie uaktywniona jako równoległa do ścieżki normalnej wówczas, gdy odebrane zostanie zgłoszenie eskalacji Każde zgłoszenie eskalacji w okresie aktywności podprocesu Przyjęcie zamówienia jest przechwytywane przez zdarzenie krawędziowe 42
Eskalacja vs. Błąd Eskalacja Eskalacja służy do wykonania pewnych dodatkowych działań, najczęściej bez naruszania bieżącej ścieżki procesu Błąd Błędy służą do poinformowania, że proces nie zachowuje się zgodnie z oczekiwaniami Zgłoszenie eskalacji nie kończy bieżącego procesu Istnieją dwa zdarzenia zgłaszające potrzebę eskalacji: zdarzenia pośrednie i końcowe Procedura obsługi eskalacji może być wykonywana równolegle do czynności w której nastąpiło zgłoszenie Zgłoszenie błędu kończy bieżący proces Istnieje jedno zdarzenie zgłaszające błąd: zdarzenie końcowe Procedura obsługi błędu przerywa wykonywanie czynności, w której nastąpiło zgłoszenie błędu 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 w formie zwiniętej Podproces osadzony 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) Po rozpoczęciu podprocesu Poszukiwanie kandydata do pracy uruchamiane jest poszukiwanie kandydata wewnątrz firmy oraz mierzony jest czas 54 Jeśli po upływie 7 dni poszukiwanie wewnętrzne nie zostało zakończone, wówczas jest przerywane i rozpoczyna się poszukiwania przez agencję (podproces zdarzeniowy )
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 przetwarzania zamówienie podproces zdarzeniowy rozpoczyna nasłuch. Interesuje go zdarzenie Aktualizuj zamówienie, które może przysłać np. klient 55 W chwili gdy zdarzenie Aktualizuj zamówienie nadejdzie rozpoczyna się podproces zdarzeniowy aktualizacji zamówienia. Podproces Przetwarzaj zamówienie nadal jest jednak wykonywany
Podproces Zdarzeniowy vs. Podproces osadzony Podproces zdarzeniowy Podproces osadzony Jest wykonywany poza normalnym przepływem Jest wykonywany w ramach normalnego przepływu Rozpoczyna się zdarzeniem początkowym konkretnego typu Rozpoczyna się zdarzeniem początkowym bez ustalonego typu Nie może posiadać wejściowych i wyjściowych przepływów sekwencji Posiada wejściowe i wyjściowe przepływy sekwencji 56
Podproces zdarzeniowy vs. Zdarzenia krawędziowe Podproces zdarzeniowy Może być zdefiniowany tylko wewnątrz podprocesu Jest traktowany jako wbudowana (inline) procedura obsługi zdarzenia Zdarzenia krawędziowe Może być zdefiniowane dla podprocesu i zadań Jest traktowany jako zewnętrzna procedura obsługi zdarzenia Ma dostęp do danych podprocesu wewnątrz którego jest zdefiniowany Po zakończenie działania proces kontynuuje ścieżkę normalną Wszelkie dane wymagane przez obsługę zdarzenia muszą być przekazywane Po zakończeniu działania proces może kontynuować ścieżkę normalną albo ścieżkę wyjątku albo też obydwie te ścieżki 57
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 Odbiera zgłoszenie o kompensacji Zgłoszenie anulowania transakcji Podproces transakcji Odbiera zgłoszenie o błędzie Czynność wykonywana podczas obsługi kompensacji Odbiera zgłoszenie o błędzie Odbiera zgłoszenie 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 (Anulowanie transakcji): Transakcja anulowana przez zdarzenie anulowania z wewnątrz podprocesu transakcji lub przez protokół transakcyjny. Pod kontrolą protokołu transakcyjnego zdarzenie anulowania jest rozsyłane wszystkim uczestnikom. Następnie przerywane są wszystkie czynności i podjęta zostaje próba cofnięcia i kompensacji zakończonych czynności Zakończenie ryzykowne (Wystąpił nieodwracalny błąd): Wystąpił poważny błąd uniemożliwiający cofnięcie/ kompensację transakcji. Pod kontrolą protokołu transakcyjnego błąd jest przekazywany pozostałym uczestnikom. Wszystkie czynności są automatycznie przerywane. 68
KONIEC 69