Archive for Sierpień 2018

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

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.