Dokument magazynowy musi trafić do Symfonii dokładnie w takiej kolejności, w jakiej powstał w magazynie. Przyjęcie zaksięgowane po wydaniu tego samego towaru zatrzymuje księgowanie i wymusza pracę informatyka. Integracja Symfonia ERP ze Studio WMS.net rozwiązuje to modelem pull: to Symfonia pobiera dokumenty, a magazyn nie wypycha ich w ciemno.
Spis treści
- Dlaczego model push zawodzi przy przerwach w łączności
- Cykl pobierania dokumentu przez Symfonię
- Odporność na przerwy i awarie
- Kolejka dokumentów w bazie WMS
- Diagnostyka i audyt wymiany
- Interfejs REST i autoryzacja
- Dane z magazynu w Symfonii
- Plan wdrożenia integracji
- Pytania i odpowiedzi o integrację Symfonia ERP z WMS
- Glosariusz pojęć związanych z integracją Symfonia ERP z WMS
Dlaczego model push zawodzi przy przerwach w łączności
W modelu push WMS po każdej operacji próbuje wysłać dane do ERP. Gdy interfejs API po stronie odbiorcy jest niedostępny, dokument może zginąć albo dotrzeć później niż następny. Ponawianie prób jest nieskoordynowane, a błąd komunikacji potrafi zablokować proces w magazynie. Po przywróceniu łączności dokumenty mogą dotrzeć do ERP w złej kolejności i wywołać błędy logiczne w księgowaniach.
Drugim problemem jest brak gwarancji chronologii. Jeżeli wydanie zostanie przetworzone przed przyjęciem z powodu błędu w kolejce wysyłkowej, ERP odrzuci operację. Ręczna interwencja IT generuje koszt i opóźnienie, które można wyeliminować architekturą wymiany.
| Cecha | Model push | Model pull |
|---|---|---|
| Kto inicjuje przesył | WMS po każdej operacji | Symfonia, w swoim tempie |
| Kolejność dokumentów | brak gwarancji przy błędach sieci | zawsze od najstarszego (FIFO) |
| Przerwa w działaniu ERP | ryzyko utraty lub duplikatu | kolejka czeka i zostaje nadrobiona |
| Widoczność statusu | rozproszone logi nadawcy | jedno miejsce z statusem każdego dokumentu |
| Wpływ na pracę magazynu | błędy mogą blokować operacje | magazyn pracuje niezależnie od ERP |
Zmiana modelu nie zmienia treści dokumentów, tylko inicjatora przesyłu. Po stronie magazynu dochodzi udostępnienie kolejki i punktów końcowych, a po stronie Symfonii łącznik pobierający. Obie części można zbudować i przetestować niezależnie, co skraca fazę wdrożenia i upraszcza podział odpowiedzialności między zespołami IT.
Cykl pobierania dokumentu przez Symfonię
WMS udostępnia kolejkę dokumentów oczekujących. Symfonia, przez dedykowany łącznik pobierający w trybie szeregowym, pyta o kolejny dokument i potwierdza jego przetworzenie. Dokument następny staje się widoczny dopiero po potwierdzeniu poprzedniego.
- Zapytanie o status. Symfonia pyta, czy jest nowy dokument. WMS zwraca najstarszy nieprzetworzony, zgodnie z kolejnością FIFO.
- Pobranie szczegółów. ERP odbiera pełny pakiet danych: identyfikatory oraz pozycje wraz z ilościami.
- Zapis lokalny. Symfonia zapisuje dokument we własnej bazie danych.
- Potwierdzenie albo odrzucenie. Po udanym zapisie WMS oznacza dokument jako przetworzony. Po błędzie, na przykład braku stanu w ERP, Symfonia zgłasza odrzucenie, a WMS zapisuje przyczynę.
Reguła: dokument o numerze N+1 nie jest udostępniany, dopóki Symfonia nie potwierdzi dokumentu N. Błąd wstrzymuje kolejkę zamiast przepuszczać późniejsze dokumenty, więc chronologia księgowań nie zostaje naruszona. Definicję kolejki FIFO w łańcuchu dostaw opisuje słownik terminologii CSCMP.
Odporność na przerwy i awarie
Przerwa w działaniu serwera Symfonii lub awaria sieci nie powoduje utraty danych. Dotyczy to także planowej aktualizacji systemu. Dokumenty pozostają w kolejce WMS, a po powrocie ERP łącznik nadrabia zaległości w pierwotnej kolejności. Nikt nie wznawia przesyłu ręcznie, bo nie ma transmisji, która mogłaby się przerwać w połowie.
Magazyn nie blokuje operacji, gdy system nadrzędny ma problem. Operator nadal przyjmuje towar i skanuje wydania, a dokument czeka na pobranie. Model pull usuwa też zjawisko zakleszczenia procesów, w którym dwa systemy wzajemnie czekają na odpowiedź. Odzyskiwanie sprawności po awarii przebiega samoczynnie, co w opisie projektu nazywa się self-healing.
Kolejka dokumentów w bazie WMS
Logikę FIFO najprościej pokazać na tabeli kolejki. Poniższy schemat jest ilustracyjny i nie przedstawia struktury bazy Studio WMS.net. Zapytanie o kolejny dokument zwraca pierwszy rekord, którego status nie jest równy PRZETWORZONY, w kolejności rosnącego identyfikatora.
CREATE TABLE dbo.KolejkaDokumentow (
Id bigint IDENTITY(1,1) PRIMARY KEY,
Typ varchar(10) NOT NULL,
Status varchar(12) NOT NULL DEFAULT 'OCZEKUJE',
Przyczyna nvarchar(400) NULL,
UtworzonoUtc datetime2 NOT NULL DEFAULT SYSUTCDATETIME()
);
-- odpowiednik GET /next-pending
SELECT TOP (1) Id, Typ, UtworzonoUtc
FROM dbo.KolejkaDokumentow
WHERE Status <> 'PRZETWORZONY'
ORDER BY Id;
-- odpowiednik PATCH /confirm
UPDATE dbo.KolejkaDokumentow SET Status = 'PRZETWORZONY'
WHERE Id = @Id AND Status <> 'PRZETWORZONY';
-- odpowiednik PATCH /reject
UPDATE dbo.KolejkaDokumentow SET Status = 'BLAD', Przyczyna = @Przyczyna
WHERE Id = @Id;
Dokument ze statusem BLAD nadal jest pierwszy w kolejce, więc blokuje kolejne do czasu naprawy. Taki dobór warunków jest celowy. Podpowiedź READPAST, znana z kolejek wielu konsumentów, pominęłaby zablokowany wiersz i wydała późniejszy dokument poza kolejnością. Przy jednym łączniku szeregowym nie jest potrzebna. Potwierdzenie jest idempotentne: powtórzone po zerwaniu połączenia nie zmienia już przetworzonego wiersza, więc nie powstaje duplikat. Mechanizmy blokad opisuje przewodnik po blokowaniu transakcji w SQL Server.
Diagnostyka i audyt wymiany
Dokument w kolejce oczekuje albo jest przetwarzany, a gdy ERP go odrzuci, dostaje status błędu. Dział IT widzi je w jednym miejscu i nie składa obrazu z logów dwóch systemów. Przy odrzuceniu zapisuje się przyczynę, więc serwis reaguje na konkretny dokument, a nie na ogólny komunikat o awarii integracji.
Dashboardy menedżerskie pokazują stan integracji na bieżąco. Monitoring kolejki ujawnia wzrost liczby dokumentów oczekujących, zanim dział handlowy zauważy brak danych w Symfonii. Przejrzystość raportowania ułatwia rozmowę zarządu z działem IT, bo opiera się na liczbach z kolejki.
Interfejs REST i autoryzacja
Wymiana opiera się na REST API z autoryzacją tokenem Bearer. Czterema punktami końcowymi obsługuje się cały cykl, a szyfrowane połączenie chroni informacje o stanach magazynowych i cenach.
- GET /next-pending. Zwraca metadane najstarszego nieprzetworzonego dokumentu.
- GET /details/{id}. Zwraca pełną strukturę JSON dokumentu.
- PATCH /confirm. Zatwierdza poprawny import po stronie ERP.
- PATCH /reject. Zgłasza błąd walidacji po stronie ERP wraz z przyczyną.
Wszystkie logi i statusy przetwarzania są w jednym miejscu, więc dział IT widzi, który dokument czeka, który jest w trakcie, a który zwrócił błąd. Po awarii układ wraca do pracy bez ręcznych poprawek, ponieważ łącznik zaczyna od pierwszego niepotwierdzonego dokumentu.
Dane z magazynu w Symfonii
Zamówienia z Symfonii trafiają na kolektory danych magazynierów, a skan kodu kreskowego jest weryfikowany w czasie rzeczywistym. Dane trafiają do API zaraz po skanie, więc operator nie wpisuje ich ręcznie. Wysyłka błędnego towaru jest wtedy wykluczona na etapie pobrania. System wyznacza najkrótsze ścieżki kompletacji, więc pracownik przygotowuje więcej paczek w tym samym czasie. Terminale i oprogramowanie opisuje strona o aplikacji WMS na Androida, a sprzęt na wózki strona o komputerze pokładowym Zebra VC8300.
Każdy ruch w WMS jest widoczny w Symfonii, więc dział handlowy operuje na prawdziwych stanach. Inwentaryzacja przebiega bez przerywania pracy, a wyniki spisu trafiają do systemu finansowego. Zasady liczenia opisuje strona o inwentaryzacji, a rodzaje dokumentów opisują dokumenty magazynowe.
Dane kosztowe z magazynu trafiają do Symfonii w postaci gotowej do zaksięgowania. Rachunek zysków uwzględnia wtedy rzeczywisty koszt obsługi dostawy, a nie wyłącznie cenę zakupu. Dokumentację procesów magazynowych w ujęciu ogólnym opisuje strona o oprogramowaniu do zarządzania magazynem.
Plan wdrożenia integracji
Prace nad punktami styku API po stronie WMS i mechanizmem pobierającym po stronie ERP prowadzi się równolegle. Zespół ERP uzgadnia reguły bezpieczeństwa i autoryzacji, a zespół magazynowy odpowiada za format dokumentów.
| Faza | Zakres | Wynik |
|---|---|---|
| Analiza i definicja pól | zestaw pól dokumentu, statusy, reguły odrzucenia | uzgodniona specyfikacja punktów końcowych |
| Implementacja i testy wewnętrzne | budowa kolejki i łącznika pobierającego | działający obieg w środowisku testowym |
| Testy akceptacyjne UAT | sprawdzenie scenariuszy przez użytkowników ERP i magazynu | zatwierdzenie zgodności z procesem |
| Uruchomienie produkcyjne | przełączenie na obieg docelowy | praca w modelu pull |
Testy akceptacyjne obejmują scenariusze brzegowe, nie tylko ścieżkę bez błędów. Poniższe cztery sprawdza się przed uruchomieniem produkcyjnym.
- Odrzucenie dokumentu. ERP zgłasza błąd, a kolejka zatrzymuje się na tym dokumencie z zapisaną przyczyną.
- Przerwa ERP w trakcie pobierania. Po powrocie łączności łącznik wraca do pierwszego niepotwierdzonego dokumentu.
- Powtórzone potwierdzenie. Drugie wywołanie confirm dla tego samego dokumentu nie tworzy duplikatu.
- Brak stanu w ERP. Dokument wydania nie przechodzi, dopóki stan nie zostanie uzupełniony przez przyjęcie.
Podobne wymagania dotyczą innych systemów handlowych. Integrację z programem InsERT opisuje strona o Subiekt nexo PRO, a z systemem Asseco opisuje strona o integracji WAPRO z magazynem wysokiego składowania.
Pytania i odpowiedzi o integrację Symfonia ERP z WMS
W modelu push WMS wysyła dokument zaraz po operacji i musi liczyć, że ERP go przyjmie. W modelu pull Symfonia sama pyta o kolejny dokument i potwierdza jego zapis. Magazyn nie traci danych przy przerwie, a kolejność dokumentów pozostaje stała.
WMS zawsze udostępnia najstarszy nieprzetworzony dokument. Przyjęcie trafia do księgowości przed wydaniem tego samego towaru, więc ERP nie odrzuca operacji z powodu braku stanu wynikającego z odwróconej kolejności.
Łącznik wywołuje punkt końcowy reject i przekazuje przyczynę, na przykład brak stanu w ERP. WMS zapisuje błąd i wstrzymuje kolejkę. Po usunięciu przyczyny przetwarzanie rusza od tego samego dokumentu.
Nie. Operatorzy dalej przyjmują i wydają towar, a dokumenty czekają w kolejce. Po powrocie ERP łącznik nadrabia zaległości od najstarszego dokumentu, bez ręcznych poprawek.
Interfejs REST wymaga tokenu Bearer, a połączenie jest szyfrowane. Reguły autoryzacji uzgadnia się z programistami po stronie ERP, więc dostęp do stanów magazynowych i cen mają tylko uprawnione łączniki.
Glosariusz pojęć związanych z integracją Symfonia ERP z WMS
- Model pull
- Układ wymiany danych, w którym odbiorca, czyli ERP, sam pobiera dokumenty od nadawcy we własnym tempie.
- Model push
- Układ, w którym nadawca, czyli WMS, wysyła dokument do ERP natychmiast po wystąpieniu zdarzenia.
- FIFO
- First-In, First-Out. Zasada obsługi w kolejności napływu, stosowana tu do dokumentów oczekujących na przetworzenie.
- Kolejka dokumentów
- Lista dokumentów WMS oczekujących na pobranie przez ERP, ze statusem każdego z nich.
- Token Bearer
- Token przekazywany w nagłówku HTTP, który potwierdza uprawnienia klienta API bez przesyłania hasła w każdym żądaniu.
- Punkt końcowy
- Adres usługi REST, pod którym ERP wykonuje konkretną operację, na przykład pobranie lub potwierdzenie dokumentu.
- UAT
- User Acceptance Testing, testy akceptacyjne wykonywane przez użytkowników przed uruchomieniem produkcyjnym.
- Idempotentność
- Cecha operacji, której wielokrotne wykonanie daje taki sam skutek jak jednokrotne, co chroni przed duplikatami po ponowieniu.