Archive for the ‘Uncategorized’ Category

h1

Statusy cząstkowe czy o kluczowych etapach?

Wrzesień 15, 2017

Ostatnio zamawiając wybrany produkt przez internet, proces zaówienia wyglądał jak zwykle, czyli wybór produktu, określenie parametrów dostawy oraz płatności, a na koniec płatność za pomocą wybranej usługi. Po chwili na skrzynce znalazłem informację z potwierdzeniem zamówienia. Wybrałem dostawę za pomocą firmy kurierskiej, więc wystarczyło czekać na dostawę w szacowanym terminie –  kilka dni.

Następnego dnia dostaję maila od firmy kurierskiej z informacją: “czekamy na przygotowanie przesyłki”. Po kilku godzinach – “odebraliśmy przesyłkę, powiadomimy o czasie dostawy kolejnym mailem”. Następnego dnia – “planowane dostarczenie w podanej lokalizacji i przedziale czasowym”. Otrzymałem także informację o tym, że mogę zmienić szczegóły dostawy – lokalizację i przedział czasowy. Na koniec, gdy kurier dostarczył mi przesyłkę i potwierdziłem podpisem odbiór, dostałem maila, że “przesyłka dostarczona”. Poszczególne statusy oraz powiązane kroki procesu zostały przedstawione na poniższym diagramie.

statusyczastkowe450px

Można powiedzieć, że zamiast „zwykłych” statusów o etapach (złożone, wysłane, w trakcie oraz dostarczone) z procesu przekazywane były Klientowi statusy cząstkowe. Te cząstkowe statusy były okazją dla firmy do udostępnienia dodatkowej możliwości elektronicznej zmiany szczegółów dostawy. Podobnie można było dokładnie zauważyć moment zmiany podmiotu odpowiedzialnego za realiazcję procesu – między przygotowaną przesyłką (strona zamawiającego na diagramie) a odebraną przesyłką (strona dostarczającego na diagramie). W takich procesach często na koniec występuje ankieta, pozwalająca na ocenę procesu.

Szczerze mówiąc zacząłem się zastanawiać, z jaką szczegółowością chciałbym być informowany o przebiegu realizacji procesu – mógłbym otrzymać numer przesyłki smsem, z możliwością jej śledzenia. Mając na uwadze, że czas realizacji był 1-2 dni, tak częste statusy wydawały się nadmiarowe, ponieważ gdybym sprawdził pocztę dopiero po kilku dniach zobaczyłbym 3-5 wiadomości dotyczącej przesyłki. Jeżeli okres realizacji byłby dłuższy, np. od momentu złożenia zamówienia do przygotowania przesyłki był okres kilku dni lub tygodni, to pewnie oceniłbym to inaczej. Korzyścią z rozwiązania było to, że dokładnie wiedziałem, gdzie jest przesyłka i mogłem się przygotować na jej odbiór od kuriera.

Reklamy
h1

Wartości graniczne

Lipiec 8, 2017

Prawie 3 lata temu napisałem na blogu wpis dotyczący karty aglomeracyjnej, a w szczególności sposobu naliczania opłat na niej. Osatnio zauważyłem, że obowiązuje zasada, że jeżeli jednego dnia, nastąpi naliczenie opłat w wysokości opłaty za bilet 24-godzinny, naliczanie opłat zostaje wstrzymane. Na poniższym diagramie, pochodzącym z pierwotnego wpisu, zostało dodane rozszerzenie, które obsługuje to ograniczenie w procesie. Ta cena biletu 24-godzinnego (oznaczenie CB24G) jest „górną” wartością graniczną stosowaną w tym procesie. Jest to moja próba przykładowego zobrazowania procesu – nie sprawdzałem jak dokładnie przebiega ten proces w rzeczywistości.

W ramach kroku naliczenie opłaty, następuje sprawdzenie jaką kwotę dotychczas pobrano za przejazdy oraz czy te opłaty dotyczą danego dnia (lub inaczej zdefiniowanego okresu). Jeżeli przekroczono kwotę, jest ona ustalana na cenę biletu 24-godzinnego (CB24G). Przy następnym przebiegu, następuje sprawdzenie okresu, który został opłacony (do końca doby) i jeżeli został przekroczony, naliczanie opłaty rozpoczyna się od początku.

konto2v450px

Wiele procesów ma wbudowane wartości graniczne dolne lub górne. Inne zastosowanie wartości granicznej można zauważyć w procesie sprzedaży w internecie, gdy proces wyboru opłaty za dostawę jest wyłączany w momencie obsługi koszyka o wartości wyższej niż pewna umowna wartość. Można sobie też wyobrazić proces sprzedaży, gdy transakcja jest realizowana dopiero od wybrania X sztuk produktów. W księgarni internetowej można teoretycznie spotkać rozwiązanie, że przy określonej liczbie książek w koszyku, można wybrać dodatkową książkę taniej.

W podanych przykładach wartość graniczna jest używana na bramce do włączenia lub wyłączenia pewnej części procesu/ścieżki. Takie działanie może być korzystne dla Klienta procesu lub nie. Wynika z przejętego modelu biznesowego, a w szczególności kosztów obsługi danego procesu.

Wartości graniczne mogą też być stosowane w regułach biznesowych czy pętlach.

h1

GIGO a procesy

Styczeń 28, 2017

Wyobraźmy sobie, że w opisanych przeze mnie wcześniej procesach:

na wejściu do procesu trafiły błędne, niespójne lub niesprawdzone dane, czyli tzw. “śmieci” na wejściu (ang. garbage in) – skrócie GI. Same procesy możemy uogólnić jak to przedstawiono na poniższym diagramie.

W pierwszym procesie dane zostaną przetworzone, przeanalizowane a następnie zostanie wygenerowany raport. Załóżmy, że dane źródłowe składały się z wymieszanych danych z różnych lat, a generowany raport dotyczy podsumowania roku. Porównując takie informacje z zeszłym rokiem otrzymujemy raport, który nie odpowiada rzeczywistości. Działanie procesu jest takie samo, a na wyjściu otrzymujemy nieużyteczne informacje, czyli tzw. “śmieci” na wyjściu (ang. garbage out) – w skrócie GO.

gigo450px

W drugim procesie z kolei, możemy przeprowadzić analogiczną analizę. Załóżmy, że pierwszy z uczestników procesu, usłyszał o samolocie i bez sprawdzenia tej informacji (czy taki lot jest) przekazał dalej albo podobne zachowanie nastąpiło na późniejszym etapie. Można powiedzieć, że gdy wejście do danego kroku procesu nie jest prawdziwe, w wyniku realizacji tego kroku, ta sytuacja się nie zmieni, jeżeli ten krok zakłada korzystanie z informacji i wykonanie kolejnych zaplanowanych działań. W efekcie podjęte działania nie są adekwatne do sytuacji, czyli racjonalnie patrząc powinny zostać spisane na straty. Co niektórzy powiedziliby, że powinny trafić do kosza.

Wiele procesów przetwarza dane wejściowe w konkretne informacje, decyzje (a to może mieć różne konsekwencje, o czym można się przekonać przeglądając różne artykuły dostępne w sieci). Patrząc na uogólniony diagram, gdy wejście będzie niepoprawne, decyzja nie będzie prawidłowa/nieadekwatna (poprzez porównanie do sytuacji, gdy dane byłyby poprawne). W skrócie GIGO (ang. garbage in, garbage out).

h1

Promocyjny proces

Styczeń 21, 2017

Obecnie w sklepach można spotkać wiele wywieszek, ogłoszeń, oznaczeń, że różne produkty znajdują się w promocji, do 10, 30, 50, czy nawet 80%. Idziesz przez centrum handlowe i co chwilę widzimy albo wielki procent albo wielkie liczby. W tym okresie dzieje się tak co roku. Jednakże to, że jest promocja nie znaczy wcale, że znajdziemy coś dla siebie, o ile czegoś w danym momencie potrzebujemy. Można powiedzieć, że postępujemy w poniższy sposób. Zaczynając od tego, że sprawdzamy na co jest rzeczywiście promocja i co ona oznacza…

To sprawdzenie na czym polega promocja i jaka jest cena, ma duże znaczenie. Wiedząc ile kosztuje normalnie taka rzecz, można określić, czy promocja jest “rzeczywiście” promocją czy może naturalnym obniżeniem ceny produktu do poziomu, jaki występował na produkcie jaki czas temu, a został podniesiony przez pewien okres czasu i z różnych względów, w wyniku decyzji biznesowych podmiotu, o czym pisałem we wpisie “Jak są ustalane ceny promocyjne?”. Każdy podmiot na rynku ma swoją strategię wykorzystywania promocji. Czasami, o czym podmioty mówią otwarcie, jest to przygotowanie sklepu na przyjęcie nowej serii produktów lub z nowego sezonu. Innym razem nie mam informacji o powodach promocji, ale robią ją prawie wszyscy.

promocja450px

Na diagramie przerwałem proces na zdarzeniu Cena nieodpowiednia, ponieważ w tym momencie można byłoby go zakończyć, zmienić produkt lub poszukać innej promocji. Podobnie jest to rozwiązane w dalszej części procesu – możliwe przejścia są oznaczone przerywanymi strzałkami na diagramie.

W kolejnym kroku procesu sprawdzamy, czy jest nasz rozmiar. Czasami można zauważyć, że promocja pojawia się, gdy pozostają rozmiary rzadziej kupowane przy danym rodzaju produktu. Pierwszy przykład z brzegu, który mi przychodzi, to zakup koszuli w promocji – przeglądając półkę można zauważyć, że jest przerwa w numeracji np. przy rozmiarach 41, 42, 43, a są pozostałe. Oczywiście mogły zostać już wykupione.

Na koniec pozostaje nam decyzja czy kupujemy dany produkt, biorąc pod uwagę ograniczenia przy np. zwrocie takich produktów.

A może nasz rozmiar w akceptowanej cenie jest on-line? O wykorzystaniu takich technologii pisałem przy okazji wpisu o “Nowoczesnych zakupach”. Wychodząc na zakupy, możemy się przygotować i sprawdzić jak wyglądają oferty sklepów internetowych.

h1

… jako pomoc dla Klienta

Sierpień 10, 2016

Dziś postanowiłem kontynuować temat zapoczątkowany w poprzednich wpisach – dla mechanizmu wsparcia klienta przy wózku zakupowowym, dla którego podstawą jest lokalizacja i identyfikacja produktów. Wyobraźmy sobie, że obok listy produktów, dostępnych w sklepie (czyli Produkty_w_ofercie), wraz z ich lokalizacjami, sklep dysponuje także historią zakupów podzielonych na koszyki (czyli Historia_koszyków). Każda wizyta klienta, niezależnie czy miał 1 produkt w koszyku czy więcej, została zachowana jako pakiet danych z przypisanym identyfikatorem koszyka.

Takie dane można byłoby wykorzystać, aby dynamicznie, w zależności od tego, co Klient umieszcza i wyciąga z koszyka (czyli Produkty_w_koszyku), proponować mu kolejny produkt lub produkty, z podaniem nawet ich lokalizacji w sklepie. Dodany produkt do koszyka wywołałby przeszukiwanie historii koszyków pod kątem wzorca, zawierającego wybrany lub wybrane produkty. Im większa liczba produktów tym więcej produktów do zaproponowania. Ideę takiego działania prezentuje diagram.

produkty_analiza_450px

Na diagramie został zaprezentowany przypadek dla danego produktu P1 umieszczonego przez Klienta w koszyku. Traktując wskazanie produktu P1 jak pakiet produktów, diagram jest nadal prawdziwy, ponieważ w zestawieniu z Historią koszyków, P1 może oznaczać pakiet produktów.

Proces przebiega w trzech krokach: odszukanie produktu/pakietu z koszyka w historii zakupów, sprawdzenie produktów w odnalezionych koszykach a następnie wybór produktów do zaoferowania Klientowi. Klient otrzymuje propozycję produktów, w przykładzie jest to produkt P3, a zakupy są dla niego łatwiejsze – może “nie zapomni” o jakimś produkcie, który zwykle kupował przy podobnym zestawie produktów.

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>