W skrócie

W opisywanym wdrożeniu dokumenty magazynu zewnętrznego leżą w osobnej bazie, a menu, rejestry i zapisane zapytania zostają w bazie głównej. Formularz nie zna nazwy bazy dokumentów, bo połączenie jest zapisane przy zapytaniu, a obie bazy odwołują się do siebie po pełnej nazwie obiektu.

Administrator, który ma oddzielić dokumenty magazynu zewnętrznego od własnych, a konfigurację aplikacji zachować w jednym miejscu, musi rozstrzygnąć, gdzie leży co. Opisujemy, jak rozwiązano to w jednym wdrożeniu Studio WMS.net: magazyn zewnętrzny w WMS dostał osobną bazę dokumentów (według dokumentacji jest to magazyn obsługiwany przez operatora logistycznego), a konfiguracja pozostała w bazie głównej.

Tekst jest napisany dla administratora i architekta wdrożenia. Opisujemy zapytania i skrypt wdrożeniowy, ale bez nazw obiektów bazy z wdrożenia i bez liczby dokumentów. Model odwrotny, w którym jedna baza obsługuje wiele obiektów, opisuje strona o operatorze logistycznym w systemie WMS, a wspólną bazę stanów dla oddziałów strona o zarządzaniu wieloma magazynami.

Dwie bazy i jedna konfiguracja

W opisywanym wdrożeniu dokumenty magazynu zewnętrznego leżą w osobnej bazie, we własnej tabeli dokumentów. Menu i rejestry oraz transakcje formularzy zostają w bazie głównej. Tam zostają też słowniki i zapisane zapytania.

Aplikacja jest jedna i ma jedną konfigurację w bazie głównej. Formularze magazynu zewnętrznego to osobne transakcje, które czytają i zapisują dokumenty w bazie dokumentów. Dla administratora oznacza to jedno miejsce, w którym zmienia się menu i zapisane zapytania, i drugie, w którym leżą dokumenty. Obsługę wielu klientów w jednej hali opisuje strona o WMS dla operatorów logistycznych, a tutaj chodzi o dokumenty jednego magazynu w osobnej bazie.

Tabela pokazuje, co leży w której bazie.

ElementBaza głównaBaza dokumentów
Dokumenty magazynu zewnętrznegonietak
Menu i rejestrytaknie
Kartoteka lokalizacji i licznik numeracjitaknie
Funkcje list i widok stanunietak
Schemat: aplikacja, baza główna z konfiguracją i baza dokumentów magazynu zewnętrznego, odwołania po pełnej nazwie.
Schemat pokazuje aplikację wołającą zapytania po identyfikatorze, bazę główną z konfiguracją, bazę dokumentów magazynu zewnętrznego i odwołania między bazami po pełnej nazwie. Pasek na dole oznacza jeden serwer SQL, co jest wnioskiem z postaci zapytań. Kliknij obraz, aby go powiększyć.
Formularz nie zna nazwy bazy dokumentów, bo połączenie jest zapisane przy zapytaniu, a odwołania między bazami idą po pełnej nazwie.

Połączenie zapisane przy zapytaniu, a nie w formularzu

Każde zapisane zapytanie ma przypisane połączenie. Formularz woła zapytanie po identyfikatorze, a serwer wykonuje je na połączeniu zapisanym przy zapytaniu. Kod formularza nie zawiera więc nazwy bazy. O tym, do której bazy trafia zapytanie, decyduje jego wpis w konfiguracji, a nie plik skryptu formularza.

Formularze magazynu zewnętrznego korzystają z zapytań wspólnych z formularzem przyjęcia ze zlecenia: trzy rodzaje zapytań, czyli listy pozycji, sumy i edycja, są te same.

Transakcja formularza to wpis z trzema ustawieniami: plikiem skryptu, funkcją startową i sposobem powrotu. Znacznik wersji w adresie pliku wymusza ponowne pobranie skryptu przez przeglądarki po zmianie. Podobny mechanizm transakcji i znaczników wersji opisuje artykuł o testowaniu nowych transakcji terminala.

Odwołania między bazami po pełnej nazwie

Zapytania wykonywane na połączeniu bazy dokumentów sięgają do bazy głównej po pełnej nazwie obiektu, czyli po nazwie złożonej z trzech części: bazy, schematu i samego obiektu. Robią to w trzech miejscach: po adres lokalizacji z kartoteki lokalizacji, po numer dokumentu z procedury numeracji i przy zapisie wpisu w dzienniku zdarzeń.

W drugą stronę rejestry dokumentów i licznik dokumentów w buforze przy pozycji menu odwołują się do bazy dokumentów po pełnej nazwie obiektu. Konfiguracja w bazie głównej pokazuje więc dokumenty z drugiej bazy bez przenoszenia ich.

Odwołanie po pełnej nazwie działa w obrębie jednego serwera SQL. W opisywanym wdrożeniu przyjmujemy więc, że obie bazy stoją na jednym serwerze. Jest to wniosek z postaci zapytań, a nie ustalenie z konfiguracji serwera.

Numeracja z bazy głównej dla dokumentów w bazie dokumentów

Numerację dokumentów prowadzi baza główna. Licznik jest zapisany osobno dla roku i dla pary prefiks-typ dokumentu. Zapytanie zatwierdzające, wykonywane na połączeniu bazy dokumentów, pobiera numer z procedury numeracji w bazie głównej, więc dokument leży w jednej bazie, a jego numer pochodzi z drugiej.

Jeden z formularzy magazynu zewnętrznego, przyjęcie bezpośrednie, ma własną parę prefiksu i typu, więc ma własny licznik.

Numer mieści się w dwudziestu znakach: taka jest pojemność zmiennej, do której przyjmuje się wynik procedury numeracji. Długość pola w tabeli dokumentów magazynu zewnętrznego nie została sprawdzona, więc przy integracji z systemem zewnętrznym trzeba ją uzgodnić osobno. Maski i liczniki w innym wdrożeniu opisuje strona o numeracji dokumentów KM i PM.

Stan magazynu zewnętrznego i właściciel towaru na pozycji

Stan magazynu zewnętrznego czyta osobny widok stanu per lokalizacja, wzorowany na standardowym i rozróżniający także dostawcę. Jego treści nie opisujemy.

Według dokumentacji skryptu wdrożeniowego stan rozróżnia osiem cech: firmę będącą właścicielem towaru, dostawcę, asortyment, lokalizację, paletę, partię, termin ważności i datę produkcji.

Na każdej pozycji dokumentu zapisują się firma, czyli właściciel towaru, i dostawca, czyli kontrahent z kartoteki dostawców. Model właściciela i dostawy opisuje artykuł o stanie magazynu per dostawa i właściciel.

Wdrożenie skryptem, który wie, na której bazie pracuje

Skrypt wdrożeniowy wykonuje się w bazie głównej i zaczyna od kontroli nazwy bazy: przy innej bazie zatrzymuje się z komunikatem. Każdy element jest sprawdzany przed dodaniem, więc ponowne wykonanie niczego nie dubluje.

Funkcję listy dokumentów skrypt tworzy w bazie dokumentów przez wywołanie procedury systemowej w kontekście tej bazy. Definicję bierze z istniejącej funkcji listy przyjęć i podmienia w niej typ dokumentu. Gdy podmiana nie trafiła, zatrzymuje się z błędem.

Pozycje menu dla nowych formularzy skrypt dodaje roli działu zamówień, a na końcu uruchamia zapytanie kontrolne, które sprawdza, czy inne role nie dostały nowych pozycji.

Ogólną praktykę skryptów wdrożeniowych, z trybem próbnym i osobną rolą testową, opisuje wspomniany wyżej artykuł o testowaniu nowych transakcji terminala. Tutaj liczy się to, że skrypt zna bazę, na której pracuje, i dotyka dwóch baz.

Przykład: administrator wdraża nową funkcję magazynu zewnętrznego

Przykład ze zmyślonymi danymi. Administrator wdraża nową funkcję magazynu zewnętrznego i uruchamia skrypt w bazie głównej. Skrypt najpierw sprawdza nazwę bazy i zatrzymuje się, gdy otwarto inną.

Potem dodaje zapytania z połączeniem do bazy dokumentów i wpis transakcji formularza, a w bazie dokumentów tworzy funkcję listy dokumentów. Kontrolne zapytanie po wdrożeniu zwraca w naszym przykładzie cztery sprawdzenia: dwa zapisane zapytania z połączeniem do bazy dokumentów, funkcję listy utworzoną w bazie dokumentów, dwa rejestry w bazie głównej i wpis transakcji formularza.

Wynik kontroli po wdrożeniu: cztery sprawdzenia konfiguracji i wynik każdego w siatce.
Makieta poglądowa, dane przykładowe. Okno wyniku zapytania pokazuje cztery sprawdzenia konfiguracji i wynik każdego w siatce. Kliknij obraz, aby go powiększyć.

Rejestry dokumentów w menu i licznik dokumentów w buforze odwołują się potem do bazy dokumentów po pełnej nazwie obiektu, a formularz nadal nie zna nazwy bazy.

Pytania do zadania na etapie analizy

Przed rozdzieleniem dokumentów na dwie bazy zadajemy cztery pytania. To pytania do czytelnika, a nie fakty o opisywanym wdrożeniu. Rolę administratora opisuje strona o zadaniach administratora systemu WMS, a przebieg projektu strona o wdrożeniu systemu WMS.

  • Rozdzielenie dokumentów - dlaczego dokumenty operatora mają być oddzielone od własnych i kto ma mieć dostęp do bazy dokumentów.
  • Serwer i kopie zapasowe - czy obie bazy mogą działać na jednym serwerze i kto odpowiada za kopie zapasowe każdej z nich.
  • Kartoteki wspólne - które kartoteki mają zostać wspólne, a które mają mieć własną kopię w bazie dokumentów.
  • Numeracja - jak ma wyglądać numeracja dokumentów magazynu zewnętrznego i ile znaków ma mieścić numer.

Czego ta strona nie opisuje

Strona nie podaje nazw obiektów bazy z wdrożenia, nazw ról, kodów menu ani liczby dokumentów. Nie wyjaśnia powodu podziału na dwie bazy i nie opisuje wymiany plików z operatorem ani wydań z magazynu zewnętrznego. Opisuje budowę zapytań i skryptu, a nie sposób użycia formularzy przez użytkowników.

Pytania i odpowiedzi o osobnej bazie dokumentów magazynu zewnętrznego

Czy formularz musi znać nazwę drugiej bazy?

Nie. Każde zapisane zapytanie ma przypisane połączenie, formularz woła zapytanie po identyfikatorze, a serwer wykonuje je na połączeniu zapisanym przy zapytaniu. Kod formularza nie zawiera nazwy bazy.

Skąd dokument magazynu zewnętrznego bierze numer?

Numerację prowadzi baza główna: licznik jest zapisany osobno dla roku i dla pary prefiks-typ dokumentu. Zapytanie na połączeniu bazy dokumentów pobiera numer z procedury numeracji po pełnej nazwie obiektu. Numer mieści się w dwudziestu znakach.

Jak rejestr w bazie głównej pokazuje dokumenty z bazy dokumentów?

Rejestry dokumentów i licznik dokumentów w buforze przy pozycji menu odwołują się do bazy dokumentów po pełnej nazwie obiektu. Odwołanie działa w obrębie jednego serwera SQL, więc w opisywanym wdrożeniu obie bazy stoją na jednym serwerze.

Po jakich cechach system rozróżnia stan magazynu zewnętrznego?

Według dokumentacji skryptu wdrożeniowego stan rozróżnia osiem cech: firmę będącą właścicielem towaru, dostawcę, asortyment, lokalizację, paletę, partię, termin ważności i datę produkcji. Czyta go osobny widok stanu per lokalizacja.

Jak skrypt wdrożeniowy chroni przed uruchomieniem na złej bazie?

Skrypt wykonuje się w bazie głównej i zaczyna od kontroli nazwy bazy. Przy innej bazie zatrzymuje się z komunikatem. Każdy element jest sprawdzany przed dodaniem, więc ponowne wykonanie niczego nie dubluje.

Słownik pojęć o bazie dokumentów magazynu zewnętrznego

Terminy używane przez administratora i architekta wdrożenia, gdy dokumenty magazynu leżą w osobnej bazie.

Baza dokumentów
Osobna baza, w której leżą dokumenty magazynu zewnętrznego, we własnej tabeli dokumentów. W opisywanym wdrożeniu formularze magazynu zewnętrznego czytają ją i zapisują do niej przez zapytania z odpowiednim połączeniem.
Baza główna
Baza z konfiguracją aplikacji, w tym menu i zapisanymi zapytaniami. W opisywanym wdrożeniu prowadzi też numerację dokumentów.
Połączenie zapisanego zapytania
Przypisanie bazy do zapytania zapisanego w konfiguracji. Formularz woła zapytanie po identyfikatorze, a serwer wykonuje je na tym połączeniu, więc kod formularza nie zawiera nazwy bazy.
Pełna nazwa obiektu
Nazwa obiektu bazy złożona z trzech części: bazy, schematu i samego obiektu. Pozwala zapytaniom jednej bazy sięgać do drugiej w obrębie jednego serwera SQL.
Licznik numeracji
Wartość zapisana w bazie głównej, z której procedura numeracji nadaje kolejny numer. W opisywanym wdrożeniu jest osobny dla roku i dla pary prefiks-typ dokumentu.
Widok stanu
Widok, z którego odczytuje się stan magazynu per lokalizacja. W opisywanym wdrożeniu magazyn zewnętrzny ma osobny widok stanu, wzorowany na standardowym.
Transakcja formularza
Wpis w konfiguracji z trzema ustawieniami formularza: plikiem skryptu, funkcją startową i sposobem powrotu. Znacznik wersji w adresie pliku wymusza ponowne pobranie skryptu przez przeglądarki.

Opisz nam podział dokumentów na bazy

Podaj, czy dokumenty magazynu obsługiwanego przez operatora mają leżeć osobno i kto ma mieć do nich dostęp, a przygotujemy plan analizy.