Wyjście z pętli w BPMN

Ostatnio kilkakrotnie dzwonił do mnie „tajemniczy” numer prywatny. Domyślałem się, że to może być Bank lub inna instytucja. Kilkakrotnie próbowałem odebrać – albo mi się nie udało albo nie słyszałem. Zawsze pozostaje opcja „oddzwonię”, ale nie tym razem – na „Numer prywatny” nie da się oddzwonić. Jeden raz , udało się odebrać i usłyszałem tylko „Proszę czekać na zgłoszenie się operatora”. Pomyślałem – o mają automatyczne wybieranie numeru. Dobra, myślę, poczekam pół minuty, bo więcej nie byłem w stanie. Po pół minucie muzyczki, rozłączyłem się. I niestety brakowało mi jednego, informacji kto i dlaczego dzwoni. Po kilku dniach wreszcie się im udało, po odebraniu usłyszałem natychmiast miły głos operatora, który przedstawił się, wygłosił formułkę i przeszedł do rzeczy. Wysłuchałem go do końca. Następny raz już nie zadzwonili.
callcenter450
Powyższą sytuację można sobie wyobrazić jak pętlę per odbiorca kampanii. Zgodnie z definicja pętli (ang. loop) z matematyki umożliwia cykliczne wykonywanie ciągu czynności („pobranie rekordu, sprawdzenie statusu, wybranie numeru”) określoną liczbę razy, do momentu zajścia pewnych warunków („odbyto rozmowę” – status sprawdzany na bramce), dla każdego elementu kolekcji (działanie wykonywane dla każdego rekordu kampanii) lub w nieskończoność.

Kolejne czynności: sprawdź czy rozmowa się odbyła, wybierz numer, połącz z operatorem (gdy nie jest wolny, poinformuj o oczekiwaniu), a po rozmowie pomiń danego odbiorcę z kolejnego telefonu. Wyjściem z pętli jest zdarzenie „Odbyto rozmowę”. A zdarzenia: „Brak połączenia”, „Połączenie zerwane”, „Odbiorca niedostępny” powodują powtórzenie czynności dla danego odbiorcy.  Odczułem to na własnej skórze – a dzwoniący odczuł wszystkie powyższe zdarzenia z mojej strony. Powyższy diagram w BPMN obrazuje taką sytuację. Zobrazowana pętla, w sytuacji braku odebrania telefonu przez odbiorcę, jest nieskończona – należałoby dodać warunek o ilości prób lub maksymalny czas od rozpoczęcia kampanii do ostatniego telefonu.

Reklama

Asocjacje w BPMN

Komentarz do poprzedniego wpisu o obiektach danych w BPMN wskazał jedną kwestię o której nie napisałem przy okazji umieszczania obiektów na diagramie. Połączenie obiektu danych z krokiem procesu odbywa się za pomocą tzw. asocjacji (ang. Association).

processassoc450b

Zgodnie z uwagą wygląd asocjacji wskazuje na rodzaj powiązania:

  • asocjacja bez strzałek oznacza dostęp do danych – na powyższym diagramie między krokiem “Zarejestruj zlecenie” i elementem “Baza zleceń” (kolekcja obiektów, ang. Data Store).
  • asocjacja ze strzałkami oznacza dane wejściowe lub wyjściowe – na powyższym diagramie dla obiektów wejściowych strzałka na asocjacji jest w kierunku kroku procesu, dla wyjściowych w stronę obiektu danych.

Dodatkowo na diagramie  (w BPMN) występuje obiekt danych (obiekt Zlecenie), który najpierw jest wyjściem z kroku (zapisane zostały dane). Ma oznaczony status. Dalsza praca odbywa się na takim obiekcie, będącym wejściem do kolejnego kroku (krok pobiera dane). Korzystając z aplikacji do przygotowania diagramu procesu, trzeba uważnie stosować typy powiązań.

Asocjacje są także wykorzystywane do łączenia innych obiektów – np. tekstu (ang. Text annotation) – jak w przypadku powyższego diagramu element zawierający dodatkową informację o kroku.

Obiekty danych w procesie BPMN

Kolejnym etapem realizacji zlecenia w serwisie samochodowym, była kwestia płatności I otrzymanie potwierdzenia. Otrzymałem wydruk zlecenia z kwotą, statusem oraz wykonanymi czynnościami. Przyglądając się zleceniu zauważyłem, że składa sie ono z informacji uzyskanych od Klienta, danych wprowadzonych przez operatora i danych z rejestru części dostępnych w serwisie. Elementy to obiekty danych, które razem tworzą zlecenie. Operacje na tych danych pokazuje poniższy diagram BPMN.

processobjects450

Obiekty danych są z jednym z elementów procesów w BPMN. Mogą informować o danych służących do realizacji zadań przez użytkownika w systemie, obiektach wykorzystywanych przez samą aplikację oraz efektach działania aplikacji. Na diagramie zaprezentowano przykłady. Obiekt (ang. Data Object), na którym działa proces, ma wskazane różne statusy – Zarejestrowany, Wydrukowany. W tym celu wykorzystuje się element BPMN oznaczony poprzez prostokąt z “zagiętym rogiem”. Obiekty wejściowe (ang. Data Input) są oznaczane pustą strzałką, a obiekty wyjściowe (ang. Data Output) – pełną strzałką.

W tym wypadku obiekt Zlecenie można potraktować jako złożenie danych kluczowych i danych zawartości. Proces jest sterowany przez operatora.

Najpierw sprawdź, potem zrealizuj

Ostatnio odwiedziłem jedną z sieci serwisów samochodowych. Zadanie było proste: zamowienie nowych felg, ich zamontowanie razem z oponami letnimi i ich wyważenie. Składam zamówienie I słyszę, że potrwa to około 1,5 godziny, płatność przy odbiorze w takiej i takiej wysokości. Na koniec prośba o zostawienie telefonu kontaktowego – logiczne, zamierzali poinformować, że samochód jest gotowy do odbioru. Zostawiam samochód i idę na zakupy do okolicznego centrum handlowego. Po około 1,5 godziny, gdy wracam do serwisu, telefon z serwisu: “Jednak nie zrealizujemy zlecenia. Brakuje nam jednej rzeczy, jest w systemie, ale nie ma na stanie”.

W myślach pojawiło się tylko “Ups. Chyba coś jest nie tak z ich procesem obsługi.”. Takie stwierdzenie ani dobrze nie brzmi w oczach klienta – mamy, ale nie mamy. I potem to wahanie co mogą zaproponować. Umawiamy się na kolejną wizytę i tylko taki niepokój, że może jeszcze coś wyjdzie. Na pytanie “czy umówionego dnia załatwimy wszystko?”. Nastąpiła chwila ciszy i po dłuższym wahaniu: “Tak”.

Realizowany proces (w BPMN) można zaprezentować następująco:

serwisauto450

Na powyższym diagramie został oznaczony linią przerywaną krok, którego w powyższym przykładzie raczej zabrakło. Potrzebne było określenie, czy są dostępne wszystkie elementy potrzebne do realizacji zlecenia. Elementy zlecenia można potraktować jako wejście procesu. Gdy nie ma wszystkich wymanych elementów, proces nie będzie efektywny. Dla tego serwisu jest to jeden z kluczowych procesów i opisany przypadek może jedynie spowodować, że klient więcej z usług tego serwisu nie skorzysta. Mało tego będzie się zastanawiał, czy w związku z tym problemami nie powinien otrzymać jakiejś rekompensaty (było czuć podczas rozmowy telefonicznej, że nie czują sie komfortowo z tą sytuacją).

Co ciekawe w innym oddziale sieci, wykonali ten krok i na starcie powiedzieli czego im brakuje do realizacji potencjalnego zlecenia. Proces był sprawny. Z punktu widzenia odbiorcy był także efektywny – wskazali jak możemy zrealizować zlecenie i gdzie. Chcąc osiągnąć efektywny i sprawny proces, konieczny jest wskazany krok w każdym oddziale.