
Klient: Użytkownicy systemu aSISt
Elastyczny mechanizm deklaratywnego importu danych dla różnego typu sprawozdań systemu aSISt oparty o definiowane wyrażenia obliczające raportowane dane (mapujące zbiór źródłowy na komórki sprawozdania określonego typu). Uniezależnienie od formatu danych wynikającego z typu sprawozdania. Obsługa danych źródłowych zapisanych w postaci tabelarycznej o dowolnym schemacie. Wsparcie dla formatów CSV i Excel 97. Zasilanie danymi zarówno tabel o stałej jak i zmiennej strukturze (tabele listowe i wymiary własne). Oparcie zasilania o zwięzły i jednocześnie ekspresywny język mapowania danych. Definiowanie zbiorów wyrażeń w przestrzeni sprawozdania. Zarządzanie i przechowywanie zbiorów wyrażeń przygotowanych w oparciu o różne taksonomie. Wsparcie dla archiwizacji, eksportu i importu wyrażeń mapujących.
Głównym wyzwaniem dla modułu mapowania danych było stworzenie języka umożliwiającego precyzyjne wskazanie danych dla każdej zasilanej wartości pozwalającego wykonać dodatkowe operacje modyfikujące (operacje arytmetyczne, agregaty). Język ten z jednej strony musiał być notacyjnie i modelowo na tyle prosty, aby umożliwić definiowanie wyrażeń mapujących małe zbiory zwykłym użytkownikom w sposób niewymagający szczegółowego poznania wszystkich jego aspektów. Z drugiej strony musiał dawać wystarczającą ekspresywność dla uzyskania systemu funkcjonalnie pełnego w nietrywialnych przypadkach.
Ważnym aspektem było również wsparcie w procesie zasilania tabel o rozszerzalnej strukturze gdzie ilość danych jest zmienna i nie może być określona w czasie przygotowywania wyrażeń mapujących. Rozszerzenie języka o wyrażenia grupujące pozwoliło na wykorzystanie tego samego mechanizmu w sposób elastyczny dla ewentualnych potrzeb użytkownika.
Ważnym problemem stała się również konieczność przetworzenia dużych zbiorów danych źródłowych w relatywnie krótkim czasie. Dzięki zapożyczonej z koncepcji strumieniowych baz danych metodzie przetwarzania danych w locie udało się znacznie ograniczyć zarówno złożoność pamięciową jak również czas całego procesu zasilania. Ilość używanej pamięci w czasie procesu zasilania jest zależna od samych danych jednak znacznie mniejsza od wielkości zbiorów. Dodatkowo moduł częściowo zrównolegla przetwarzanie, co daje odczuwalne korzyści przy popularnych procesorach wielordzeniowych.
Z perspektywy użytkownika stającego przed koniecznością stworzenia wyrażeń mapujących dla sprawozdania ważne było umożliwienie edycji wyrażeń w sposób modelowo zbliżony do samego sprawozdania. W tym celu stworzono edytor o strukturze sprawozdania gdzie poszczególne komórki zamiast danych zawierają odpowiadające im wyrażenia mapujące.
Moduł pozwala zatem na łatwe przetworzenie danych o wstępnie przygotowanej strukturze przez mało zaawansowanego użytkownika, jak również szybkie, bardziej złożone przetwarzanie dużych ekstraktów ze źródłowych baz danych o dowolnej strukturze na średniej klasy komputerach biurowych.
Aplikacja została zrealizowana w Javie 6. Aplikacja została oparta o kontener Spring Framework. Wspierane systemy bazodanowe to Oracle 9i i DerbyDB. Do mapowania relacyjno-obiektowego wykorzystany został Hibernate. Do parsowania wyrażeń mapujących użyto biblioteki ANTLR.