Aplikacja biznesowa a system informatyczny

W rozmowach o wdrożeniu słowo „aplikacja” często zastępuje słowo „system”, choć oba pojęcia mają inny zakres. Aplikacja biznesowa obsługuje jeden obszar pracy firmy, na przykład ewidencję narzędzi albo obieg reklamacji. System informatyczny łączy kilka takich aplikacji wspólną bazą danych i wspólnym modelem uprawnień.

Rozróżnienie ma skutki praktyczne. Zamówienie „aplikacji” bez ustalenia, z którym systemem ma współdzielić dane, kończy się zwykle ręcznym eksportem plików CSV między programami. Zamówienie „systemu” bez podziału na moduły utrudnia etapowanie wdrożenia i odbiór kolejnych prac.

CechaProgram narzędziowyAplikacja biznesowaSystem informatyczny
ZakresJedna czynność, np. wydruk etykietyJeden proces, np. ewidencja narzędziKilka procesów firmy
DanePlik lokalny albo brakWłasne tabele w bazie SQLWspólna baza wielu modułów
UżytkownicyPojedyncza osobaJeden działWiele działów i kontrahenci
PrzykładGenerator kodu kreskowegoModuł reklamacji RMAStudio WMS.net z modułem terminalowym

Aplikacja jako moduł większego systemu

SoftwareStudio dostarcza aplikacje biznesowe najczęściej jako moduły większych systemów. Moduł reklamacyjny korzysta z kartoteki kontrahentów systemu ERP, a moduł narzędziowni z kartoteki pracowników. Każdy z nich dokłada do bazy własne tabele, ale nie tworzy drugiej kopii danych, które już istnieją. Proces projektowania takich modułów opisuje artykuł programowanie aplikacji biznesowych.

Reguła: każda kartoteka ma jednego właściciela. Moduł, który tylko czyta kontrahentów, nie edytuje ich we własnej kopii.

Granice modułu wyznacza się na etapie analizy. Pomaga pytanie, kto zatwierdza dokumenty danego procesu. Jeżeli reklamacje zatwierdza dział jakości, a zwroty narzędzi kierownik narzędziowni, to są to dwa moduły z osobnymi uprawnieniami, nawet jeśli oba zmieniają stany magazynowe.

Drugim kryterium jest częstotliwość zmian. Proces, którego reguły zmieniają się co kwartał, na przykład naliczanie opłat za składowanie, warto wydzielić do osobnego modułu z własną konfiguracją. Zmiana cennika nie wymaga wtedy testowania całego systemu.

Stos technologiczny aplikacji biznesowej

Aplikacje SoftwareStudio powstają na platformie Microsoft. Warstwę logiki pisze się w języku C#, a dane leżą w Microsoft SQL Server. Interfejs webowy działa w ASP.NET pod kontrolą serwera IIS. Po stronie przeglądarki formularze korzystają z JavaScript i biblioteki jQuery.

WarstwaTechnologiaZadanie
Baza danychSQL Server, T-SQLTabele i procedury składowane
LogikaC# na platformie .NETReguły biznesowe i walidacja
Serwer aplikacjiASP.NET na IISUwierzytelnianie i usługi JSON
PrzeglądarkaJavaScript, jQueryFormularze i odświeżanie list bez przeładowania

Wywołanie procedury z kodu C#

Aplikacja nie skleja zapytań SQL z tekstu wpisanego przez użytkownika. Każda wartość trafia do bazy jako parametr polecenia. To zamyka drogę atakowi SQL injection i pozwala serwerowi ponownie użyć planu wykonania. Przykład zapisu zwrotu narzędzia (nazwy procedury i parametrów są poglądowe):

using (var conn = new SqlConnection(connectionString))
using (var cmd = new SqlCommand("dbo.usp_ZarejestrujZwrot", conn))
{
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("@NarzedzieId", SqlDbType.Int).Value = narzedzieId;
    cmd.Parameters.Add("@PracownikId", SqlDbType.Int).Value = pracownikId;

    var ilosc = cmd.Parameters.Add("@Ilosc", SqlDbType.Decimal);
    ilosc.Precision = 18;
    ilosc.Scale = 3;
    ilosc.Value = zwracanaIlosc;

    conn.Open();
    cmd.ExecuteNonQuery();
}

Klasę polecenia i kolekcję parametrów opisuje dokumentacja SqlCommand w Microsoft Learn. Procedura po stronie bazy wykonuje zapis w transakcji, więc przerwane połączenie nie zostawia połowy dokumentu.

Ilustracja warstw technologicznych aplikacji biznesowej od bazy danych po interfejs w przeglądarce
Warstwy aplikacji biznesowej: baza SQL Server, logika w C#, serwer ASP.NET i interfejs w przeglądarce

Interfejs w przeglądarce

Formularz webowy wysyła dane asynchronicznie, a serwer zwraca JSON z wynikiem walidacji. Użytkownik widzi błąd przy konkretnym polu bez przeładowania strony. Ten sam mechanizm odświeża listy dokumentów co kilkadziesiąt sekund, więc kierownik widzi nowe zgłoszenia bez klikania. Zalety i ograniczenia tego modelu omawia artykuł aplikacja webowa.

Wersjonowanie bazy i aktualizacje

Aplikacja biznesowa działa latami, a jej baza zmienia się razem z procesami firmy. Każda zmiana schematu trafia do numerowanego skryptu T-SQL, a tabela wersji w bazie zapisuje, które skrypty już wykonano. Instalator nowej wersji uruchamia tylko brakujące skrypty, w kolejności numerów.

Zmiany projektuje się tak, żeby poprzednia wersja aplikacji działała jeszcze przez chwilę na nowym schemacie. Nową kolumnę dodaje się jako dopuszczającą NULL albo z wartością domyślną. Usunięcie starej kolumny czeka na kolejne wydanie, gdy żaden klient już jej nie odczytuje. Serwer można wtedy aktualizować w godzinach pracy bez zatrzymywania magazynu.

Moduły ewidencyjne w zakładzie produkcyjnym

Najczęstsze zamówienia dotyczą ewidencji zasobów, które krążą między magazynem a stanowiskami pracy. W narzędziowni zakładu z obróbką CNC są to przede wszystkim narzędzia skrawające i sprawdziany. Aplikacje Narzędziownia.NET i Studio TCS.net śledzą lokalizację narzędzia oraz historię jego wydań. Praktykę takiej ewidencji opisuje tekst ewidencja narzędzi w narzędziowni.

Wspólną cechą tych modułów jest ruch zasobu między magazynem a pracownikiem. Aplikacja prowadzi saldo na pracowniku obok stanu magazynowego. Suma sald i stanu magazynu daje całkowitą liczbę sztuk danego narzędzia w zakładzie, co ułatwia inwentaryzację oraz rozliczenie pracownika przy zakończeniu zatrudnienia.

Dokument zwrotu wewnętrznego ZW

Pracownik, który pobrał więcej materiału albo narzędzi, niż wymagało zlecenie, oddaje nadwyżkę na magazyn. Rejestruje to dokument zwrotu wewnętrznego ZW, odmiana przyjęcia wewnętrznego PW. Pozycja dokumentu składa się z czterech elementów:

  • Pozycja - narzędzie lub materiał z numerem seryjnym albo numerem partii.
  • Ilość - liczba sztuk zwracanych na stan magazynu.
  • Powód - słownikowa przyczyna zwrotu, na przykład nadmiarowy pobór do zlecenia.
  • Potwierdzenie - podpis pracownika i magazyniera albo zatwierdzenie w aplikacji.

Po zatwierdzeniu ZW aplikacja zmniejsza saldo narzędzi przypisanych pracownikowi i zwiększa stan magazynu w jednej transakcji. Raport powodów zwrotów pokazuje, które zlecenia systematycznie zawyżają pobór. Takie dane uzasadniają korektę normatywów albo szkolenie brygadzistów, a stany magazynowe pozostają zgodne z tym, co fizycznie leży na półkach.

Przyrządy pomiarowe i terminy kalibracji

Program do ewidencji przyrządów pomiarowych przechowuje kartotekę przyrządu i historię jego kalibracji. Każde świadectwo wzorcowania ustala datę następnego sprawdzenia. Codzienne zadanie SQL Server Agent może wybrać przyrządy, którym termin mija w ciągu 30 dni, i przekazać listę do powiadomień (nazwy tabel są poglądowe):

SELECT p.NrEwidencyjny, p.Nazwa, k.DataNastepnejKalibracji
FROM dbo.Przyrzad AS p
JOIN dbo.Kalibracja AS k
  ON k.PrzyrzadId = p.PrzyrzadId AND k.CzyOstatnia = 1
WHERE p.Status = N'W użyciu'
  AND k.DataNastepnejKalibracji < DATEADD(DAY, 30, CAST(GETDATE() AS date))
ORDER BY k.DataNastepnejKalibracji;

Indeks filtrowany na kolumnie daty z warunkiem CzyOstatnia = 1 ogranicza to zapytanie do odczytu kilku stron indeksu, nawet przy wieloletniej historii wzorcowań.

Zasada: przyrząd po terminie kalibracji dostaje status blokujący wydanie na stanowisko, dopóki nie wróci aktualne świadectwo.

Odzież robocza i środki ochrony

Ręczna ewidencja odzieży roboczej zajmuje dużo czasu i generuje błędy. Aplikacja przenosi te dane do centralnej bazy, a każda sztuka odzieży dostaje własny profil. Wydanie i przyjęcie odbywa się przez odczyt etykiety RFID albo kodu kreskowego. Przykład takiego wdrożenia pokazuje strona oprogramowanie BHP do ewidencji odzieży roboczej.

Aplikacja śledzi cykl życia sztuki odzieży i przypomina o terminie prania lub wymiany, co ma znaczenie dla zgodności z przepisami BHP. Przy spadku stanu poniżej minimum wysyła powiadomienie o konieczności zamówienia. Szczegóły procesu zawiera artykuł ewidencja odzieży roboczej w przedsiębiorstwach.

Aplikacje logistyczne - etykiety GS1 i magazyn

Aplikacja do etykiet logistycznych generuje etykiety zgodne ze standardem GS1. Etykieta palety zawiera numer SSCC w symbolice GS1-128. Obok niego stoją identyfikatory zastosowań GS1, na przykład numer partii albo data ważności. Budowę takiej etykiety opisuje tekst etykieta GS1 w programie magazynowym.

Aplikacja drukująca etykiety musi pobierać dane z tej samej bazy, w której powstaje dokument wydania. Wydruk z osobnego programu z ręcznie przepisanym numerem partii to częste źródło reklamacji odbiorców. Etykietę składa się w języku ZPL i wysyła do drukarki Zebra bezpośrednio z serwera aplikacji.

Na drugim końcu skali stoi system WMS. Studio WMS.net jest aplikacją na tyle rozbudowaną, że pełni rolę całego systemu magazynowego. Prowadzi towar od przyjęcia do wysyłki, a magazynier pracuje na terminalu z czytnikiem kodów.

ObszarAplikacjaIdentyfikacja
Etykiety paletoweAplikacja do etykiet logistycznychSSCC w symbolice GS1-128
MagazynStudio WMS.netKody EAN na terminalach Android
NarzędziowniaStudio TCS.netKody kreskowe albo tagi RFID
ReklamacjeStudio RMA.netNumer zgłoszenia i status

Takie aplikacje mogą pracować na jednej instancji SQL Server, każda we własnej bazie. Osobne bazy upraszczają kopie zapasowe i przywracanie pojedynczego modułu. Do zestawienia łączącego dane z dwóch modułów nadal wystarcza jedno zapytanie z nazwami trzyczłonowymi, na przykład Wms.dbo.Dokument, bez konfigurowania serwerów połączonych.

Aplikacja reklamacyjna RMA

Oprogramowanie reklamacyjne prowadzi zgłoszenie od rejestracji do decyzji. Każda reklamacja ma numer i status, który widzi dział obsługi klienta, a w wersji internetowej także sam klient. Przejrzysty status skraca liczbę telefonów z pytaniem o postęp sprawy. Funkcje takiego programu omawia artykuł aplikacja obsługi reklamacji.

Model danych aplikacji RMA opiera się na tabeli zgłoszeń i tabeli historii statusów. Każda zmiana statusu dopisuje nowy wiersz, zamiast nadpisywać poprzedni. Dzięki temu czas obsługi reklamacji da się policzyć jednym zapytaniem (nazwy tabel są poglądowe):

SELECT z.NrZgloszenia,
       DATEDIFF(DAY, z.DataWplywu, h.DataZmiany) AS DniObslugi
FROM dbo.Zgloszenie AS z
JOIN dbo.HistoriaStatusu AS h
  ON h.ZgloszenieId = z.ZgloszenieId AND h.Status = N'Zamknięte'
WHERE z.DataWplywu >= DATEADD(MONTH, -3, CAST(GETDATE() AS date))
ORDER BY DniObslugi DESC;
  • Historia statusów - osobna tabela z datą zmiany i autorem wpisu, bez nadpisywania wcześniejszych rekordów.
  • Termin odpowiedzi - data liczona od wpływu zgłoszenia według przepisów albo umowy, z powiadomieniem przed upływem.

Raporty czasu obsługi i przyczyn reklamacji buduje się w SQL Server Reporting Services na widokach bazy. Opis tego narzędzia zawiera tekst Microsoft SQL Reporting Services.

Asystent AI jako moduł aplikacji

Asystent AI bywa samodzielną aplikacją albo modułem w istniejącym systemie. SoftwareStudio integruje modele językowe LLM, np. udostępniane przez OpenAI i Azure AI, z systemami, z których firma już korzysta. Asystent odpowiada na pytania w języku naturalnym na podstawie bazy wiedzy firmy. Użytkownik nie musi pamiętać nazw raportów ani ścieżek w menu.

Technicznie moduł działa w dwóch krokach. Najpierw aplikacja wyszukuje w bazie fragmenty dokumentacji albo rekordy powiązane z pytaniem. Dopiero te fragmenty trafiają do modelu razem z pytaniem, a odpowiedź wraca do interfejsu. Taki układ, nazywany RAG, ogranicza zmyślanie odpowiedzi i pozwala kontrolować, które dane opuszczają firmę. Szerszy kontekst zawiera artykuł sztuczna inteligencja w firmie.

Zasada: asystent dostaje tylko te rekordy, do których ma prawo pytający użytkownik. Uprawnienia sprawdza baza, nie model językowy.

Chatbot obsługi klienta działa na tej samej zasadzie. Model rozpoznaje kontekst rozmowy, a trudne przypadki przekazuje do człowieka razem z historią wymiany. Konsultant nie zaczyna rozmowy od nowa.

Ilustracja firmowego asystenta AI zbudowanego na platformie Open WebUI
Firmowy asystent AI pracuje na wyszukanych fragmentach danych firmy, a nie na całej bazie

Koszt modułu AI zależy od liczby zapytań i długości przekazywanego kontekstu, bo dostawcy modeli rozliczają tokeny. Aplikacja powinna więc przycinać wyszukane fragmenty do potrzebnych akapitów i zapisywać w bazie log zapytań z liczbą tokenów. Log pozwala rozliczyć koszt na działy i wychwycić pytania, na które baza wiedzy nie ma jeszcze odpowiedzi.

Model wdrożenia - serwer firmy albo SaaS

Aplikację można uruchomić na serwerze w firmie albo korzystać z niej w modelu SaaS. W SaaS użytkownik łączy się przez przeglądarkę z dowolnego miejsca, a firma nie kupuje sprzętu serwerowego. Model lokalny daje pełną kontrolę nad bazą i kopiami zapasowymi, ale wymaga administratora.

KryteriumSerwer w firmieSaaS
Koszt początkowyLicencje i sprzęt serwerowyAbonament
Kopie zapasowePo stronie firmyPo stronie dostawcy
Dostęp spoza biuraVPN albo publikacja przez HTTPSPrzeglądarka i HTTPS
SkalowanieRozbudowa serweraZmiana planu u dostawcy
Integracja z maszynami w LANBezpośrednio w sieci lokalnejPrzez usługi REST albo bramę
Wskazówka

Przed wyborem aplikacji biznesowej przydaje się analiza przedwdrożeniowa. Dopasowuje ona funkcje systemu do realnych procesów w magazynie i na produkcji, zamiast wdrażać rozwiązanie pudełkowe i przerabiać je po uruchomieniu.

Analiza kończy się listą procesów, podziałem na moduły i kolejnością ich uruchamiania. Bez niej zakres rośnie w trakcie prac, a odbiór nie ma punktu odniesienia. Przebieg tego etapu opisuje artykuł analiza przedwdrożeniowa.

Ilustracja aplikacji biznesowej udostępnianej w modelu chmurowym SaaS przez przeglądarkę
W modelu SaaS serwer aplikacji i baza działają u dostawcy, a użytkownik łączy się przez HTTPS

Uwierzytelnianie i uprawnienia

W instalacji na serwerze firmy aplikacja webowa może korzystać z kont domeny Active Directory. Pracownik loguje się tym samym kontem co do komputera, a zablokowanie konta po odejściu z firmy odcina dostęp do wszystkich modułów naraz. Sposób takiej konfiguracji opisuje strona integracja z Active Directory. W modelu SaaS konta prowadzi dostawca albo łączy je z katalogiem klienta przez protokół federacyjny.

Niezależnie od modelu uprawnienia do danych warto trzymać w bazie. Rola użytkownika wyznacza zestaw procedur, które może wywołać, a konto aplikacji w SQL Server nie ma prawa do bezpośredniego zapisu w tabelach. Błąd w kodzie interfejsu nie otworzy wtedy dostępu do danych innego działu.

Zakres usług i sposób współpracy przy aplikacjach tworzonych od podstaw opisuje strona oprogramowanie na zamówienie SoftwareStudio. Gotowe moduły można sprawdzić w demo online systemów SoftwareStudio.