Archive for the ‘Przykłady’ Category

h1

Gdy dane w systemie są nieaktualne

Listopad 12, 2018

W ostatnich 3 miesiącach, kiedy inne zobowiązania nie pozwoliły mi na publikację wpisów na blogu, korzystałem ze sklepów internetowych. Było to podyktowane brakiem czasu na poszukiwania tych produktów w sklepach stacjonarnych lub po krótkiej weryfikacji okazywało się, że cena on-line jest zdecydowanie niższa. Co ciekawe w trzech przypadkach, które zdarzyły się w krótkich odstępach czasu, przytrafiły mi się nietypowe zdarzenia. Miałem taką sytuację po raz pierwszy.

W tych trzech przypadkach zamówiłem przez internet trzy różne produkty, z różnych sklepów. W pierwszym wypadku były to cebulki kwiatów (oznaczmy ją jako 1), w drugim mata gimnastyczna (oznaczmy ją jako 2) a w trzecim książka na prezent (oznaczmy ją jako 3). W dwóch przypadkach zakup nie zakończył się otrzymaniem produktu – przypadki (1) i (3), a w jednym przypadku ostatecznie produkt dotarł – przypadek (2). Co się wydarzyło?

  • Przypadek (1) – na drugi dzień po złożeniu zamówienia, otrzymałem informację, że produkt nie jest jednak dostępny fizycznie, jest w systemie, ale nie ma go w sklepie/magazynie. Wręcz usłyszałem, że ktoś go ukradł i dopiero przy remanencie na koniec roku zidentyfikują co się stało. Poprosiłem o zwrot kasy.
  • Przypadek (2) – po około tygodniu od zamówienia, otrzymałem informację mailową, że produkt jednak nie dotarł do nich z magazynu, mimo, że wskazują kilka dni roboczych na realizację zamówienia. Po wskazaniu, że jednak nie chcę rezygnować z zakupu i odpowiednich słowach „mobilizujących” okazało się, że produkt się jednak znalazł i został wysłany.
  • Przypadek (3) – po kilku dniach okazało się, że otrzymali z magazynu zupełnie inny produkt i próbowali mnie przekonać do zmiany zamówienia (proponując cenę wyższą niż cena rynkowa), a ten pierwotny nie jest w cale dostępny, pomimo, że na stronie informują o dostępności (wg informacji z magazynu). Zrezygnowałem z produktu i otrzymałem bon rabatowy na kolejne zakupy.

system_zaufanie_1_450px

Cechą wspólną tych przypadków jest silne uzależnienie od danych, które ktoś wprowadził do systemu (warstwa bazodanowa na diagramie). Może ich nie zaktualizował, nie zweryfikował lub jest to – miejmy nadzieję, że nie – działanie świadome, aby ściągnąć potencjalnego Klienta. Może Klient jak już złożył zamówienie, to weźmie coś innego, otrzyma zamiennie bon do wykorzystania w danym sklepie lub poczeka dłużej na zamówienie. Gdy Klient będzie nerwowy lub zdeterminowany, może zamieścić stosowne wpisy w mediach społecznościowych lub serwisach zbierających opinie klientów. Użytkownik kompletujący zamówienie, także sprawdza w systemie (warstwa użytkownika na diagramie), czy dany produkt jest dostępny (dane z warstwy bazodanowej), w którym miejscu magazynu i ile tak naprawdę sztuk pozostało.

Swoją drogą, chyba będąc dostawcą, nie pisałbym do potencjalnego Klienta, że coś nie dotarło z magazynu, a po chwili, że udaje się to odnaleźć. Podobnie mówienie o tym, że ktoś ukradł produkt też jest marketingowo słabe. Myślę, że można było zaproponować inną odpowiedź.

Użytkownicy systemu (warstwa użytkownika na diagramie) muszą mieć jakieś zaufanie do danych w systemie. Równocześnie zarówno oni, jak i Klienci (na diagramie Klient też jest użytkownikiem, ale np. strony www obsługującej sklep), na czymś muszą oprzeć swoje decyzje o sprzedaży czy zakupie – dostępności produktu, miejscu dostępności, liczbie sztuk, czasie dostawy itp. Użytkownicy mogą korzystać z informacji o produktach znajdujących się u pośrednika/sklepie (baza wewnętrzna na diagramie) lub u docelowego/źródłowego dostawcy (baza zewnętrzna, połączeniem tych elementów jest warstwa obsługująca na diagramie).

Reklamy
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).

h1

Zrób to sam – wydruk faktury

Sierpień 4, 2018

Ostatnio robiłem zakupy w markecie budowlanym, wybrałem rzeczy a potem za nie zapłaciłem. Wychodząc ze sklepu moją uwagę zwróciła nowa rzecz w przejściu (wcześniej jej nie zauważyłem) – było to urządzenie wielkości biletomatu lub innego urządzenia tego typu. Zerknąłem na nazwę i zobaczyłem tylko słowo „fakturomat”. Poszedłem dalej, ale się zacząłem zastanawiać jak to działa. Już wcześniej zauważyłem, że na paragonie jest kod kreskowy, jednakże nie zdziwiło mnie to, ponieważ był już wcześniej i był wykorzystywany przy jakiejś loterii.

Klient w celu wygenerowania faktury mógłby zeskanować kod, wpisać dane oraz wydrukować ją. Zakładam, że z kodem kreskowym są związane szczegóły zakupionych produktów – nazwa, kod, % VAT, producent, cena, ilość i inne informacje niezbędne do umieszczenia na fakturze.

fakturomat_450px

Kluczem do realizacji procesu byłby paragon, który łączy w sobie w sumie dwa procesy: proces zakupowy oraz proces przygotowania faktury. W wielu sklepach, chcąc otrzymać fakturę wstrzymujemy kolejkę lub musimy pójść do punktu informacji i tam pozyskać fakturę. Bez zastosowania fakturomatu, angażowany jest pracownik i ewentualny literówki na fakturze muszą zostać poprawione po przekazaniu uwag przez Klienta. W fakturomacie, to klient kontroluje poprawność danych podczas ich wprowadzania i potwierdza ich poprawność (tak zakładam). Myślę, że jest to przydatne narzędzie, choć w sieci można znaleźć ostrzeżenia i wskazówki odnośnie wykorzystania tego narzędzia (warto się z nimi zapoznać).

Powyższy komentarz jest jedynie moim przypuszczeniem, ponieważ nie korzystałem z tego narzędzia. Trudno mi powiedzieć, czy proces jest całkowicie samodzielny, czy może jednak na koniec potrzebna jest jakaś interakcja z obsługą. Nie wiem także, czy paragon jest wykorzystywany i w jaki sposób są uzupełniane dane. Może być też tak, że trzeba zgłosić tę potrzebę w momencie płacenia za produkty.

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

Nowoczesne zakupy – po raz drugi?

Styczeń 29, 2018

Dziś znów będzie nawiązanie do tematu “politycznego”. Od momentu poinformowania społeczeństwa o planowanym wprowadzeniu zakazu handlu w wybrane niedziele różne podmoty handlowe szukają sposobów na kontynuowanie działalności w te dni. Pojawiają się różne pomysły. Po zapoznaniu się niektórym z nich, muszę przyznać, że jeden z nich przypomniał mi mój wpis sprzed ponad 5 lat.

Chodzi o pomysł zakładający, że Klient przychodzi do sklepu i ogląda wystawione produkty, ale nie może zawrzeć transakcji zakupu w slepie. Może przymierzać, wybierać i równocześnie sprawdzać dostępność produktu w internecie. Na podstawie takich działań może zadecydować co dalej z produktem – tak to opisałem w pierwszym wpisie o tytule “Nowoczesne zakupy?”. W tamtej sytuacji, miał wybór – mógł kupić w sklepie lub online. W przypadku analizowanego pomysłu, byłby pozbawiony jednej z tych możliwości – zakupów bezpośrednio w sklepie. Mógłby tylko zamówić produkt w internecie. Nie jestem w stanie i nie chcę oceniać tego pomysłu, jednakże w skrócie mógłby on wyglądać jak na poniższym diagramie.

intelig_zakupy420px

Proces wydaje się prosty i logiczny. Klient wykonuje wszystkie czynności jak przy zwykłych zakupach, z tą różnicą, że nie może wrócić z produktem do domu. Moment otrzymania produktu jest przesunięty w czasie. Sprawdzenie czy taki proces jest zgodny w pełni z wprowadzonym zakazem pozostawiam prawnikom i innym zorientowanym w temacie specjalistom. Ja tego nie wiem i nie chcę to wnikać.

To, na co chciałbym zwrócić uwagę, to fakt, że taka idea zakupów, tj. oglądanie w sklepie, a zakup w Internecie, wydaje się czymś już znanym i stosowanym przez wielu klientów jako ich świadomy wybór a nie narzucone rozwiązanie. Takie podejście do zakupów idzie często równocześnie z uzasadnieniem (z takimi się spotkałem) –  że ten sam produkt w internecie będzie tańszy, może mniej rozciągnięty, dostarczony z jakimś dodatkowym gratisem, w innym kolorze, z możliwością późniejszej zapłaty itd. Sam stosuję takie podejście przy pewnych produktach.

Pytanie, które sam sobie zadaję, to pytanie o moment, w którym zakupiłbym produkt – jeszcze w sklepie (np. skanując jego kod) czy dopiero w domu. Wszystko zależy od przygotowanego rozwiązania i “korzyści” z jego wykorzystania – zarówno tych finansowych, jak i innych. Na tę chwilę nie wiem, myślę, że przetestuję w praktyce rozwiązanie, z którym będę miał styczność po wejścu zakazu w życie. Jak sobie pomyślę np. o zakupach w sklepie spożywczym… To spróbuję rozwinąć w innym wpisie.

h1

Jak „zatrzymać” pętlę?

Styczeń 20, 2018

Do poprzedniego wpisu dot. algorytmu przydziału zadania, pojawił się komentarz: “Jak w powyższym przypadku zatrzymać pętle? Mam na myśli to, że po kliku przebiegach algorytmu nadal może nie być sędziego.”. Dzięki za komentarz, Postanowiłem temat kontynuować w dzisiejszym wpisie, jednakże nadal nie będę wnikał o jaki rodzaj zadań chodzi podczas przydziału wg algorytmu.

W poprzednim wpisie wskazałem, że momencie braku możliwości przydziału osoby w danym przebiegu, sposobem jest powtórzenie próby przydziału w kolejnym przebiegu. Ten kolejny przebieg, w których uwzględnimy tę sprawę może być rzeczywiście tym następnym lub po jakimś czasie, wszystko zależy od konfiguracji algorytmu. Zgadzam się, że to może nie rozwiązać kwestii.

algorytm_wyjscie_z_petli_440px

Dlatego można też sprawdzić liczbę takich prób lub sprawdzić potencjalnie kiedy – efekt jest zawarty z zdarzeniu Możliwy przydział w czasie T przy wyjściu z bramki po zadaniu Zweryfikuj ograniczenia:

  • będzie dostępna osoba, która ma określoną specjalizację, gdy ten fakt jest ograniczeniem (zarówno ze względu na założone limity jako niedostępność fizyczną);
  • zmniejszy się liczba spraw, która jest obecnie w obsłudze, tj. zostaną zakończone lub zmieni się ich status, gdy obecne wykorzystanie “kolejek” zadań jest ograniczeniem;
  • osoba o największym doświadczeniu mogłaby podjąć się zadania.

Alternatywą dla tych przykładowych rozwiązań, jest przekazanie przy określonych warunkach, sprawy do ręcznego przydziału, do administratora lub do innego forum – zawarte w zdarzeniu Do ręcznego przeglądu i po analogicznej bramce jak powyżej. Zgadzam się, że algorytm powinien przewidywać jakieś wyjście z pętli, aby sprawy nie krążyły w nim bez przydziału, bez rozwiązania. Dla zadań mogą być określone oczekiwane czasy ich rozwiązania lub jednostka je przyjmująca ma zdefiniowane parametry pierwszej rekacji lub nawet rozwiązania danego zadania.

Podsumowując, osoba tworząca założenia dla algorytmu przydziału zadań, może zadecyować o kolejności weryfikacji warunków przydziału, tworzeniu listy osób branych pod uwagę przy danym zadaniu, poziomie skomplikowania algorytmu oraz momentu, w którym potrzebny jest przydział poza warunkami lub wręcz ręczna obsługa. Kształt algorytmu bazuje także na informacji zwrotnej od osób obsługujących, wiedzy o nich oraz sposobie parametryzacji zadań.