Zdarzenia startowe, pośrednie, brzegowe i końcowe BPMN

Zdarzenia BPMN

Zdarzenie w BPMN oznacza coś, co się wydarza, a nie pracę wykonywaną przez uczestnika. Może utworzyć token, zatrzymać go do chwili nadejścia bodźca, zmienić ścieżkę albo zakończyć instancję. Cienka krawędź oznacza start, podwójna — zdarzenie pośrednie, a gruba — koniec.

Catching i throwing

Zdarzenie wychwytujące (catching) czeka: na wiadomość, termin lub sygnał. Zdarzenie rzucające (throwing) emituje rezultat, np. wysyła wiadomość albo zgłasza błąd. Timer jest zawsze wychwytujący — procesu nie da się „wysłać czasu”. Starty są zasadniczo catching, końce throwing. Znacznik wypełniony pomaga rozpoznać zdarzenie rzucające.

TypZnaczeniePrzykład
MessageKomunikacja między odrębnymi uczestnikamiOtrzymano zamówienie / wysłano decyzję
TimerData, czas trwania albo cyklPo 48 godzinach przypomnij
ErrorBłąd przerywający bieżący zakresIntegracja odrzuciła płatność
SignalRozgłoszenie do nieokreślonych odbiorcówOgłoszono awarię globalną
Terminate endNatychmiast usuwa wszystkie tokeny w zakresieZatrzymaj całą obsługę sprawy

Zdarzenie brzegowe: przerwać czy uruchomić obok?

Zdarzenie dołączone do zadania lub podprocesu obserwuje jego wykonanie. Brzeg ciągły oznacza wariant przerywający: po zdarzeniu aktywność zostaje anulowana, a token przechodzi ścieżką wyjątku. Brzeg przerywany oznacza wariant nieprzerywający: powstaje dodatkowy token, a pierwotna praca trwa dalej. Nieprzerywający timer może więc wysłać przypomnienie bez zamykania zadania.

Przypadek: oczekiwanie na dokumenty klienta

Po wysłaniu prośby proces czeka na jedno z dwóch zdarzeń za bramką event-based: wiadomość z dokumentami albo timer 14 dni. Jeśli dokumenty nadejdą pierwsze, timer jest anulowany i rozpoczyna się weryfikacja. Jeśli mija termin, sprawa kończy się jako niekompletna. Na zadaniu oczekiwania umieszczono dodatkowo nieprzerywający timer po 7 dniach, który wysyła przypomnienie, ale nie kończy oczekiwania.

Ślad tokenu

Token dociera do event-based gateway i subskrybuje wiadomość oraz termin. Po 7 dniach brzegowy timer tworzy pomocniczy token do zadania „Wyślij przypomnienie”. Główny token nadal czeka. Wiadomość w dniu 9 usuwa oczekiwanie na termin 14 dni i prowadzi do weryfikacji.

Message, signal czy zwykły przepływ?

Przepływ sekwencji działa wewnątrz jednego basenu. Message flow łączy różne baseny i reprezentuje konkretną komunikację. Signal ma charakter rozgłoszeniowy: nadawca nie adresuje jednego odbiorcy. Nie modeluj wymiany pomiędzy systemami jako strzałki sekwencji przecinającej granice uczestników.

Starty i końce wpływają na całą instancję

Brak znacznika na starcie oznacza, że przyczyna uruchomienia nie została wyspecyfikowana. Jest to dopuszczalne na modelu wysokiego poziomu, ale niewystarczające dla automatyzacji. Message start tworzy nową instancję po wiadomości, timer start według kalendarza, a conditional start po spełnieniu obserwowanego warunku. Nie myl message start z wiadomością korelowaną do już istniejącej sprawy — ta powinna zostać wychwycona wewnątrz procesu.

Zwykły none end kończy tylko token, który do niego dotarł. Inne równoległe tokeny mogą nadal pracować. Message end najpierw emituje wiadomość, error end zgłasza błąd do zakresu nadrzędnego, a terminate end natychmiast usuwa wszystkie tokeny w bieżącym procesie lub podprocesie. Jeśli jedna gałąź AND dochodzi do none end, nie oznacza to automatycznie końca drugiej gałęzi.

Timer musi mieć precyzyjną podstawę czasu

„Po trzech dniach” nie mówi, czy chodzi o 72 godziny, trzy dni kalendarzowe czy robocze, od którego momentu liczyć i jaka strefa czasu obowiązuje. Artefakt uzupełniający powinien zawierać typ timera, punkt startu, kalendarz, zachowanie w dzień wolny i możliwość zmiany terminu. Dla cyklu określ także warunek zakończenia, aby przypomnienia nie trwały po zamknięciu sprawy.

Scenariusz testowyOczekiwane zdarzenieOczekiwany skutek
Dokumenty w dniu 6Message catchWeryfikacja; brak przypomnienia
Brak dokumentów w dniu 7Nieprzerywający timerPrzypomnienie, oczekiwanie trwa
Dokumenty w dniu 9Message wygrywa z terminemWeryfikacja; timer 14 dni anulowany
Brak dokumentów w dniu 14Timer za event-based gatewayZamknięcie jako niekompletne

Korelacja wiadomości i duplikaty

Zdarzenie message musi wiedzieć, do której instancji należy komunikat. Numer sprawy, zamówienia lub inny klucz korelacji powinien być stabilny i przekazywany przez uczestników. Ustal zachowanie dla wiadomości spóźnionej, powtórzonej i niepasującej. Diagram może pokazać ścieżkę oczekiwania, lecz wymaganie integracyjne doprecyzowuje deduplikację, retencję i kolejność komunikatów.

W przykładzie dokumentów ponowne wysłanie tego samego pliku nie powinno uruchomić drugiej weryfikacji. Wiadomość po zamknięciu sprawy trafia do kolejki wyjaśnień albo otrzymuje jawne odrzucenie. Bez takiej reguły poprawny symbol message catch pozostawia niebezpieczną lukę wykonawczą.

Zdarzenie w podprocesie

Error end w podprocesie może zostać przechwycony przez zdarzenie brzegowe na tym podprocesie i skierować token do obsługi błędu. Escalation sygnalizuje sytuację wymagającą wyższego poziomu bez semantyki awarii technicznej; może być nieprzerywająca. Dobieraj typ do znaczenia biznesowego, nie do koloru alertu. Jeśli wyjątek ma anulować całą pracę wewnętrzną, użyj wariantu przerywającego świadomie.

Wydzielony event subprocess reaguje na zdarzenie w obrębie procesu, np. globalne anulowanie sprawy. Może przerwać główny przebieg albo działać obok niego. Jest użyteczny, gdy reakcja dotyczy wielu miejsc i nie chcesz dołączać tego samego zdarzenia do każdego zadania, ale jego zakres musi być widoczny dla odbiorcy.

Checklista zdarzenia

  • Czy symbol opisuje fakt lub oczekiwanie, a nie ukrytą pracę?
  • Czy wiadomo, co tworzy start i jaki rezultat oznacza koniec?
  • Czy timer ma jednoznaczną datę, czas trwania lub cykl oraz kalendarz biznesowy?
  • Czy zdarzenie brzegowe świadomie przerywa albo pozostawia aktywność?
  • Czy terminate end jest zamierzony i nie kasuje potrzebnej pracy równoległej?

Alternatywę „wiadomość albo czas” modeluje się z bramką event-based. Różnicę między oczekiwaniem i wykonywaniem pracy rozwija materiał zadania BPMN.

O AUTORZE

Maciej Pieniak

Maciej Pieniak

Autorem portalu jest Maciej Pieniak — analityk biznesowo-systemowy specjalizujący się w analizie procesów, wymaganiach, systemach IT, automatyzacji oraz praktycznym wykorzystaniu AI w pracy analitycznej.