Archive for the ‘bpmn’ Category

h1

Proces nieskończony

Sierpień 11, 2018

Jadąc ostatnio autobusem komunikacji miejskiej, chciałem przy wejściu „odbić” kartę. Karta ta musi zostać przyłożona do czytnika w momencie, gdy nie ma się wykupionego biletu długookresowego a korzysta się z mechanizmu tzw. portmonetki. Zamiast poprawnie naliczonej opłaty zobaczyłem pomarańczowy ekran z błędem. Na szczęście drugi czytnik działał poprawnie.

Po zajęciu miejsca, akurat z dobrym widokiem na czytnik, zauważyłem, że na ekranie jest odliczany czas. Potem następował restart aplikacji, wyświetlenie „poprawnego” ekranu czytnika, informację o błędzie komunikacji i ponownie pomarańczowy ekran. A potem po minucie, znów restart i wszystko zaczynało się od początku. I tak w nieskończoność (tak mi się zdawało). Prezentuje to poniższy diagram w BPMN.

petla_1_kadr

Na powyższym diagramie zaprezentowano typ obiektu BPMN określanego jako podproces (ang. subprocess, co jest oznaczone znakiem „+”) z oznaczeniem wykonywania go w pętli (ang. loop subprocess). Jego charakter wykonywania w pętli jest oznaczony symbolem strzałki (w kształcie okręgu) a same szczegóły działania są opisane na diagramie. W dolnej części diagramu wskazano części składowe tego podprocesu.

Wydaje się, że po określonej liczbie restartów czytnik mógłby się zatrzymać i wyświetlić ekran z błędem i prośbą o skorzystanie z innego czytnika lub mógłby się wyłączyć do momentu ręcznej ingerencji przez operatora (np. na pętli autobusowej). W takiej sytuacji potrzebne byłoby wskazanie liczby powtórzeń oraz obsługi sytuacji, gdy po określonej liczbie powtórzeń efekt procesu nie jest zgodny z oczekiwaniami.

Specjalnie na diagramie zostawiłem oznaczenie błędu (czerwony symbol z „x”) przy obiekcie podprocesu pochodzące z aplikacji, w której go rysowałem. Aplikacja wskazała mi, że nie określiłem poprawnego warunku zakończenia pętli, co zrobiłem świadomie, aby zobrazować, że opisywany proces w rzeczywistości się nie kończył – nie miał np. warunku na liczbę wykonywanych powtórzeń w sytuacji, gdy zdarzenie początkowe pojawia się za każdym razem (np. błąd komunikacji).

Reklamy
h1

Automatyczne reguły oparte o wzorce

Lipiec 11, 2018

Automatyczna odpowiedź: Potwierdzenie otrzymania wiadomości. Państwa wiadomość została przekazana do właściwego pracownika […] ”, a dalej podpis i informacja „Wiadomość została wygenerowana automatycznie, prosimy na nią nie odpowiadać.”. Takiego maila otrzymałem w odpowiedzi na wiadomość skierowaną do podmiotu gospodarczego, wskazując w tytule numer sprawy. Nie otrzymałem jeszcze odpowiedzi na to zgłoszenie. Jednak mogę sobie wyobrazić co się stało na poziomie skrzynki odbiorczej. Mechanizm obsługujący, pobrał tytuł wiadomości, sprawdził do kogo powinna trafić sprawa, a potem wysłał maila z powyższą odpowiedzią. Poniższy diagram w BPMN prezentuje przebieg takiego procesu automatycznego.

buss_rule_1_450px

Na diagramie znajduje się tym zadania „reguła biznesowa” (ang. business rule task), o której pisałem już kilkakrotnie, obrazując ją różnymi przykładami oraz zastosowaniami. W ramach tego kroku następuje próba odnalezienia osoby przyporządkowanej do określonych sformułowań lub numerów użytych w tytule. Mogą to być poszukiwania dokładnego odpowiednika lub zakresów wartości (wzorca). z uwzględnieniem ewentualnych określeń poprzedzających lub następujących po poszukiwanym fragmencie. Reguła może też przewidywać, że inne przypadki są przesyłane do ręcznego przyporządkowania. Reguły mogłyby także zakładać priorytety sprawdzania.

Fragment tytułu (wzorzec) – przykłady Przyporządkowanie
[NR SPRAWY] 2018/06/1* Osoba X
[NR SPRAWY] 2018/06/0* Osoba Y
[NR SPRAWY] 2017/* Skrzynka ogólna
….  
*PRODUKT A* Zespół A
*PRODUKT B* Zespół B
 
*PRODUKT N* Zespół N
RE/ODP:*   Pierwotny nadawca
(lub osoba zastępująca)
brak przyporządkowania Skrzynka ogólna
h1

Gdy odbiorca decyduje

Marzec 17, 2018

Sprzedaż lub kupno mebla? Sprzedaż książki? Wymiana? Skorzystanie z usług? Przeszukiwanie ofert w okolicy a także dalej. Publikacja oferty. Zakończenie oferty. Promocja oferty. Oddam za darmo. Odbiór własny. Te i inne sformułowania są charakterystyczne dla serwisów, w ramach których zwykły użytkownik Internetu może sprzedać, kupić lub wymienić produkt/usługę. Takich serwisów jest wiele i nabierają popularności. Obsługa ich jest bardzo prosta, w większości przypadków nie wiąże się z opłatami.

Załóżmy, że mamy produkt do sprzedania (książkę, mebel lub inny produkt), który jest w dobrym stanie i którego nie chcielibyśmy wyrzucić a wolimy go oddać w dobre ręce, najlepiej otrzymując za to mniej lub bardziej symboliczną opłatę. Publikujemy ofertę, pojawia się chętny i co dalej?

decyzja_odbiorcy_2_450px

W pierwszej kolejności, ustalamy docelową cenę za produkt, w szczególności, gdy wskazaliśmy, że cena jest do negocjacji. Ustalając cenę należy także wziąć pod uwagę koszt dostawy produktu do odbiorcy – kto płaci? W jakiej formie i kiedy? Mamy więc dwa parametry cena i koszt przesyłki. W sytuacji, gdy odbiór będzie osobisty, koszt przesyłki nie wchodzi w grę. W takiej sytuacji, łatwiej też jest ustalić formę płatności. Przy drobnych produktach, płatność odbywa się przeważnie w momencie przekazania produktu. Innym rozwiązaniem jest nadanie przesyłki z płatnością realizowaną w momencie odbioru przesyłki (tzw. usługa „za pobraniem”) – odbiorca może płacić za produkt lub/i za koszt przesyłki. Jeżeli chodzi o samą płatność, może też odbyć się wcześniej, przed wysłanie produktu – przelew na konto lub inna forma płatności elektronicznej

Na powyższym diagramie (w BPMN) zastosowanodecyzję” opartą o zdarzenia (ang. exclusive event-based gateway), ponieważ to osoba zainteresowana i jej decyzje wpływają na dalszy przebieg procesu. Taka sytuacja występuje w dwóch miejscach – na początku procesu, gdy ustalany jest sposób dostawy, a potem gdy ustalany jest sposób płatności za produkt.

h1

Po co to zdarzenie początkowe?

Luty 13, 2016

W przypadku BPMN stosowanie zdarzeń początkowych nie jest obligatoryjne, jednakże dobrą praktyką jest ich stosowanie. Jest to istotne, aby oznaczyć gdzie zaczyna się proces. Łatwiej odbiorcy diagramu określić, która czynność jest pierwsza. Łatwiej mu także zapoznać się z logiką procesu, który jest na diagramie. Wyobraźmy sobie, że na poniższym przykładowym (w BPMN) diagramie nie ma oznaczonego zdarzenia początkowego, które zostało zaznaczone. Skąd będziemy wiedzieć, gdzie się zaczyna proces i co powoduje jego przeprowadzenie? Czy zaczynamy od przekazania raportu do akceptacji czy od korekty?

zdarzenie_poczatkowe_1_450px

Umieszczenie zdarzenia początkowego (ang. start event) ma także tę zaletę, że można okreslić typ tego zdarzenia. Można np, wskazać, że proces ma miejsce co miesiąc, albo w określonym momencie czasu. Także może sygnalizować jakie fizycznie zdarzenia go inicjuje i jakie warunki. Zależy to również od tego jak szeroki proces chcemy pokazać. Jeżeli autor diagramu zakłada, że np. przyjęcie zamówienia jest pierwszym krokiem, to przed nim dobrze jest umieścić zdarzenie początkowe.

Wiele narzędzi stosowanych do modelowania procesów w notacji BPMN kontroluje, czy dana czynność (ang. task) ma połączenie (ang. connection) przychodzące i wychodzące. Zdarzenie początkowe nie wymaga połączenia przychodzącego.

 

h1

Wysłany-odebrany

Styczeń 23, 2016

W wielku polskich miastach na przystankach komunikacji miejskiej można zauważyć tablice, które wskazują godziny przyjazdu lub czas oczekiwania na dany środek komunikacji. Obserwując dane na takim wyświetlaczu można zauważyć, że wskazana liczba minut do przyjazdu np. autobusu spada a czasami rośnie i znów spada. Wskazuje na orientacyjny czas przyjazdu autobusu.

Można przypuścić, że z jednej strony w systemie zakodowany jest czas przejazdu danego autobusu między poszczególnymi przystankami. Jeżeli dany autobus jest spóźniony na poprzedni przystanek, to pewnie orientacyjny czas przyjazdu rośnie (biorąc pod uwagę opóźnienie i czas planowany na przejazd między przystankami). Można sobie wyobrazić, że autobus przyjeżdzając na przystanej wysyła sygnał do systemu, który go odbiera i analizuje, a następnie koryguje czasy wyświetlane na tablicach. W takim komunikacie mogłyby być dane: linia, kurs, czas itp. Taką komunikację opartą wysyłkę I odbiór komunikatu prezentuje poniższy diagram.

wyslany_odebrany_1_450px

Wskazane typy zadania (z BPMN) – wysyłające (ang. send task) i odbierające (ang. receive task) zostały przeze mnie wykorzystane m.in. w poprzednim wpisie w ramach procesu współpracy. Zadania te mają za cel umożliwienie komunikacji między basenami w procesach współpracy. Patrząc na rozwiązania systemowe, mogą to być komunikaty wysyłane w określonym formacie i wyrażone w okreslonym języku (np. XML). Np. w momencie przyjazdu autobusu na przystanek komunikat mógłby być taki:

<?xml version="1.0"?>
<header>
   <sendtime>2016-01-23 12:30:01</sendtime>
   <msgtype>PrzyjazdAutobusu</msgtype>
</header>
<body>
   <busnumber>45</busnumber>
   <kurs>3</kurs>
   <stopnumber>4</stopnumber>
</body>

I w momencie odjazdu z przystanku komunikat mógłby być taki:

<?xml version="1.0"?>
<header>
   <sendtime>2016-01-23 12:33:01</sendtime>
   <msgtype>OdjazdAutobusu</msgtype>
</header>
<body>
   <busnumber>45</busnumber>
   <kurs>3</kurs>
   <stopnumber>4</stopnumber>
</body>
h1

Proces w „basenie”

Styczeń 2, 2016

Podczas jednej z zeszłorocznych kontroli biletowych w pociągu, z rozpędu dałem do kontroli bilet powrotny. Konduktor próbuje uparcie  kilka razy odczytać kod, przeprowadzić jego weryfikację. Wreszcie spisuje kod na kartce i oddaje mi bilet. Odchodzi, sprawdza bilety pasażerów. Nagle wraca i sytuacja sie powtarza. Mówi, że trzeba będzie kupić bilet ponownie, bo ten jest nieprawidłowy i pewnie został anulowany. Biorę od niego bilet, patrzę i nagle okazuje się, że bilet jest na pociąg powrotny. Wpatrywał się w niego kilka minut i tego nie zauważył, nawet spisując jego numer. Odszukuję właściwy bilet, daję go i wszystko było już ok.

weryf_biletu_1_450px

Przytoczona sytuacja obrazuje prosty proces, opisany od strony pracownika kolei, składający się z 2 tzw. aktorów – Konduktora i Systemu kontroli. W takiej sytuacji, gdy proces jest ciągły w ramach jednej jednostki/podmiotu (pracowników kolei), stosujemy na diagramie (w BPMN) tzw. basen (ang. pool) i pola/pasy (ang. lane). Są to poziomo lub pionowo przedstawione obszary, przy czym w ramach basenu (ang. pool), określającego np. jednostkę biznesową, są umiejscowione pasy (ang. lanes), określające aktorów/role (lub inne obiekty) z tej jednostki biznesowej (lub procesu). Powyższy diagram prezentuje taki uproszczony diagram, z wykorzystaniem tych elementów.

Dzięki takiej prezentacji mamy jednoznaczne wskazania kto, jakie i w ramach jakiej jednostki wykonuje czynności, składające się na proces. Między rolami/aktorami w ramach basenu nie są przesyłane komunikaty, proces jest ciągły. Nie mamy zdarzeń początkowych procesu w ramach każdego pasa, a jedynie przed czynnością/zadaniem, które występuje biznesowo jako pierwsza w procesie. Jako nazwa basenu może występować również nazwa procesu, w którym uczestniczą wskazane na pasach role.

h1

„Zbliżeniowy” proces

Czerwiec 28, 2014

„Można zbliżeniowo?”. Pytanie znajome, coraz częściej słyszane w różnych sklepach i punktach usługowych i równocześnie w odpowiedzi pada odpowiedź twierdząca. Wygodne, proste, w szczególności dla małych kwot, przeważnie do 50 zł. Nie ma problemu z wydawaniem pieniędzy i różnymi rodzajami kart i czytników. Zamiast wprowadzenia karty do czytnika jest przytknięcie karty. Zamiast wprowadzenia PIN jest autoryzacja automatyczna. Klient nie musi przekazywać karty sprzedawcy, jedynie musi zbliżyć kartę do czytnika w wyznaczonym miejscu i poczekać na sygnał przyjęcia transakcji (sygnał dźwiękowy lub wizualny).

kartazbliz450

Na powyższym diagramie zostały zaznaczone zmiany standardowego procesu płatności kartą na proces płatności zbliżeniowych. Jak widać do procesu dochodzi jeden nowy element: kontrola limitu płatności zbliżeniowych, czyli wspomniane 50 zł. Powyżej tej kwoty płatność zostanie zrealizowana w tradycyjny sposób.

Korzyścią jest przyspieszenie procesu. Co łatwo widać, np. przy płaceniu zbliżeniowo za obiad na stołówce. Brak potrzeby szukania drobnych czy wydawania reszty. Inni powiedzieliby, że też bardziej higieniczne dzięki braku styczności z monetami/banknotami przed posiłkiem.