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.

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.

CechaModel pushModel pull
Kto inicjuje przesyłWMS po każdej operacjiSymfonia, w swoim tempie
Kolejność dokumentówbrak gwarancji przy błędach siecizawsze od najstarszego (FIFO)
Przerwa w działaniu ERPryzyko utraty lub duplikatukolejka czeka i zostaje nadrobiona
Widoczność statusurozproszone logi nadawcyjedno miejsce z statusem każdego dokumentu
Wpływ na pracę magazynubłędy mogą blokować operacjemagazyn 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.

  1. Zapytanie o status. Symfonia pyta, czy jest nowy dokument. WMS zwraca najstarszy nieprzetworzony, zgodnie z kolejnością FIFO.
  2. Pobranie szczegółów. ERP odbiera pełny pakiet danych: identyfikatory oraz pozycje wraz z ilościami.
  3. Zapis lokalny. Symfonia zapisuje dokument we własnej bazie danych.
  4. 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.

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.

Efektywna kalkulacja zysku w logistyce - Studio WMS.net
Kalkulacja zysku netto w Studio WMS.net - od ceny sprzedaży odejmowane są pełne koszty operacyjne, a nie tylko cena zakupu

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.

FazaZakresWynik
Analiza i definicja pólzestaw pól dokumentu, statusy, reguły odrzuceniauzgodniona specyfikacja punktów końcowych
Implementacja i testy wewnętrznebudowa kolejki i łącznika pobierającegodziałający obieg w środowisku testowym
Testy akceptacyjne UATsprawdzenie scenariuszy przez użytkowników ERP i magazynuzatwierdzenie zgodności z procesem
Uruchomienie produkcyjneprzełączenie na obieg docelowypraca w modelu pull

Testy akceptacyjne obejmują scenariusze brzegowe, nie tylko ścieżkę bez błędów. Poniższe cztery sprawdza się przed uruchomieniem produkcyjnym.

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.

Warto przeczytać