
Notacja BPMN zdarzenia pośrednie
W artykule przedstawiam zdarzenia pośrednie używane w notacji BPMN do modelowania procesów biznesowych.
Oprócz zdarzeń pośrednich, model procesu biznesowego może obejmować jeszcze dwa inne rodzaje zdarzeń:
- zdarzenia początkowe – przedstawiam je w artykule BPMN zdarzenia początkowe
- zdarzenia końcowe
Specyfikacja BPMN nie narzuca obowiązku stosowania zdarzeń początkowych i końcowych. Ja używam ich zawsze, gdyż poprawiają czytelność modelu.
Rola zdarzeń pośrednich w modelach procesów
Zdarzenie pośrednie występuje pomiędzy początkiem a końcem procesu i często wprowadza ścieżki alternatywne przebiegu procesu.
Może być ono używane do zaznaczenia miejsc procesu, w których:
- oczekujemy na komunikat lub wysyłamy komunikat w trakcie wykonywania procesu
- spodziewamy się opóźnień
- występuje zakłócenie normalnego przebiegu procesu biznesowego i należy użyć obsługi wyjątków
- chcemy pokazać dodatkową pracę do wykonania w trakcie procesu
Miejsce zdarzeń pośrednich w procesie
Zdarzenia pośrednie mogą być:
- umieszczone w głównym przebiegu procesu. Wówczas mogą być wykorzystane do odbioru (ang. catch) lub do wysyłki (ang. throw) wyzwalacza
- dołączone do granicy (krawędzi) zadania. Wówczas mogą być wykorzystane tylko do odbioru wyzwalacza
Wyzwalacze zdarzeń pośrednich
Zdarzenie pośrednie może nie mieć żadnego wyzwalacza. Reprezentuje je podwójna cienka linia ciągła.
Zdarzenia bez wyzwalacza nie możemy dołączać do krawędzi zadania.
Specyfikacja BPMN zawiera następujące wyzwalacze zdarzeń pośrednich:
- wiadomość (ang. message)
- czasomierz (ang. timer)
- eskalacja (ang. escalation)
- błąd (ang. error)
- anulowanie (ang. cancel)
- kompensacja (ang. compensation)
- warunkowe (ang. conditional)
- łącze (ang. link)
- sygnał (ang. signal)
- złożone(ang. multiple) – w MS Visio zdarzenie oznaczone jest jako Wielokrotne
- złożone równoległe (ang. parallel multiple) – w MS Visio zdarzenie oznaczone jest jako Wiele równoległych
Każdy z w/w wyzwalaczy posiada swoją ikoną, za pomocą której jest oznaczany. Symbol wyzwalacza rysujemy w środku okręgu zdarzenia pośredniego.
W poniższej tabeli znajdziesz zestawienie wszystkich zdarzeń pośrednich wraz z ich wyzwalaczami.
Zdarzenia pośrednie w głównym przepływie procesu
Kiedy token dotrze do zdarzenia pośredniego, które jest umieszczone w głównym przebiegu procesu, wydarzy się jedna z dwóch sytuacji:
- dla zdarzenia z wyzwalaczem w funkcji wysyłającej – wyzwalacz aktywuje zdarzenie i np. wiadomość zostanie wysłana. Token „popłynie” dalej wzdłuż przepływu sekwencji wychodzącego ze zdarzenia.
- dla zdarzenia z wyzwalaczem w funkcji odbierającej – token czeka w miejscu zdarzenia dotąd, aż wyzwalacz zostanie uruchomiony np. przyjdzie wiadomość. Token „popłynie” dalej wzdłuż przepływu sekwencji wychodzącego ze zdarzenia.
Jeśli zdarzenie jest używane w głównym przepływie musi mieć dwa przepływy sekwencji: przychodzący i wychodzący. Wyjątkiem od tej reguły jest Łącze (Link), które nie może być jednocześnie celem i źródłem przepływu sekwencji tzn. nie może mieć jednocześnie przychodzącego i wychodzącego przepływu.
Wiadomość w głównym przebiegu procesu
Wyzwalacz Wiadomość w głównym przebiegu procesu używany jest do wysłania lub odbioru wiadomości.
W poniższym przykładzie mamy proces zawierający:
- basen reprezentujący sklep
- dwa tory pływackie reprezentujące Dział Zamówień i Magazyn Sklepu
- proces obsługi zamówienia z wykorzystaniem zdarzeń pośrednich wywoływanych wyzwalaczem komunikatu. Czarną kopertą oznaczamy przekazanie komunikatu z Działu Zamówień do Magazynu. Białą kopertą oznaczamy odbiór komunikatu.
W procesie korzystamy z obiektów danych. Obiekt danych służy do naniesienia na model dodatkowych informacji. W przykładowym rysunku zaznaczamy, że faktura ma być w wersji papierowej.
Czasomierz w głównym przebiegu procesu
Czasomierz w głównym przebiegu procesu działa jak mechanizm opóźnienia. Mechanizm ten o określonym czasie, w konkretnej dacie lub w konkretnym cyklu wyzwala zdarzenie np. o godz. 9:00 automatycznie zostaną wysłane raporty, w każdy poniedziałek o 11:00 wysłane zostaną zaproszenia na spotkanie.
Czasomierz występuje tylko w funkcji odbierającej i oznaczamy go następująco:
W przykładzie za pomocą Czasomierza oznaczamy sprawdzanie co dwa dni, czy dostępna jest aktualizacja oprogramowania. Jeśli aktualizacja jest dostępna, robimy aktualizację.
Inny przykład procesu z wyzwalaczem Czasomierz.
W poniższym procesie wysyłamy do klienta ofertę cenową i na bramce wykluczającej sterowanej zdarzeniami czekamy na odpowiedź. Jeśli nie otrzymamy odpowiedzi, po upływie 48 godzin dzwonimy do klienta.
Eskalacja w głównym przebiegu procesu
Eskalacja w głównym przebiegu procesu występuje w funkcji wysyłającej. Zdarzenia eskalacji są najczęściej używane do przepływu komunikacji z podprocesu do procesu nadrzędnego. Oznaczamy je następująco:
W przykładzie poniżej mamy proces z podprocesem rozwiniętym. W podprocesie eskalacja pojawia się po wprowadzeniu w bankomacie wysokiej kwoty do wypłaty.
Zdarzenie z wyzwalaczem Eskalacja umieszczone w granicy podprocesu przechwytuje zdarzenie eskalacji.
Zdarzenie eskalacji umieszczone w krawędzi podprocesu nie przerywa procesu. W trakcie wypłaty gotówki z bankomatu pojawia się tylko dodatkowe zadanie kontaktu telefonicznego ze strony pracownika banku.
Kompensacja w głównym przebiegu procesu
Kompensacja jest używana w transakcjach. Kompensacja wywołuje zadanie, które powoduje cofnięcie skutków innego zadania. W głównym przepływie procesu używana jest w funkcji wysyłającej. Kompensację oznaczamy następująco:
Poniższy rysunek zawiera proces organizacji spotkania, na które rezerwujemy i opłacamy salę oraz catering. Bramka równoległa otwierająca oznacza, że wszystkie czynności muszą zostać ukończone, aby żeton popłynął dalej. Posłużenie się zamykającą bramką równoległą jest opcjonalne. Moglibyśmy przejść bezpośrednio z zadań rezerwacji do bramki niewykluczającej.
Bramka niewykluczająca sterowana danymi oznacza, że żeton popłynie tylko jedną ścieżką: do wysłania potwierdzenia rezerwacji lub do anulowania rezerwacji. Więcej informacji na temat bramek w procesach BPMN znajdziesz w artykule BPMN bramki logiczne
Jeśli rezerwacja nie zostanie potwierdzona anulujemy rezerwację sali i cateringu oraz dokonujemy zwrotu opłat (kompensujemy dwie czynności Rezerwacja i opłacenie sali oraz Rezerwacja i opłacenie cateringu).
Kompensacja nie może mieć wychodzącego przepływu sekwencji.
Ze zdarzenia kompensacji do zadania kompensującego prowadzi linia kropkowana. Na linii możemy umieścić strzałkę z oznaczeniem kierunku przepływu.
Warunek w głównym przebiegu procesu
Zdarzenie warunkowe jest wyzwalane w momencie, gdy warunek stanie się prawdziwy np. jeśli temperatura w mieszkaniu osiągnie 25 stopni powinna włączyć się klimatyzacja.
Warunek w głównym przebiegu procesu występuje w funkcji odbierającej wyzwalacz.
W przykładzie mamy proces, w którym monitorujemy liczbę osób w kolejce do kasy. Jeśli liczba osób przekroczy 5 wzywany jest dodatkowy kasjer.
Link w głównym przebiegu procesu
Łącze (link) to mechanizm łączący dwie sekcje procesu. Łącze używane jest w parach w roli wysyłającej i odbierającej.
Zdarzenia wyzwalane za pomocą Łącza używane są tylko w głównym przepływie procesu – nie możemy ich umieszczać w krawędzi wykonywanej czynności.
Możemy używać ich tylko na pojedynczym poziomie procesu – nie mogą one łączyć procesu nadrzędnego z podprocesem.
Link – łączenie stron
Linku możemy używać jako łączników procesu umieszczonego na więcej niż jednej stronie.
W poniższym przykładzie proces biznesowy drukujemy na dwóch stronach. W aplikacji MS Visio proces drukowany na dwóch stronach rysujemy w ramach jednej strony.
Strona 1, na której z czynności Zakup biletów przepływ sekwencji prowadzi do zdarzenia pośredniego z wyzwalaczem Łącze w funkcji wysyłającej.
Strona 2, na której przepływ sekwencji prowadzi od zdarzenia pośredniego z wyzwalaczem Łącze w funkcji odbierającej do czynności Wprowadzenie delegacji do kalendarza.
Link – łączenie czynności
Zdarzeń pośrednich z wyzwalaczem Łącze możemy używać w ramach procesu, aby przejść od jednej czynności do drugiej bez konieczności rysowania długich linii przepływu sekwencji. Możemy użyć wielu zdarzeń pośrednich z wyzwalaczem link w roli wysyłającej, ale tylko jednego zdarzenia z wyzwalaczem link w roli odbierającej.
W poniższym przykładzie zamiast dwóch strzałek przepływu sekwencji używam dwóch linków, które prowadzą do czynności Zamknięcie zamówienia.
Link – pętla w procesie
Linku możemy używać do oznaczenia w procesie pętli.
W poniższym przykładzie w procesie konfigurujemy aplikację i następnie ją testujemy. Jeśli test nie zostanie zaakceptowany, aplikacja konfigurowana jest ponownie. Ponowna konfiguracja aplikacji odbywa się w pętli dotąd aż test zostanie zaakceptowany.
Sygnał w głównym przebiegu procesu
Sygnał służy do ogólnej komunikacji w obrębie procesu, pomiędzy poziomami procesów oraz między basenami i diagramami procesów. Oznaczamy go następująco:
Sygnał w BPMN jest podobny do rozbłysku sygnałowego, który wystrzelił w niebo – każdy może go zobaczyć i zareagować na niego.
Sygnał posiada źródło ale nie ma konkretnego celu, nie jest kierowany do konkretnych osób. W głównym przebiegu procesu sygnał może występować w roli odbierającej i wysyłającej.
W poniższym przykładzie Centrum Medyczne publikuje na stronie internetowej informację (komunikat) o bezpłatnych badaniach.
Jeden basen reprezentuje Centrum Medyczne a drugi Osoby odwiedzające stronę Centrum Medycznego.
Kreskowaną linią ze strzałką oznaczamy przepływ komunikatu pomiędzy basenami. Prowadzi on od czynności Zgłoszenie się na badania do czynności Uruchomienie rejestracji zgłoszeń.
Osoby odwiedzające stronę www mogą zareagować na sygnał, ale nie muszą.
Zdarzenie złożone w głównym przebiegu procesu
Zdarzenie złożone może być wywołane na kilka różnych sposobów. Może być ono wywołane przez wystąpienie jednego z wyzwalaczy lub przez wystąpienie wszystkich z nich. Oznaczamy je następująco:
W poniższym przykładzie do firmy ubezpieczeniowej wpływa wniosek o wystawienie polisy ubezpieczeniowej. W Dziale Obsługi Klienta wniosek zostaje przyjęty. Po przyjęciu wniosku może nastąpić jedno z poniższych zdarzeń lub mogą wystąpić obydwa z nich:
- zmiana przez klienta sumy ubezpieczenia lub/i
- zmiana przez klienta zakresu polisy
Zdarzenie złożone równoległe w głównym przebiegu procesu
Zdarzenie złożone równoległe wskazuje, że istnieje więcej niż jeden wyzwalacz zdarzenia. Oznaczamy je następująco:
Do uruchomienia zdarzenia konieczne jest wystąpienie wszystkich wyzwalaczy.
W poniższym przykładzie mamy proces wystawiania polisy ubezpieczeniowej. Po przyjęciu wniosku o zakup polisy może wystąpić zdarzenie wielokrotne, które zostanie wyzwolone, jeśli wpłynie dodatkowa dokumentacja medyczna i oświadczenia klienta. Obydwa wyzwalacze (dokumentacja i oświadczenia) muszą zaistnieć.
Zdarzenia pośrednie krawędziowe
Zdarzenia krawędziowe to zdarzenia umieszczone w krawędzi zadania. W BPMN mamy do dyspozycji dwa rodzaje zdarzeń krawędziowych:
- zdarzenia zmieniające normalny przepływ procesu biznesowego – czynność wykonywana zostaje przerwana
- zdarzenia nie zmieniające normalnego przepływu procesu – często w tej sytuacji dochodzą dodatkowe czynności do wykonania np. w trakcie procesowania przez bank wniosku kredytowego klient chce podwyższyć sumę kredytu i pracownik banku musi uzyskać dodatkową akceptację.
Jeśli zdarzenie jest dołączone do granicy czynności:
- nie może być ono celem dla przepływu sekwencji tzn. nie może mieć przychodzących przepływów sekwencji
- musi być źródłem przepływu sekwencji tzn. musi wychodzić z niego przepływ sekwencji
Wiadomość w krawędzi zadania
Zdarzenia z wyzwalaczem Wiadomość umieszczone w krawędzi zadania mogą przerywać bieg procesu lub go nie przerywać.
Wiadomość przychodzi od uczestnika i wywołuje zdarzenie. Jeśli komunikat dołączony jest do granicy działania, po jego wyzwoleniu normalny przepływ zostanie zmieniony w przepływ wyjątkowy (ang. exception flow).
W poniższym przykładzie Wiadomość dołączona jest do krawędzi czynności i przerywa ona główny bieg procesu. W trakcie rozpatrywania wniosku kredytowego wpływa pismo klienta z rezygnacją z pożyczki. Po jego nadejściu proces rozpatrywania wniosku kredytowego zostaje przerwany.
W przykładzie poniżej Wiadomość zmienia przebieg procesu ale go nie przerywa. W trakcie procesowania wniosku o założenie lokaty wpływa od klienta informacja o zmianie strategii inwestycyjnej. Wydarzenie nie przerywa procesu zakładania lokaty.
Czasomierz w krawędzi zadania
Czasomierz umieszczony w krawędzi czynności, podobnie jak Komunikat, może przerywać proces lub go nie przerywać. Oznaczamy go następująco:
W poniższym przykładzie otrzymujemy zamówienie na raporty. W trakcie procesowania zamówienia mogą wydarzyć się następujące sytuacje:
- przekroczony zostanie czas pięciu godzin przewidziany na aktualizację bazy. Wówczas proces nie zostaje przerwany. Dochodzi tylko dodatkowe zadanie Poprawa procesów aktualizacji bazy i proces aktualizacji raportów jest kontynuowany.
- przekroczony zostanie termin na dostarczenie raportów. Wówczas proces aktualizacji raportów jest przerywany i aktualizacja przekładana jest na kolejny tydzień.
Błąd w krawędzi zadania
Błąd występuje tylko w krawędzi czynności, nie występuje w głównym przepływie procesu. Oznaczamy go następująco:
W poniższym przykładzie mamy proces wypłaty gotówki z bankomatu. W trakcie wprowadzania PIN pojawia się błąd działania bankomatu. Wypłata gotówki zostaje przerwana i następuje zwrot karty.
Błąd przerywa proces.
Eskalacja w krawędzi zadania
Ten typ zdarzenia służy do obsługi eskalacji. Jeśli jest dołączony do granicy działania, przechwytuje eskalację. W przeciwieństwie do błędu, domyślnie zakłada się, że eskalacja nie przerywa czynności, do której jest dołączona. Mamy jednak możliwość użycia kształtu z przerywaną linią, który sygnalizuje, że eskalacja przerywa zadanie.
Oznaczamy ją następująco:
W poniższym przykładzie mamy proces, w którym klient przychodzi do banku, aby dokonać wypłaty. W trakcie sprawdzania dokumentu klienta okazuje się, że dokument jest podejrzany. Zadanie zostaje przerwane zdarzeniem eskalacji – następuje odmowa wypłaty i zgłoszenie sprawy do zbadania.
W tym samym procesie w trakcie czynności „Prośba o podanie kwoty wypłaty” okazuje się, że kwota wypłaty przekracza stan rachunku na posiadanym przez klienta wyciągu. Pojawia się eskalacja, która skutkuje dodatkowym zadaniem weryfikacji rachunku. Nie przerywa ona procesu.
Anulowanie w krawędzi zadania
Anulowanie to rodzaj zdarzenia pośredniego, które jest używane w podprocesie transakcyjnym. Oznaczamy je następująco:
Ten typ zdarzenia musi być dołączony do granicy podprocesu i zostać uruchomiony, jeśli w ramach podprocesu transakcyjnego token dotrze do zdarzenia końcowego Anulowanie.
Podproces transakcyjny oznaczamy prostokątem z cienką podwójną linią.
W poniższym przykładzie mamy podproces transakcyjny, w ramach którego:
- otrzymujemy od klienta zamówienie
- rezerwujemy wycieczki i hotel w ramach jednej transakcji – jeśli wszystkie czynności w ramach transakcji zostaną wykonane poprawnie, token przechodzi do zadania „Potwierdzenie rezerwacji i pobranie opłaty”.
W trakcie realizacji zadań Rezerwacja hotelu i Rezerwacja wycieczek może wystąpić Błąd. W przypadku błędu wysyłany zostaje komunikat do administratora i proces zostaje anulowany.
Zdarzenia końcowego Anulowanie możemy używać jedynie w ramach podprocesu transakcyjnego.
Kompensacja w krawędzi zadania
Kompensacja dołączona do granicy zadania służy do przechwycenia zdarzenia kompensacyjnego. Oznaczamy je następująco:
Zdarzenia kompensacyjne są wykorzystywane w kontekście uruchomienia lub obsługi odszkodowania (kompensacji).
W poniższym przykładzie mamy proces rezerwacji pokoju w hotelu. Jeśli wystąpi wydarzenie Rezygnacja z rezerwacji, uruchomiona zostanie kompensacja, w wyniku której odwrócone zostaną zdania rezerwacji i obciążenia karty kredytowej.
Warunek w krawędzi zadania
Zdarzenie Warunek jest aktywowane, gdy określony warunek stanie się prawdziwy np. gdy zegar wskaże godzinę 17:00 wszyscy pracownicy opuszczą biuro. Oznaczamy je następująco:
W poniższym przykładzie mamy proces organizacji wycieczki. W trakcie zbierania się uczestników mogą zaistnieć dwa zdarzenia warunkowe:
- jeśli temperatura spadnie poniżej 10 stopni uczestnicy zostaną wyposażeni w dodatkowe ubrania i wyruszą na wycieczkę – proces nie zostaje przerwany
- jeśli zmieni się pogoda i będzie burza, wycieczka zostanie odwołana – proces zostaje przerwany
Sygnał w krawędzi zadania
Sygnał służy do ogólnej komunikacji w obrębie procesu, między poziomami procesów, między basenami i diagramami. Oznaczamy go następująco:
Sygnał BPMN jest podobny do rozbłysku sygnałowego, który wystrzelił w niebo – każdy może go zauważyć i zareagować na niego. Sygnał ma źródło ale nie ma konkretnego adresata.
W poniższym przykładzie mamy proces, w którym sklep Mars ogłasza dla swoich klientów promocję. Jeśli klient zareaguje na promocję proces dokonywania przez klienta zakupów zostaje przerwany, gdyż klient udaje się do stoiska promocyjnego.
Za pomocą strzałki przerywanej oznaczamy na modelu przepływ komunikatów pomiędzy basenami.
W poniższym przykładzie mamy proces, w którym Biuro Informacji w górach ogłasza sygnał dla turystów w przypadku zmiany pogody.
Sygnał nie przerywa wyprawy na wycieczkę. Turyści, którzy odpowiedzą na sygnał wypożyczają dodatkowy sprzęt.
Zdarzenie Złożone w krawędzi zadania
Zdarzenie złożone oznacza, że do zdarzenia przypisanych jest wiele wyzwalaczy. Jeśli jest ono dołączone do granicy czynności może tylko przechwytywać wyzwalacz. Oznaczamy je następująco:
Do aktywowania zdarzenia wystarczy wystąpienie jednego z wyzwalaczy – może wystąpić jeden wyzwalacz lub wszystkie.
W poniższym przykładzie zdarzenie wywołane zostanie, jeśli klient zmieni:
- sumę ubezpieczenia lub
- zakres ubezpieczenia lub
- sumę i zakres ubezpieczenia.
Jeśli wystąpi zdarzenie, proces nie zostanie przerwany. Dochodzi jedynie dodatkowe zadanie Wprowadzenie zmian.
W poniższym przykładzie wystąpienie zdarzenia pośredniego przerywa proces. Jeśli klient zmieni polisę na lokatę lub fundusz inwestycyjny, proces wystawiania polisy zostaje anulowany i dokumenty zostają przekazane do Działu Inwestycji. Klient może podzielić wpłatę i zamienić polisę na lokatę oraz na fundusz inwestycyjny.
Zdarzenie złożone równoległe w krawędzi zadania
Zdarzenie równoległe złożone oznacza, że do zdarzenia przypisanych jest wiele wyzwalaczy. Wszystkie przypisane wyzwalacze są wymagane, aby zdarzenie zostało wyzwolone.
Oznaczamy je następująco:
W poniższym przykładzie w trakcie czynności Analiza dokumentów może wystąpić zdarzenie, które przerywa proces lub takie, które procesu nie przerywa.
Jeśli wpłynie wniosek o zmianę polisy na lokatę i wpłata, proces wystawiania polisy zostanie przerwany i dokumenty zostaną przekazane do Działu Inwestycji.
Jeśli wpłynie dodatkowa dokumentacja medyczna i oświadczenia klienta przed wystawieniem polisy, pojawia się dodatkowe zadanie Ocena nowej dokumentacji. Proces nie zostaje przerwany.
Cel modelowania procesów
Modelowanie procesów biznesowych BPMN staje się coraz popularniejsze w firmach. Dobrze narysowane procesy biznesowe umożliwiają np.:
- łatwiejsze wdrożenie nowych pracowników
- prezentację przepływu pracy i wychwycenie miejsc, w których nie działamy efektywnie
- uporządkowanie i lepsze zrozumienie wykonywanych w firmie zadań
- lepszą komunikację pomiędzy działami technicznymi i operacyjnymi
Jak zwykle prosimy o uwagi i komentarze. Chętnie uzupełnimy lub zmienimy artykuł.

Dzień dobry.
W jaki sposób w notacji opisać sytuację typu:
„Po wysłaniu oferty cenowej do klienta i braku jego odpowiedzi w ciągu 48h zadzwoń i zapytaj czy jest zainteresowany zakupem”.
Czy do tego można użyć zdarzenie pośrednie z wyzwalaczem w postaci czasu?
Dzień dobry,
dziękujemy za komentarz.
Do oznaczenia potrzeby kontaktu z klientem po upływie 48 godzin można użyć zdarzenia pośredniego z wyzwalaczem w postaci czasu (czasomierz).
W artykule, w części dotyczącej wyzwalacza Czasomierz, umieściliśmy dodatkowy przykład, który obrazuje przedstawioną przez Pana sytuację.
Super. Dziękuję.