Przez wiele lat terminale radiowe z Windows Mobile były standardowym wyposażeniem magazynów. Operator dostawał urządzenie z klawiaturą i skanerem, a aplikacja mobilna łączyła się z bazą SQL Server systemu Studio WMS.net i prowadziła go przez operacje na palecie, od przyjęcia po wydanie.

Ten tekst opisuje, jak działał taki terminal: role logowania, konfigurację połączenia z bazą i cztery moduły programu. Druga część wyjaśnia, dlaczego platforma wyszła z użycia i jak ocenić moment wymiany sprzętu. Sam proces przenoszenia terminali opisuje artykuł o migracji z Windows CE i Windows Mobile na Android, a szerszy kontekst aplikacji dla tych platform strona aplikacje dla Windows CE / mobile.

Windows Mobile w magazynie WMS - model pracy terminala

Program WMS mobile to aplikacja zainstalowana na terminalu radiowym z Windows Mobile. Materiały SoftwareStudio pokazują ją na przykładzie terminala Motorola Symbol MC9090. Każdy użytkownik programu jest przypisany do określonej roli w systemie Studio WMS.net, a terminal łączy się z serwerem przez sieć Wi-Fi hali.

Praca opiera się na podziale zadań. Biuro rejestruje dokumenty magazynowe w programie na stanowisku komputerowym, a magazynier potwierdza na terminalu fizyczne wykonanie ruchu. Ten podział pozostaje aktualny na Androidzie, zmienia się tylko urządzenie. Rodzaje dokumentów opisuje tekst o dokumentach magazynowych w systemie WMS.

OperacjaRola biura na stanowisku komputerowymRola magazyniera na terminalu
Przyjęcierejestruje dokument PZ i wyznacza lokalizacjęskanuje nośnik, potwierdza miejsce składowania
Wydaniewystawia dokument WZpotwierdza pobranie kolejnych nośników z dokumentu
Przeniesienienie uczestniczy w operacjipodaje nośnik i miejsce docelowe
Wyszukiwanie towarunie uczestniczy w operacjisprawdza, gdzie leży towar

Reguła: dokument tworzy biuro, a terminal potwierdza fizyczny ruch palety.

Terminal przemysłowy z klawiaturą numeryczną i kolorowym ekranem na tle regałów magazynowych
Terminal z klawiaturą numeryczną, typowy dla starszych platform. Ilustracja odnosi się do modelu pracy z klawiszami fizycznymi.

Role logowania i konfiguracja połączenia z bazą

Przy uruchomieniu programu trzeba zalogować się do jednej z dwóch ról.

  • Setup - elementy administracyjne programu, w tym konfiguracja połączenia z bazą SQL Server.
  • LOGUJ - Magazyn - logowanie do głównego modułu obsługi magazynu.

Rola Setup jest używana rzadko, przy instalacji terminala i przy zmianie serwera, a rola LOGUJ służy do codziennej pracy. Ten podział ma skutek organizacyjny: hasło do konfiguracji zna administrator, a nie magazynier, więc parametry połączenia nie zmieniają się przypadkowo w trakcie zmiany.

Po wybraniu opcji Setup wyświetla się okno logowania administratora, które domyślnie zabezpiecza hasło startowe 123. Skoro hasło to podaje dokumentacja, jest ono publicznie znane i powinno zostać zmienione zaraz po instalacji. W oknie konfiguracji definiuje się parametry połączenia.

ParametrCo określaUwaga praktyczna
Adres IP serwera SQLgdzie terminal szuka bazyadres stały albo rezerwacja w DHCP, bo zmiana adresu odcina flotę
Nazwa bazy danychz którą bazą następuje połączenieprzy bazie testowej i produkcyjnej łatwo pomylić nazwy
Sposób autoryzacjilogowanie SQL albo zintegrowaneod wyboru zależy, gdzie przechowuje się hasło
Użytkownik i hasłodane konta dla autoryzacji SQLkonto z minimalnymi uprawnieniami
Hasło pliku konfiguracjidostęp do modułu Setupzmieniane niezależnie od hasła do bazy
Identyfikator terminalaodróżnia urządzenia w ramach firmymusi być unikalny, inaczej operacje z różnych terminali się mieszają

Autoryzacja SQL i zasada minimalnych uprawnień

Terminal łączący się bezpośrednio z bazą używa konta SQL, a więc konto to powinno mieć tylko prawa potrzebne do wykonywania procedur, a nie rolę właściciela bazy. Wybór między autoryzacją SQL a zintegrowaną opisuje dokumentacja Microsoft Learn o trybach uwierzytelniania. Poniższy przykład T-SQL przyznaje kontu terminala wyłącznie prawo wykonywania procedur ze wskazanego schematu. Nazwy są przykładowe i nie odpowiadają schematowi konkretnego produktu.

CREATE LOGIN terminal_magazyn WITH PASSWORD = N'<haslo>', CHECK_POLICY = ON;

USE MagazynPrzyklad;
CREATE USER terminal_magazyn FOR LOGIN terminal_magazyn;

-- terminal wywołuje tylko procedury ze schematu terminal
GRANT EXECUTE ON SCHEMA::terminal TO terminal_magazyn;

W tym modelu każdy terminal zna dane logowania do bazy, więc zgubione urządzenie oznacza konieczność zmiany hasła konta. To jeden z powodów, dla których nowsze aplikacje mobilne często łączą się z serwerem aplikacyjnym, a nie wprost z SQL Server.

Cztery moduły programu na terminalu

Menu główne wyświetla się w panelu głównym i jest zbudowane z ikon, które uruchamiają poszczególne moduły. Program składa się z czterech modułów.

  1. Wyszukiwanie towaru - sprawdzenie, w której lokalizacji leży dany towar.
  2. Przyjęcia do magazynu - potwierdzenie umieszczenia palety w miejscu wyznaczonym przez biuro.
  3. Wydania z magazynu - seryjne potwierdzanie pobrania nośników z dokumentu, opisane szerzej w tekście o wydaniu z magazynu.
  4. Przeniesienie palety - zmiana miejsca położenia nośnika z jednej lokalizacji na inną.

Przyjęcie do magazynu na terminalu z Windows Mobile

Potwierdzanie przyjęcia opiera się na dokumentach PZ rejestrowanych przez biuro w programie Studio WMS.net. Proces rozpoczyna się od podania numeru nośnika, czyli zeskanowania numeru karty paletowej. Na górnym panelu ekranu wyświetla się numer nośnika oraz lokalizacja, którą biuro wyznaczyło dla palety. Ogólny opis tego etapu zawiera tekst o przyjęciu do magazynu.

Po dowiezieniu palety na wskazane miejsce magazynier potwierdza umieszczenie, skanując etykietę miejsca składowania. Gdy etykieta jest nieczytelna, adres można wpisać z klawiatury. Jeśli podany zostanie tylko rząd i kolumna, program wyświetla dostępne miejsca na danym poziomie składowania, więc magazynier wybiera wolne z listy zamiast szukać go wzrokiem.

Zmiana miejsca składowania

Funkcja przenoszenia zmienia lokalizację palety z jednego gniazda paletowego na inne. W pierwszym kroku magazynier podaje numer nośnika albo adres, z którego przenosi paletę, a następnie miejsce docelowe. Po zaakceptowaniu program przenosi paletę w bazie.

Po stronie bazy taka operacja powinna być jedną transakcją. Warunek w klauzuli WHERE sprawdza, czy nośnik nadal leży w lokalizacji źródłowej, więc dwa terminale nie przeniosą tej samej palety jednocześnie. Przykład poniżej używa przykładowych nazw.

SET XACT_ABORT ON;
BEGIN TRANSACTION;

UPDATE dbo.Nosnik
SET LokalizacjaId = @DocelowaId
WHERE NosnikId = @NosnikId
  AND LokalizacjaId = @ZrodlowaId;

IF @@ROWCOUNT <> 1
BEGIN
    ROLLBACK TRANSACTION;
    THROW 50001, N'Nośnik nie leży w lokalizacji źródłowej.', 1;
END;

INSERT INTO dbo.RuchNosnika (NosnikId, ZLokalizacji, DoLokalizacji, Czas)
VALUES (@NosnikId, @ZrodlowaId, @DocelowaId, SYSUTCDATETIME());

COMMIT TRANSACTION;

Wydanie z magazynu na terminalu z Windows Mobile

Wydanie polega na seryjnym potwierdzaniu nośników zapisanych w dokumencie WZ, który biuro wystawiło w programie Studio WMS.net. Proces przebiega w czterech krokach.

  1. Wybór dokumentu - magazynier skanuje numer dokumentu WZ albo wpisuje go z klawiatury, a numer wyświetla się w górnej części ekranu.
  2. Podanie nośnika - kod karty paletowej skanuje się lub wpisuje ręcznie.
  3. Kontrola zawartości - program pokazuje zawartość palety i jej lokalizację w magazynie.
  4. Akceptacja - duży przycisk AKCEPTUJ potwierdza pobranie palety z miejsca składowania.

Terminal nie decyduje, co wydać, bo lista nośników wynika z dokumentu. Dzięki temu obsługa wydania jest precyzyjna, a ryzyko niezgodności między dokumentem a fizycznym stanem palety spada. Zestawienie pozycji do pobrania, w innym układzie, opisuje tekst o liście pobrań (picking list).

Ergonomia terminala w codziennej pracy

Terminale tej klasy miały zwykle klawiaturę numeryczną, którą operator obsługiwał kciukiem bez patrzenia na ekran, oraz skaner laserowy odczytujący kody liniowe. Ilość wpisywało się klawiszami, a potwierdzenie następowało po jednym naciśnięciu przycisku. Ta ergonomia była powodem, dla którego część magazynów zwlekała z wymianą sprzętu.

Ograniczenia ujawniały się przy kodach dwuwymiarowych, których skaner laserowy nie czyta, oraz przy małym ekranie, na którym mieściło się niewiele pozycji listy. Ekrany rezystancyjne wymagały nacisku, więc obsługa w rękawicach zależała od grubości materiału. Nowsze terminale z Androidem oferują skaner 2D i większy ekran dotykowy, a wybór między klawiaturą fizyczną a dotykiem opisano w tekście o kolektorze danych.

Osobnym problemem jest bateria. Po latach eksploatacji ogniwa tracą pojemność, część floty nie dowozi pełnej zmiany, a baterie do modeli wycofanych z oferty bywają trudniej dostępne. Wymiana ogniw w starym terminalu przedłuża jego życie, ale nie usuwa braku poprawek systemu.

Pracownica magazynu w kurtce roboczej trzyma kompaktowy terminal mobilny z wykresem na ekranie
Kompaktowy terminal z ekranem dotykowym jako następca urządzeń z klawiaturą. Ilustracja odnosi się do porównania platform w kolejnej sekcji.

Koniec wsparcia Windows Mobile i skutki dla magazynu

Microsoft podaje w dokumentacji cyklu życia, że rozszerzone wsparcie dla Windows Embedded Handheld 6.5, czyli platformy sprzedawanej wcześniej jako Windows Mobile 6.5, zakończyło się w styczniu 2020 roku. Dane produktu zawiera strona cyklu życia Windows Embedded Handheld 6.5. Od tej daty platforma nie otrzymuje poprawek.

Skutki dla magazynu widać stopniowo. Terminal działa, dopóki działa jego bateria i sieć, ale każda nowa luka w zabezpieczeniach zostaje niezałatana, a producenci przenieśli ofertę sprzętu na Androida. Zestawienie poniżej porównuje obie platformy pod kątem, który ma znaczenie w hali.

KryteriumWindows MobileAndroid
Poprawki bezpieczeństwabrak od końca wsparciazależne od producenta urządzenia, deklarowane w karcie produktu
Szyfrowanie transmisjistarsze platformy zwykle nie obsługują aktualnych wersji TLSaktualne wersje protokołów obsługiwane przez system
Oferta sprzętuterminale wycofywane z oferty producentówszeroka oferta kolektorów i tabletów
Zarządzanie flotąograniczone, zależne od narzędzi producentasystemy MDM z rejestracją i zdalnymi aktualizacjami
Ekranczęsto rezystancyjny, obsługa rysikiem lub klawiszamipojemnościowy, obsługa dotykiem, także w trybie rękawic

Do czasu wymiany terminali bez poprawek warto ograniczyć ryzyko technicznie. Urządzenia umieszcza się w osobnej sieci Wi-Fi, w której ruch dozwolony jest wyłącznie do serwera bazy, a dostęp do Internetu jest zablokowany. Konto SQL floty ma minimalne uprawnienia, a hasło pliku konfiguracji różni się od hasła startowego. Takie środki nie usuwają braku poprawek, ale ograniczają skutki ewentualnego włamania.

Zarządzanie flotą po stronie Androida opisuje artykuł o programie magazynowym na Androida i wdrożeniu przez MDM. Dobór urządzenia pod względem klasy szczelności i modułu skanującego omawia tekst o kolektorze danych Android WMS.

Windows czy Android WMS - kryteria decyzji o migracji

Wymiana terminali nie musi oznaczać jednoczesnej zmiany wszystkiego. Zanim zapadnie decyzja, trzeba zdefiniować procesy, które terminal wykonuje, i sprawdzić, które moduły aplikacji są w codziennym użyciu. Wersję aplikacji na Androida opisuje tekst WMS Android.

  • Wiek i stan floty - urządzenia po długiej eksploatacji mają zużyte baterie i uszkodzone klawiatury, więc koszt utrzymania rośnie.
  • Wymagania bezpieczeństwa - platforma bez poprawek nie spełni polityki firmy, która wymaga aktualnych łatek.
  • Zakres używanych modułów - jeśli terminal służy tylko do przyjęć i wydań, migracja jest prostsza niż przy pełnym zestawie czterech modułów.
  • Okres przejściowy - część floty można wymieniać etapami, zostawiając stare terminale tam, gdzie ryzyko jest mniejsze.

Reguła: migrację planuje się według stref i zmian, a nie według daty zakupu terminala.

Przed decyzją opłaca się zmierzyć, ile operacji dziennie wykonuje jedno urządzenie i jak dzielą się one między przyjęcia i wydania. Pomiar pokazuje, które moduły muszą działać bez zarzutu od pierwszego dnia migracji, a które można uruchomić w drugiej kolejności. Dobrą praktyką jest też spisanie ustawień z modułu Setup, czyli adresu serwera i nazwy bazy, zanim pierwszy stary terminal zostanie wyłączony.

System magazynowy dostępny z przeglądarki ogranicza zależność od platformy urządzenia, bo aplikacja działa na dowolnym sprzęcie z przeglądarką. Podejście to opisuje tekst o systemie magazynowym online. Obsługę kodów kreskowych i skanerów omawiają strony SoftwareStudio o kodzie kreskowym w magazynie, a przegląd terminali radiowych tekst o terminalu radiowym w magazynie.

Okres przejściowy z terminalami obu platform

W okresie przejściowym stare i nowe terminale pracują obok siebie, jeżeli obie wersje aplikacji korzystają z tej samej bazy. Operacje z obu platform trafiają wtedy do tych samych tabel, więc stan magazynu pozostaje jeden. Konfiguracja każdej platformy pozostaje jednak osobna: w starej aplikacji przez moduł Setup, w nowej przez profil urządzenia.

Największym ryzykiem jest identyfikator terminala. Nowe urządzenie dostaje nowy, unikalny identyfikator, a stary nie jest używany ponownie do czasu wycofania sprzętu. Dzięki temu historia operacji jednoznacznie wskazuje, na którym urządzeniu wykonano dany ruch, także wtedy, gdy przez kilka tygodni pracują dwie generacje sprzętu.

Warto też zaplanować wycofanie: dane logowania do bazy zapisane na starych terminalach unieważnia się razem z odłączeniem urządzenia, a konto SQL używane przez flotę Windows Mobile wyłącza po ostatnim terminalu. Zapobiega to sytuacji, w której zapomniany terminal z ważnym hasłem zostaje w szafie, a potem trafia do złomowania bez wyczyszczenia.