HermesSQL i Studio WMS.net pracują na Microsoft SQL Server, ale każdy z nich ma własny model danych i własną logikę. Integracja musi ustalić, który system jest właścicielem danego rekordu, w jakiej kolejności przepływają dokumenty i co się dzieje po błędzie. Poniżej opisano poziomy integracji oraz scenariusze przyjęć i wydań. Osobna część dotyczy zasad projektowych dla zespołu IT.
Spis treści
- Poziomy integracji z HermesSQL
- Kto jest właścicielem danych
- Synchronizacja kartotek instrukcją MERGE
- Scenariusze przyjęć, wydań i inwentaryzacji
- Kolejka dokumentów z ponawianiem
- Pułapki mapowania danych
- Zastosowania według typu firmy
- Uruchomienie i lista kontrolna
- Pytania i odpowiedzi o integrację WMS z HermesSQL
- Glosariusz pojęć związanych z integracją HermesSQL i WMS
Poziomy integracji z HermesSQL
Integrację można zrealizować na czterech poziomach. Wybór zależy od tego, jakie interfejsy udostępnia dostawca ERP, jak szybko dane mają krążyć i jak duże jest ryzyko przerw. W jednym wdrożeniu zwykle łączy się dwa z nich: dane słownikowe przez bazę, a dokumenty przez kolejkę.
| Poziom | Metoda | Kierunek | Typowe zastosowanie |
|---|---|---|---|
| Baza danych | bezpośredni dostęp SQL lub widoki | dwukierunkowy | synchronizacja słowników i stanów |
| Pliki płaskie | CSV, XML lub EDI | dwukierunkowy | asynchroniczny import i eksport dokumentów |
| API lub web service | REST albo SOAP, jeśli dostępne | dwukierunkowy | wymiana w czasie rzeczywistym |
| Middleware i ETL | własny serwis Windows albo BizTalk | dwukierunkowy | złożone transformacje i kolejkowanie |
Obie bazy działają na MS SQL Server, więc możliwa jest integracja przez wspólną bazę albo przez linked servers. Takie połączenie wymaga otwartego dostępu między serwerami, co uzgadnia się z administratorem sieci. Opis aplikacji po stronie WMS znajduje się na stronie o systemie WMS.
Kto jest właścicielem danych
Pierwsza zasada projektowa brzmi: jedno źródło prawdy dla każdego bytu. Podział nie jest symetryczny, bo ERP odpowiada za handel, a WMS za fizyczny ruch towaru.
- Indeksy towarowe. ERP jest masterem, WMS otrzymuje dane i ich nie zmienia.
- Dane fizyczne. Masterem lokalizacji i stanów fizycznych jest WMS, a numerów partii także.
- Dokumenty handlowe. Faktury i zamówienia sprzedaży należą do ERP.
- Dokumenty magazynowe. PZ i WZ powstają operacyjnie w WMS, a finansowo należą do ERP. Tak samo działają przesunięcia MM.
Reguła: nie zapisuje się danych bezpośrednio do tabel produkcyjnych HermesSQL. System ma wewnętrzną logikę, w tym triggery i procedury składowane. Po jego stronie działają też numeratory dokumentów. Zapis powinien iść przez procedury udostępnione przez dostawcę, tabele pośrednie z własnymi procedurami importu albo wbudowany import plików XML lub CSV.
Synchronizacja kartotek instrukcją MERGE
Dane słownikowe płyną z HermesSQL do WMS cyklicznie, na przykład co 15 minut, albo zdarzeniowo przez trigger. Synchronizacja obejmuje indeksy z jednostkami miary i kodami EAN. Dołączają do nich grupy towarowe. Dochodzą kontrahenci i lokalizacje, a osobną grupę tworzą jednostki logistyczne, takie jak palety i kartony. Po stronie WMS zadanie odpytuje widok i uzupełnia własne tabele.
Operacja musi być bezpieczna przy wielokrotnym uruchomieniu. Instrukcja MERGE wykonuje wstawienie albo aktualizację w jednym przebiegu. Poniższy przykład jest ilustracyjny, a nazwy tabel i widoku nie pochodzą z HermesSQL ani ze Studio WMS.net.
MERGE dbo.Towary WITH (HOLDLOCK) AS cel
USING (SELECT Symbol, Nazwa, JednostkaMiary, Ean
FROM integracja.WidokTowarowERP) AS zrodlo
ON cel.Symbol = zrodlo.Symbol
WHEN MATCHED AND (cel.Nazwa <> zrodlo.Nazwa
OR cel.JednostkaMiary <> zrodlo.JednostkaMiary
OR ISNULL(cel.Ean, '') <> ISNULL(zrodlo.Ean, ''))
THEN UPDATE SET Nazwa = zrodlo.Nazwa,
JednostkaMiary = zrodlo.JednostkaMiary,
Ean = zrodlo.Ean
WHEN NOT MATCHED BY TARGET
THEN INSERT (Symbol, Nazwa, JednostkaMiary, Ean)
VALUES (zrodlo.Symbol, zrodlo.Nazwa, zrodlo.JednostkaMiary, zrodlo.Ean);
Warunek w klauzuli MATCHED ogranicza aktualizację do rekordów, które faktycznie się zmieniły. Podpowiedź HOLDLOCK zapobiega wyścigowi dwóch równoległych uruchomień, które mogłyby wstawić ten sam symbol. Składnię opisuje dokumentacja MERGE w T-SQL.
Scenariusze przyjęć, wydań i inwentaryzacji
| Scenariusz | Przepływ | Dokumenty | Dane krytyczne |
|---|---|---|---|
| Przyjęcie | ERP, WMS, ERP | zamówienie zakupu (ZZ) lub awizo, potem PZ | ilość rzeczywista, partia, data ważności, numer seryjny |
| Wydanie | ERP, WMS, ERP | zamówienie sprzedaży (ZS), potem WZ | ilość wydana, numery partii i serii, numer listu przewozowego |
| Inwentaryzacja | WMS do ERP | arkusz różnic, potem dokumenty korygujące PW i RW | moment zamrożenia stanów |
| Stany on-line | WMS do ERP | odczyt dostępności i rezerwacja | tabela buforowa, zapytanie przez linked server lub endpoint stanów |
Przy przyjęciu operator potwierdza w WMS rzeczywiste ilości i lokalizacje. Wpisuje też partie oraz serie, a WMS odsyła do HermesSQL dokument PZ z kompletem danych. ERP księguje go i aktualizuje stan. Uwaga dla programistów: HermesSQL nie ma natywnego pola na lokalizacje WMS, więc rozbieżności i adresy mapuje się na pole uwag dokumentu albo na dedykowaną cechę użytkownika.
Wydanie przebiega w odwrotnej kolejności: ERP generuje zamówienie sprzedaży, WMS planuje trasy kompletacji i generuje WZ z rzeczywistymi pozycjami. Ilość wydana może różnić się od zamówionej, na przykład przez brak albo substytut, więc potwierdzenie pozycji jest częścią komunikatu. Spis z natury w takim układzie opisuje strona o inwentaryzacji, a rodzaje dokumentów opisują dokumenty magazynowe.
Reguła: przed przekazaniem wyników inwentaryzacji do ERP trzeba uzgodnić moment zamrożenia stanów. WMS blokuje operacje na czas transferu danych, bo ruch w trakcie spisu zniekształciłby różnice.
Kolejka dokumentów z ponawianiem
Dokumenty magazynowe muszą dotrzeć do ERP także przy chwilowej niedostępności systemu. Rozwiązaniem jest tabela kolejki ze statusem i licznikiem prób. Zapisuje się w niej także ostatni błąd. Mechanizm ponawiania stosuje rosnące odstępy, a po przekroczeniu limitu prób wysyła alert.
CREATE TABLE integracja.queue_documents (
id bigint IDENTITY(1,1) PRIMARY KEY,
doc_type varchar(10) NOT NULL,
status varchar(10) NOT NULL DEFAULT 'NEW',
retry_count int NOT NULL DEFAULT 0,
last_error nvarchar(400) NULL,
created_at datetime2 NOT NULL DEFAULT SYSUTCDATETIME()
);
SELECT id, doc_type, retry_count, last_error
FROM integracja.queue_documents
WHERE status = 'ERROR' AND retry_count >= 3;
Schemat jest ilustracyjny. Drugie zapytanie wskazuje dokumenty, które wymagają reakcji człowieka. Minimalny zestaw alertów obejmuje cztery sytuacje.
- Brak połączenia z bazą. Błąd połączenia z którąkolwiek bazą trwa dłużej niż 5 minut.
- Dokument w stanie ERROR. Licznik prób wynosi co najmniej 3.
- Desynchronizacja stanów. Różnica między WMS a ERP przekracza ustalony odsetek.
- Czas przetwarzania. Dokument, na przykład PZ, jest przetwarzany dłużej niż ustalony próg, na przykład 30 sekund.
Pułapki mapowania danych
| Problem | Rozwiązanie |
|---|---|
| Różne kody towarów w WMS i ERP | tabela mapowań, na przykład map_indeksy, z kodem WMS i symbolem ERP |
| Niezgodne jednostki miary | tabela przeliczników, bo WMS operuje na sztukach i paletach, a ERP może mieć kilogramy |
| Kontrahenci bez mapowania | synchronizacja po NIP lub kodzie kontrahenta, nie po nazwie |
| Dokumenty walutowe | wartości po stronie WMS zawsze w PLN |
| Strefy czasowe i czas letni | znaczniki czasu w UTC, konwersja przy wyświetlaniu |
Pułapki wychodzą zwykle w pierwszym tygodniu pracy produkcyjnej. Tabela mapowań działa wtedy jak słownik tłumaczeń i jest jedynym miejscem, które trzeba poprawić.
Zastosowania według typu firmy
| Typ firmy | Co przepływa | Efekt |
|---|---|---|
| Produkcja | zlecenia produkcyjne z HermesSQL do WMS, rozchody materiałów do modułu produkcji | krótsze przygotowanie materiałów na linię i inwentaryzacja bez zatrzymania produkcji |
| Dystrybucja | zamówienia sprzedaży do kolejki kompletacji, stany z powrotem do ERP | mniej błędnych wysyłek, brak sprzedaży towaru, którego nie ma |
| Wiele magazynów | dokumenty MM po wydaniu z lokalizacji źródłowej | spójne opisy i jednostki oraz konsolidacja raportów w ERP |
| E-commerce | zamówienia z kanałów online przez ERP do WMS, zwroty z WMS do ERP | stan aktualizowany po wydaniu paczki, obsługa zwrotów i reklamacji |
Uruchomienie i lista kontrolna
Integrację testuje się zawsze na kopii bazy produkcyjnej. Dla każdej zmiany schematu przygotowuje się skrypt wycofania. Pierwsze uruchomienie produkcyjne trwa 24 godziny w trybie tylko do odczytu, a dopiero potem włącza się zapis. Serwis integracyjny, uruchamiany jako usługa Windows albo zadanie SQL Agent, działa osobno dla każdego kierunku, a konfigurację trzyma poza kodem.
- Model danych. Tabela mapowań obejmuje wszystkie encje i jest uzgodniona z obiema stronami.
- Reguły konfliktu. Ustala się, co się dzieje, gdy oba systemy zmienią ten sam rekord.
- Scenariusze brzegowe. Sprawdza się brak towaru w WMS, zerową ilość na PZ i anulowanie dokumentu w ERP po przyjęciu.
- Pełna resynchronizacja. Procedura działa na wypadek poważnej desynchronizacji i ma własny plan kopii zapasowej.
Terminale z Androidem opisuje strona o WMS na Androida. Układ regałów opisuje zarządzanie magazynem wysokiego składowania, a ogólne zasady obiegu oprogramowanie do zarządzania magazynem. Przestrzenny kontekst hali przedstawia strona o magazynie wysokiego składowania.
Dane z wielu magazynów zbiera program magazynowy online. Partie i numery seryjne, które przy pełnej identyfikowalności przekazuje się przy każdym ruchu, opisuje strona o partiach produkcyjnych i datach ważności. Różnice między systemami nadrzędnymi opisuje strona WMS a SAP.
Pytania i odpowiedzi o integrację WMS z HermesSQL
Na czterech: przez bazę danych lub widoki, przez pliki płaskie CSV albo XML, przez API albo web service oraz przez middleware z kolejkowaniem. W jednym wdrożeniu często łączy się dwa poziomy, na przykład bazę dla słowników i kolejkę dla dokumentów.
System ma wewnętrzną logikę, w tym triggery i procedury składowane. Zapis wprost omija te mechanizmy. Bezpieczne ścieżki to procedury od dostawcy, tabele pośrednie z własnym importem albo import plików XML lub CSV.
ERP jest masterem indeksów towarowych i dokumentów handlowych. WMS jest masterem lokalizacji i stanów fizycznych. Dokumenty PZ i WZ powstają operacyjnie w WMS, a finansowo należą do ERP.
Dokument zostaje w tabeli kolejki ze statusem i licznikiem prób. Mechanizm ponawia wysyłkę z rosnącym odstępem, a po przekroczeniu limitu prób zgłasza alert. Operatorzy w magazynie pracują dalej.
Adres lokalizacji mapuje się na pole uwag dokumentu albo na dedykowaną cechę użytkownika. Pełna historia miejsc składowania pozostaje w WMS, który jest masterem lokalizacji.
Glosariusz pojęć związanych z integracją HermesSQL i WMS
- HermesSQL
- System ERP firmy Humansoft działający na Microsoft SQL Server, partner integracji ze Studio WMS.net po stronie handlowej i księgowej.
- Master danych
- System będący jedynym miejscem zapisu danego rekordu. Drugi system otrzymuje jego kopię i jej nie zmienia.
- Staging
- Tabela pośrednia, do której trafiają dane przed importem do systemu docelowego. Chroni tabele produkcyjne przed bezpośrednim zapisem.
- MERGE
- Instrukcja T-SQL wykonująca wstawienie, aktualizację lub usunięcie rekordów w jednym przebiegu, według warunku porównania źródła i celu.
- Linked server
- Połączenie SQL Server z drugim serwerem bazodanowym, które pozwala odpytywać obce tabele zapytaniem SQL.
- Idempotentność
- Cecha operacji, której powtórzenie daje ten sam skutek co jedno wykonanie, co chroni przed duplikatami.
- Ponawianie z rosnącym odstępem
- Exponential backoff, w którym kolejne próby wysyłki następują w coraz dłuższych odstępach czasu.
- Zamrożenie stanów
- Wstrzymanie operacji magazynowych na czas przekazania wyników inwentaryzacji, aby ruch nie zniekształcił różnic.
- Tabela mapowań
- Słownik tłumaczący kody, jednostki i identyfikatory jednego systemu na odpowiedniki w drugim.