Typy danych to jeden z najważniejszych elementów każdego systemu informatycznego. Określają, jakie informacje mogą być przechowywane, jak są interpretowane przez system oraz w jaki sposób użytkownicy mogą z nimi wchodzić w interakcję.

W platformie Ferryt typy danych przypisywane są do pól charakterystycznych, które pełnią rolę zmiennych w procesach biznesowych. Dzięki nim możliwe jest nie tylko kontrolowanie poprawności danych, ale także zapewnienie spójności, bezpieczeństwa i ergonomii całego systemu.

Typy danych w Ferryt – dlaczego są istotne?

Typy danych w Ferryt są istotne, ponieważ pełnią wiele kluczowych funkcji, takich jak:

  • Walidacja danych wejściowych
    Zapobiegają wprowadzaniu nieprawidłowych wartości, co chroni procesy przed błędami logicznymi i technicznymi.
  • Optymalizacja procesów
    Umożliwiają efektywne przetwarzanie danych, np. poprzez wybór odpowiednich algorytmów i struktur.
  • Bezpieczeństwo
    Ograniczają ryzyko błędów i podatności wynikających z niezgodności typów, np. przy integracjach z zewnętrznymi systemami.
  • Czytelność interfejsu
    Pozwalają na automatyczne dopasowanie kontrolek w UI, co zwiększa intuicyjność i ergonomię aplikacji.
  • Integracja z zewnętrznymi systemami
    Ułatwiają mapowanie danych przy integracjach API, baz danych czy usług zewnętrznych.
  • Automatyzacja i skalowalność
    Typy danych umożliwiają dynamiczne generowanie ekranów, raportów i dokumentów, co przyspiesza rozwój systemu.

Podział typów danych w Ferryt

Typy złożone

Typy złożone są wykorzystywane w sytuacjach, gdy pole musi przechowywać więcej niż jedną wartość lub gdy dane mają strukturę hierarchiczną.

  • Słownik (Dictionary) – idealny do dynamicznych zestawów danych, np. konfiguracji parametrów, gdzie klucze i wartości mogą się zmieniać.
  • Struktura (Structure) – pozwala grupować różne typy danych w jednym obiekcie, np. dane adresowe (ulica, miasto, kod pocztowy).
  • Tablica jednowymiarowa (Array) – lista elementów tego samego typu, np. lista ID produktów, lista nazw użytkowników.
  • Tablica dwuwymiarowa (Matrix) – tabela danych, np. harmonogramy, zestawienia, macierze decyzyjne.

Typy proste

Typy proste reprezentują z kolei pojedyncze, nieskomplikowane wartości. Są to:

  • Appendix – pliki binarne, np. załączniki, dokumenty PDF, obrazy.
  • Bool – wartość logiczna (true/false), często używana w warunkach procesowych.
  • DateTime – data i czas, wykorzystywane w logice procesów, np. do wyznaczania terminów.
  • Decimal – liczby zmiennoprzecinkowe, np. ceny, wartości finansowe, kursy walut.
  • Enumerable – enumeratory, czyli zestawy predefiniowanych wartości, np. statusy zamówienia.
  • ExcelWorksheet – arkusze kalkulacyjne, np. dane z importu, zestawienia.
  • Int / Long – liczby całkowite, różniące się zakresem, stosowane np. do identyfikatorów.
  • Link – odnośniki do zasobów lub operacji, np. linki do dokumentów lub innych ekranów.
  • Object – typ ogólny, stosowany przy niejednoznacznych strukturach lub integracjach.
  • String – tekst, najczęściej używany typ danych, obejmujący nazwy, opisy, komentarze.

Przypisywanie typów danych do pól – moduł Ekrany

W module Ekrany typ danych decyduje o tym, jaka kontrolka może zostać przypisana do pola:

  • String → pole tekstowe
  • Bool → checkbox
  • DateTime → kalendarz
  • Enumerable → lista rozwijana
  • Appendix → przycisk do dodania pliku


Moduł Ekrany, podczas wyboru pola procesu przypisanego do kontrolki na ekranie, sugeruje pola o odpowiednim typie danych.

Dzięki temu użytkownik końcowy otrzymuje intuicyjny interfejs, a system automatycznie dopasowuje sposób prezentacji danych. To znacząco skraca czas projektowania ekranów i zmniejsza liczbę błędów UI.

Zarządzanie typami danych – Ferryt Architect

Typami danych zarządza się w module Ferryt Architect:

Ścieżka: Projektowanie → Model danych → Typy danych

Możliwości:

  • Przegląd istniejących typów
  • Tworzenie nowych typów przez kreator
  • Edycja i usuwanie typów przez menu kontekstowe

Typy mogą być przypisane do:

  • Systemu – dostępne globalnie
  • Domeny – ograniczone do konkretnej domeny
  • Obszaru – przypisane do wybranego obszaru funkcjonalnego

Dobre praktyki przy definiowaniu typów danych w Ferryt

  • Unikaj duplikatów
    Nie twórz wielu typów o podobnej funkcji, ponieważ utrudnia to utrzymanie systemu.
  • Stosuj nazewnictwo opisowe
    Np. „AdresStruktura” zamiast „Struktura1”, dzięki temu zwiększysz czytelność.
  • Dokumentuj typy
    Dodawaj opisy, by ułatwić pracę zespołowi i przyszłym użytkownikom.
  • Testuj typy przed wdrożeniem
    Szczególnie typy złożone i niestandardowe, które mogą mieć wpływ na logikę procesów.
  • Utrzymuj spójność między środowiskami
    Typy danych powinny być zgodne między DEV, TEST i PROD.

Weryfikacja poprawności typów danych

Typy danych są przechowywane w tabeli dbo.DataType w bazie FerrytMain. Zmiany w typach – ich usunięcie, modyfikacja lub błędne przypisanie – mogą prowadzić do błędów w procesach. Dlatego tak ważna jest ich regularna kontrola.

Ręczna weryfikacja typów danych

Może być stosowana przy małych projektach. Jest jednak czasochłonna i podatna na pomyłki. Wymaga przeglądu definicji typów, porównania z użyciem w procesach oraz sprawdzenia zgodności z interfejsem.

Automatyczna weryfikacja typów danych

W miarę rozwoju systemu liczba typów danych rośnie, a ich struktura może ulegać modyfikacjom. W takich warunkach ręczna kontrola staje się nieefektywna, a ryzyko błędów wzrasta. Dlatego coraz częściej stosuje się testy automatyczne, które pełnią rolę strażnika integralności typów danych.

Cele automatycznej weryfikacji

Podstawowymi celami automatycznej weryfikacji typów danych w Ferryt są:

  • wykrycie nieistniejących typów,
  • sprawdzenie zgodności definicji,
  • weryfikacja struktury typów złożonych,
  • testowanie typów w kontekście procesów,
  • wczesne wykrywanie regresji typów po wdrożeniach.

Mechanizm działania testów

  1. Połączenie z bazą danych FerrytMain
  2. Pobranie listy pól charakterystycznych
  3. Porównanie typów przypisanych do pól z typami z bazy
  4. Sprawdzenie typów złożonych
  5. Generowanie raportu z błędami, ostrzeżeniami i sugestiami

Przykładowe scenariusze testowe

Scenariusz 1: Niezgodność typu danych

Podczas testów procesu rejestracji klienta system wykrywa, że pole przeznaczone na datę urodzenia zostało zdefiniowane jako tekst zamiast daty. Choć użytkownik może wprowadzić wartość, system nie będzie w stanie poprawnie jej interpretować ani wykorzystać w dalszych obliczeniach. Test automatyczny zgłasza błąd, dzięki czemu problem można szybko poprawić jeszcze przed wdrożeniem.

Scenariusz 2: Brakujące elementy w typie złożonym

W procesie zamówienia adres dostawy zbudowany jest ze struktury zawierającej kilka pól, takich jak ulica, miasto i kod pocztowy. Test wykrywa, że w definicji brakuje jednego z wymaganych pól. System zgłasza ostrzeżenie, co pozwala zespołowi uzupełnić dane i uniknąć błędów przy realizacji zamówień.

Scenariusz 3: Odwołanie do usuniętego typu

Podczas aktualizacji systemu jeden z typów danych — np. „Waluta” — został przypadkowo usunięty. Test automatyczny namierza, że proces fakturowania nadal próbuje z niego korzystać. Zgłoszony błąd informuje o konieczności przywrócenia lub ponownego przypisania typu, zanim proces zostanie uruchomiony na produkcji.

Integracja testów z CI/CD

Testy automatyczne typów danych powinny być częścią szerszego ekosystemu testowego. W nowoczesnych projektach IT integruje się je z pipeline’ami CI/CD, co pozwala na:

  • automatyczne uruchamianie testów przy każdej zmianie w repozytorium,
  • weryfikację typów danych przed wdrożeniem na środowisko produkcyjne,
  • generowanie raportów i alertów w systemach monitorujących,
  • szybką identyfikację regresji typów po aktualizacjach systemu.

Dzięki temu zespoły projektowe mogą działać szybciej, pewniej i bardziej przewidywalnie, a jakość danych w systemie pozostaje na wysokim poziomie.

Typy danych w cyklu życia systemu

Typy danych mają wpływ na każdy etap cyklu życia systemu:

  • Projektowanie
    Definiowanie typów danych pozwala na lepsze modelowanie procesów i struktur.
  • Implementacja
    Typy danych wpływają na sposób kodowania logiki, walidacji i integracji.
  • Testowanie
    Typy danych są podstawą testów jednostkowych, integracyjnych i regresyjnych.
  • Utrzymanie
    Zmiany w typach danych muszą być kontrolowane, by nie zaburzyć istniejących procesów.
  • Rozwój
    Nowe funkcje często wymagają nowych typów danych lub rozszerzenia istniejących.

W praktyce oznacza to, że typy danych są nie tylko technicznym artefaktem, ale również narzędziem komunikacji między zespołami: analitykami, programistami, testerami i administratorami.

Typy danych a migracje i integracje

W projektach, które obejmują migrację danych między systemami lub integrację z zewnętrznymi usługami, typy danych odgrywają rolę kluczową. Niezgodność typów może prowadzić do:

  • błędów podczas przenoszenia danych,
  • utraty lub zniekształcenia informacji,
  • nieprawidłowego działania procesów,
  • trudności w dopasowaniu danych pomiędzy systemami.

Aby uniknąć takich problemów, warto już na etapie projektowania sprawdzić, czy typy danych używane w procesach są zgodne z tymi, które występują w systemach zewnętrznych. W praktyce często oznacza to dostosowanie formatów danych (np. liczbowych, tekstowych czy dat), tak aby wymiana informacji przebiegała bez błędów.

Dobrą praktyką jest również dokumentowanie typów używanych w integracjach i ich regularna weryfikacja po aktualizacjach systemu. Dzięki temu migracje i integracje przebiegają sprawniej, a ryzyko błędów związanych z niezgodnością danych jest znacznie mniejsze.

Metodyka sprawdzania typów danych

Obecność i informacje o typach danych można weryfikować z poziomu bazy danych w bazie FerrytMain, w tabelach DataType oraz DataTypeElement

Typy danych przy tworzeniu na poszczególnych poziomach izolacji dostają odpowiedni prefiks (w załączonych zdjęciach dla obszaru) w symbolu, więc można znaleźć pola wyszukiwanego rozwiązania używając klauzury ‘like’.

Tabele te również posiadają kolumnę moddate – weryfikacja na jej podstawie może pomóc w regularnej weryfikacji wprowadzanych zmian w trakcie rozwoju procesów.

Podsumowanie

Typy danych w systemie Ferryt to nie tylko techniczna klasyfikacja informacji, ale przede wszystkim fundament, na którym opiera się jakość, bezpieczeństwo i efektywność całego rozwiązania. Poprawne zdefiniowanie i utrzymanie typów danych gwarantuje stabilność procesów biznesowych, spójność interfejsu użytkownika oraz niezawodność integracji z innymi systemami.

Wdrożenie automatycznej weryfikacji typów danych to ważny krok w kierunku skalowalności środowiska Ferryt. Dzięki testom możliwe jest:

  • szybkie wykrywanie błędów i niezgodności,
  • utrzymanie wysokiej jakości danych,
  • zapewnienie ciągłości działania procesów,
  • zyskanie oszczędności czasu zespołu projektowego,
  • ograniczenie ryzyka problemów po wdrożeniu,
  • łatwiejsze zarządzanie migracjami i integracjami.

Dobrze zaprojektowany system typów danych staje się więc nie tylko narzędziem technicznym, ale też elementem wspierającym rozwój organizacji. Dzięki niemu procesy są bardziej przewidywalne, a cały system stabilny, spójny i gotowy na dalszy rozwój

Autor: Michał Banaszyk, Marcin Lawrenc