Wysyłka dokumentu do ERP przez kolejkę w opisywanym wdrożeniu nie czeka na utworzenie dokumentu, tylko na przyjęcie zadania do kolejki ERP. Ekran przykrywa nakładka z licznikiem sekund, a formularz pyta o stan mniej więcej co dwie sekundy przez około minutę. Jeśli wynik nadal nie jest znany, dokument jest opisany jako czekający w kolejce.
Magazynier klika ZAPISZ i przez chwilę nie wie, czy dokument przyjęcia już powstał w ERP. Wysyłka dokumentu do ERP przez kolejkę zastępuje jedno długie wywołanie, które albo się uda, albo zawiśnie, licznikiem sekund na ekranie i regularnym pytaniem o stan.
Ta strona opisuje minutę po kliknięciu: co dzieje się na ekranie i w bazie, jakie wyniki może zobaczyć magazynier i dlaczego nie powinien wtedy przyjmować towaru ręcznie w ERP. Kontrolę ilości, która poprzedza wysyłkę, opisuje strona o kontroli ilości w ERP przed zapisem, a przypadek, w którym wynik pozostaje nieznany, strona o stanie nierozstrzygniętym.
Formularz nie czeka na utworzenie dokumentu w ERP, tylko na przyjęcie zadania do kolejki
Po kliknięciu ZAPISZ system najpierw zapisuje pozycje dokumentu w bazie, a potem przekazuje dokument do kolejki ERP. Wywołanie kończy się po przyjęciu zadania do kolejki, więc zwykle odpowiedź brzmi „czeka w kolejce”. To nie jest błąd, tylko zwykły wynik wysyłki, a utworzenie dokumentu w ERP następuje już poza tym wywołaniem.
Każda pozycja jest zapisywana osobno, a wynik zapisu jest sprawdzany. Potem system liczy zapisane pozycje dokumentu. Przy rozbieżności pojawia się komunikat z liczbą zapisanych i wszystkich pozycji, a dokument nie idzie do ERP.
Wysyłka ma cztery kroki w stałej kolejności: krótka blokada zamówienia, kontrola ilości w ERP, wysłanie zadania do kolejki i zapis wpisu śledzącego. Blokada trwa do zapisu wpisu. Blokada sprawia, że dwa dokumenty do tego samego zamówienia nie przejdą kontroli jednocześnie: drugi czeka najwyżej dziesięć sekund, a potem dostaje odpowiedź, że inny dokument do tego zamówienia jest właśnie wysyłany. Po zapisie wpisu kolejny dokument widzi poprzedni jako czekający w kolejce, więc jego ilość jest już zajęta.
Licznik sekund i pytanie o stan około co dwie sekundy
W czasie wysyłki ekran przykrywa półprzezroczysta nakładka na całą stronę. Ma kółko, pogrubioną linię, linię dodatkową i stałą adnotację „Trwa przetwarzanie - nie zamykaj okna.” Nakładka zasłania formularz, więc nie da się kliknąć ZAPISZ drugi raz. Teksty zmieniają się razem z etapem: „Dokument 1 z 2 (numer zamówienia)”, a pod spodem „zapisywanie pozycji...”, „wysyłanie do ERP...” i „czekam na potwierdzenie z ERP: 12 s”.
Formularz pyta o stan dokumentu mniej więcej co dwie sekundy przez około minutę. Taka jest reguła w opisywanym wdrożeniu. Każde pytanie dotyczy tylko własnego wpisu kolejki tego dokumentu, a ekran odświeża się między pytaniami. Liczba sekund rośnie przy każdym pytaniu i zaczyna od zera przy pierwszym.
Licznik na ekranie pokazuje, ile sekund system czeka na potwierdzenie z ERP, a nie jak daleko ERP doszło w przetwarzaniu dokumentu.
Gdy procedura stanu zgłosi, że chwilowo nie zdołała sprawdzić stanu, na przykład dlatego, że jest zajęta, formularz pyta ponownie po dwóch sekundach i nie uznaje dokumentu za utracony. Gdy po minucie nie ma rozstrzygnięcia, dokument jest opisany jako czekający w kolejce ERP, a jego wynik sprawdza później monitor, który opisuje strona o monitorze kolejki ERP.
Pięć klas wyniku wysyłki i to, co z nich widzi magazynier
Wysyłka kończy się jednym z pięciu wyników. Magazynier nie widzi ich numerów, tylko skutek na ekranie, a tabela zbiera je w jednym miejscu.
| Klasa wyniku wysyłki | Znaczenie | Co widzi magazynier |
|---|---|---|
| Utworzony | dokument utworzony w ERP, jedyny pełny sukces | tytuł „Dokumenty zostały wysłane poprawnie” |
| Czeka w kolejce | ERP przyjął zadanie, dokumentu jeszcze nie ma | ostrzeżenie, żeby nie przyjmować towaru ręcznie w ERP |
| Zatrzymany przez system | dokument nie został wysłany | po kontroli ilości pozycje wróciły na awizację i trzeba poprawić ilości; przy zajętym zamówieniu komunikat, że inny dokument jest właśnie wysyłany |
| Odrzucony przez ERP | ERP nie przyjął dokumentu | karta błędu z numerem dokumentu i zamówienia oraz opisem |
| Błąd techniczny lub walidacja | wysyłka nie doszła do skutku przed wysłaniem albo w jej trakcie | karta błędu z opisem |
Przy dokumencie zatrzymanym przez kontrolę ilości dokument jest anulowany, a pozycje wracają na listę awizacji. Nie każde zatrzymanie oznacza jednak anulowanie: przy zajętym zamówieniu albo dokumencie nic się nie anuluje. Statusy samej awizacji, odrębne od wyników wysyłki, opisuje strona o statusach w programie awizacyjnym.
Jedno zamówienie to jeden dokument, a dokumenty idą po kolei
Pozycje są grupowane po numerze zamówienia i każde zamówienie tworzy osobny dokument z własnym numerem. Dokumenty są wysyłane po kolei: następny rusza dopiero po zakończeniu poprzedniego, a wynik każdego jest zapisywany dokładnie raz. Awizacja z pozycjami z dwóch zamówień daje więc dwa dokumenty i nakładkę „Dokument 1 z 2”, potem „Dokument 2 z 2”. Dlaczego awizacja może obejmować kilka zamówień, wyjaśnia strona o kilku zamówieniach w jednej awizacji.
Błąd formularza w trakcie wysyłki nie zostawia nakładki na ekranie. Wyjątek kończy dany dokument własnym wynikiem, nakładka znika, a następny dokument startuje niezależnie.
Podwójne wysłanie blokują dwie warstwy
Formularz po kliknięciu wyszarza ZAPISZ i przykrywa ekran nakładką. W bazie dokument jest zamykany blokadą na czas wysyłki. Drugie wywołanie przed zapisem wpisu kolejki dostaje odpowiedź, że dokument jest właśnie wysyłany z innego okna, a po zapisie wpisu wynik „czeka w kolejce”. Dokument już utworzony w ERP daje wynik „utworzony” z opisem, że powstał wcześniej i nie jest wysyłany ponownie. Ogólny wzorzec ochrony wysyłki przed powtórzeniem w T-SQL opisuje artykuł o idempotencji wysyłki do systemu zewnętrznego.
Po utworzeniu dokumentu w ERP system zapisuje jego numer przy dokumencie w bazie i uruchamia powiadomienie mailowe, domyślnie włączone. Błąd wysyłki maila nie zmienia wyniku dokumentu. Zasady wiadomości opisuje strona o wiadomościach e-mail z programu.
Co widzi magazynier, gdy dokument czeka w kolejce
Ekran końcowy przy samych dokumentach utworzonych ma tytuł „Dokumenty zostały wysłane poprawnie”. Jeśli któryś dokument czeka w kolejce, tytuł brzmi „Dokumenty zostały wysłane”, a pod nim pojawia się pogrubione ostrzeżenie, żeby nie przyjmować tego towaru ręcznie w ERP. Lista przy ostrzeżeniu zawiera numer dokumentu i zamówienie oraz informację, że wynik sprawdzi system przy kolejnym dokumencie albo przy otwarciu formularza.
Ekran błędu ma nagłówek informujący, że nie udało się wysłać wszystkich dokumentów. Przy każdym niewysłanym dokumencie jest karta z numerem dokumentu i numerem zamówienia, a przy zatrzymaniu przez kontrolę ilości także tabela pozycji. Przyciski to Wróć do awizacji i Zamknij.
Przykład: dwa zamówienia, jeden dokument czeka w kolejce
Przykład z danymi fikcyjnymi. Magazynier kończy przyjęcie dostawy od Dostawcy Testowego, która obejmuje dwa zamówienia: 26-1001 i 26-1002. Klika ZAPISZ i widzi nakładkę „Dokument 1 z 2 (26-1001)”, a potem „czekam na potwierdzenie z ERP: 4 s”. Licznik zaczął od zera przy pierwszym pytaniu o stan.
Pierwszy dokument zostaje utworzony w ERP. Drugi po minucie nadal czeka w kolejce, więc ekran końcowy ma tytuł „Dokumenty zostały wysłane” i wymienia drugi dokument z ostrzeżeniem, żeby nie przyjmować tego towaru ręcznie w ERP. Magazynier zamyka okno i wraca do pracy.
Czego ta wysyłka nie obiecuje
Wysyłka nie jest ponawiana automatycznie i nie daje gwarancji, że każdy dokument powstanie w ERP. Licznik nie mierzy postępu po stronie ERP, a minuta oczekiwania nie oznacza rozliczenia awizacji. Połączenie awizacji z ERP opisują strony o integracjach awizacji z programami ERP i o łączeniu systemu awizacji z ERP.
Cztery pytania do analizy przed wdrożeniem podobnej wysyłki
- Czy ERP w Twojej firmie przyjmuje dokumenty do własnej kolejki i czy da się zapytać o stan konkretnego zadania?
- Jak długo użytkownik może czekać przy ekranie, zanim powinien wrócić do innej pracy?
- Kto w firmie sprawdza dokumenty, które po minucie nadal czekają w kolejce?
- Czy jedna awizacja może zawierać towar z kilku zamówień i czy każde zamówienie ma mieć osobny dokument w ERP?