Archive for the ‘Uncategorized’ 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

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

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.

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.