Zróbmy sobie szybciutko aplikację BI

Jadwiga Gnybek

Systemy kolekcjonowania i prezentacji danych zwane od jakiegoś czasu Business Intelligence, od kilku lat cieszą się niebywałą popularnością. Nie jest już wszak żadnym wyczynem, że skomputeryzowaną mamy księgowość, kadry i magazyny. To mają wszyscy. Nie wszyscy natomiast mają systemy „wczesnego ostrzegania” czyli „systemy informowania kierownictwa”.

Zakładając, że system taki może poinformować nas o zbliżającej się klęsce lub (co bardziej oczekiwane) o fantastycznych wynikach osiągniętych przez nasz biznes, nic dziwnego, że jest to coś, co każdy szanujący się prezes powinien mieć w swojej firmie. Oczywiście, tak zdefiniowana rola BI to grube uproszczenie. Dobre zestawienie danych pochodzących z różnych baz danych naszej firmy może pozwolić nam nie tylko na ocenę jej kondycji, ale również na analizę przyczyn zaistniałych strat czy zysków, a nawet na predykcję dalszego rozwoju biznesowych zdarzeń. Tak, jak szybko potrzebne są naszej firmie te informacje, tak samo szybko my informatycy powinniśmy móc ich dostarczać. Poszukajmy zatem u naszego ulubionego dostawczy narzędzi, które pozwolą nam w krótkim czasie zbudować SIK.

Na kłopoty – Oracle Application Express

Ci z nas, którzy od lat kilku obserwują portfel narzędzi Oracle, z pewnością w pierwszej chwili pomyśleli o Oracle Express – narzędziu które przed kilku laty pojawiło się na rynku jako oddzielny, „dostawiany” do transakcyjnej bazy danych sposób na budowę hurtowni danych i zbioru raportów prezentujących składowane tam informacje.

Przeszukując aktualną listę produktów Oracle bez trudu znajdziemy pozycję o mile podobnej nazwie: Oracle Application Express; jest to narzędzie będące jedną z funkcjonalności Oracle 11g, pozwalające na proste budowanie aplikacji prezentujących za pośrednictwem wszechobecnych przeglądarek web dane zgromadzone i przetworzone przez mechanizmy BI. A wszystko to z dobrodziejstwem inwentarza, czyli z wszystkimi mechanizmami ochrony bezpieczeństwa i spójności danych, w jakie przez lata wyposażony został motor bazy Oracle. Opierając aplikację o tak bogato wyposażoną i sprawdzoną maszynę, programista aplikacji w obszarze systemów informowania kierownictwa zapomnieć może o szeregu problemach, jakie jeszcze do niedawna były jego udziałem. Samo programowanie również jakby powoli zanikało. Twórca aplikacji coraz częściej jest w większym stopniu architektem rozwiązania niż twórcą kodu. Nikogo bowiem już nie dziwi fakt, że każdy pakiet służący do budowy aplikacji wyposażony jest w bogaty wybór szablonów, stron i raportów, służących do szybkiego zestawiania interfejsu użytkownika. Logika aplikacji umieszczona bądź na serwerach aplikacyjnych, bądź w procedurach bazodanowych, może zatem żyć własnym życiem – niezależnym od modyfikacji, upiększania i optymalizowania interfejsu użytkownika.

W ten sposób aplikacja dzieli nam się na kilka powiązanych ze sobą ale też w sporym obszarze niezależnych płaszczyzn. Pierwszą z nich jest interfejs użytkownika, drugą logika aplikacji, trzecią – model danych. W przypadku wykorzystywania już istniejących produktów – takich, jak motor bazy danych, czy elementy systemu operacyjnego serwerów prezentujących aplikację użytkownikowi, wyróżnić możemy jeszcze jedną płaszczyznę: odpowiedzialną za autoryzację i uwierzytelnianie użytkowników oraz zarządzanie zasadami dostępu wynikającymi ze struktury i logiki aplikacji. Do listy wymienionych powyżej ułatwień i udogodnień Oracle Application Express dodaje jeszcze wsparcie dla aplikacji działających w środowisku wielojęzycznym. Dzięki przechowywaniu wewnętrznych definicji w bazie danych, zawarte w tych definicjach łańcuchy tekstów zawierające etykiety pól, tytuły i nagłówki kolumn raportów mogą być tłumaczone na wiele języków. Application Express automatycznie zachowuje ścieżki z łańcuchami tekstów, umożliwiając w ten sposób ich eksport do pliku tekstowego, który może być poddany tłumaczeniu na kolejny język.

Przyglądając się bliżej architekturze Oracle Application Express zauważamy, że składa się ona z zawierającego definicje aplikacji repozytorium metadanych oraz z silnika, służącego przede wszystkim do renderowania i przetwarzania stron. Zadania silnika Oracle Application Express są oczywiście znacznie szersze. Do jego obowiązków należy bowiem również zarządzanie stanem sesji, uwierzytelnianie i autoryzacja usług oraz zarządzanie pojawianiem się stron. Silnik ten zaimplementowany w technologii PL/SQL, dostępny jest z poziomu przeglądarki poprzez wewnętrzny PL/SQL Gateway (patrz rys. 1) lub poprzez serwer HTTP (Apache) i mod_plsql (patrz rys. 2).

Umieszczenie silnika Oracle Application Express w bazie danych skutkuje kilkoma bardzo wygodnymi rozwiązaniami. Przechowywane w tabelach bazy danych repozytorium metadanych, stanowi źródło informacji dla renderowania stron w czasie rzeczywistym. Ciekawie rozwiązany jest również problem zarządzania sesjami, gdyż każda odsłona strony skutkuje nową sesją w bazie danych. Rozwiązanie takie sprawia że silnik Oracle Application Express nie zajmuje się renderowaniem i przetwarzaniem strony, przez co nie absorbuje nadmiernie zasobów bazy danych. I tak jedna instancja bazy danych zamienia się we współdzieloną grupę roboczą usługi bazy danych. Współdzielone w sposób jak najbardziej bezpieczny są również dane biznesowe przechowywane w bazie. Dzięki mechanizmom definiowania obszarów roboczych, każda aplikacja Oracle Application Express może posiadać silnie chroniony obszar bazy służący do przechowywania jej danych; ale jeśli tego potrzebuje, dane te może w łatwy sposób udostępnić innym aplikacjom pracującym w oparciu o tę samą bazę danych. Operacje te oczywiście nie wymagają interwencji administratora bazy i realizowane są poprzez funkcjonalności Oracle Application Express. I tak jedna baza danych Oracle może zawierać wiele obszarów roboczych Oracle Application Express, a każdy z obszarów może mieć dostęp do jednego lub więcej schematów bazy danych. Silny i skalowalny motor bazy danych Oracle bez trudu daje sobie radę z realizacją wielu na pierwszy rzut oka różnorodnych zadań. Ale wszystko sprowadzić można do prostych i znanych nam operacji. Na przykład rejestracja nowego dostępu do Oracle Application Express wymaga stworzenia nowego obszaru lub przyznania uprawnień do obszaru już istniejącego. Obszar zaś nie jest niczym więcej jak zbiorem tabel, perspektyw i procedur.


Rys. 1. Architektura Oracle Application Express z EPG dla baz XE i 11g.


Rys. 2. Architektura Oracle Application Express z Apache i mod_plsql.

Narzędzia do budowy aplikacji

Znacznie ciekawiej wygląda uzyskanie dostępu do Oracle Application Express od strony użytkownika tego produktu, czyli na początek projektanta-programisty aplikacji Oracle Application Express. Zalogowanie się do obszaru roboczego daje mu bowiem dostęp do szeregu narzędzi niezbędnych do budowy aplikacji spełniającej oczekiwania użytkowników biznesowych. Do dyspozycji mamy zatem: Application Builder, SQL Workshop, Data Workshop oraz Workspace Administration. W zasadzie, nazwy tych narzędzi mówią same za siebie, ale poświęćmy kilka zdań na opisanie ich funkcjonalności.

Application Builder to narzędzie do budowy interfejsu użytkownika w HTML. Wyposażony w liczne wizardy znacznie przyspiesza proces tworzenia ekranów służących zarówno wprowadzaniu jak i prezentacji danych. Aby połączyć interfejs z bazą danych naszej aplikacji warto skorzystać z SQL Workshop, który pomoże nam zdefiniować interakcje bazy danych z przeglądarką – takie jak przeglądanie obiektów bazodanowych, tworzenie obiektów bazy danych, tworzenie skryptów DLL dla istniejących obiektów bazodanowych, wykonywanie komend SQL, czy budowę kwerend. Teraz potrzeba nam już tylko danych. W tym celu uruchamiamy Data Workshop, który ułatwi nam proces importu lub eksportu struktur bazy danych oraz samych danych – jeśli oczywiście mamy bazy źródłowe, z których możemy skorzystać. Bazami takimi mogą być na przykład arkusze Excela lub ustrukturyzowane pliki tekstowe (np. Comma Separated Values CSV). Ponadto narzędzie wspierać nas może w eksporcie danych do plików płaskich z możliwością wyboru znaku separacji pól.

Tak skomplikowany organizm jakim jest Oracle Application Express nie obędzie się bez administratora i panelu Workspace Administration. Jego zadaniem jest pomagać administratorowi w zarządzaniu programistami i użytkownikami końcowymi aplikacji, zarządzaniu schematami i zasobami dyskowymi skojarzonymi z obszarem roboczym, monitorowaniu użytkowników końcowych i aktywności programistów oraz raportowaniu stanu aplikacji w całej przestrzeni roboczej.

Wracając na chwilę do naszego projektanta-programisty i zalet Application Buildera, znajdzie on tu wiele funkcjonalności, które skutecznie odciążą go od konieczności kodowania usług najniższego poziomu, niezbędnych do uruchomienia skomplikowanej, ale wydajnej aplikacji webowej. Pierwszym z takich mechanizmów jest automatyczne zarządzanie stanem sesji, które w sposób transparentny utrzymuje stan sesji bazy danych umożliwiając programistom pobieranie (get) i ustawianie (set) wartości stanu sesji, dotyczącej dowolnej strony aplikacji. Ponieważ do każdej sesji przypisany jest unikalny identyfikator, silnik Oracle Application Express wykorzystuje ten identyfikator do przechowywania i pobierania danych aplikacji (stanu) przed i po każdej odsłonie strony.

Czarodzieje, czyli „wizardy”

Pakiet Oracle Application Express – jak już wspominałam – wyposażony jest bogato w mechanizmy wizardów. Te mechanizmy, służące do wspomagania budowy formularzy wprowadzania lub modyfikacji danych, wyposażone są w szereg funkcjonalności bez których nie może obyć się żadna profesjonalna aplikacja. Oferują one szeroką gamę wbudowanych widgetów HTML, mechanizmy walidacji danych, współdzielone listy wartości itp. A wszystko to umieścić możemy w gotowych szablonach poszczególnych elementów aplikacji – takich, jak strony, obszary, raporty, etykiety pól czy guziki. Oczywiście dla chętnych umożliwione jest również tworzenie własnych szablonów wykorzystujących HTML, style CSS, Javascripty i elementy grafiki.

Nie dajmy się jednak omamić, nie wszystko można „zaprogramować” używając wizardów. W każdej aplikacji znajdą się miejsca wymagające podkodowania brakującej funkcjonalności w PL/SQL, czy Javie. Możliwość ta istnieje również w przypadku korzystania z narzędzi Application Buildera. Umożliwia on bowiem również tworzenie warstwy logicznej zapisanej w formularzach w postaci linii kodu PL/SQL lub Javascript. Możliwe jest także wywoływanie gotowych procedury i funkcji bibliotecznych Javascript lub wbudowanie do aplikacji asynchronicznych Javascript oraz XML (AJAX).

Raporty, raporty…

Zakończywszy prace nad ekranami wprowadzającymi dane, łagodnie przejść możemy do zwykle mozolnej części budowy aplikacji, czyli do budowy raportów i obsługi ich wydruku. Działania te również wspierane są przez Application Buildera. Dzięki wizardowi, nasz projektant-programista w zasadzie nie musi w ogóle znać SQLa (czego mu oczywiście szczerze nie życzę). Wizard ten między innymi pozwala na wybór stylu paginacji, w tym styli stworzonych przez użytkownika, sortowanie według kolumn, łączenie naszego raportu z innymi raportami lub wykresami, wykorzystywanie wyrażeń HTML w wartościach kolumn i wiele innych. Tak przygotowane raporty mogą być eksportowane do formatów PDF, Word, Excel lub HTML. Jeśli do obsługi wydruku wykorzystamy Oracle BI Publisher, to nasze raporty po wydrukowaniu z pewnością zachowają wszystkie zaprojektowane przez programistę niuanse grafiki i formatowania, ponieważ BI Publisher umożliwia wykorzystanie w tym miejscu oprogramowania MS Word wraz z wtyczką służącą do tworzenia złożonych wzorców raportów. Wzorce takich szablonów mogą być ładowane do Application Express i dostępne poprzez URL, a wywoływane są po naciśnięciu myszą guzika lub wywołaniu odpowiedniego linku.

Skoro mówimy o nowoczesnych i eleganckich raportach, nie możemy zapomnieć o wizualizacji danych za pomocą wykresów. Application Builder udostępnia do naszej dyspozycji aż trzy typy wykresów. Pierwszy z nich opiera się na rozwiązaniach Flash Charting i umożliwia rysowanie wykresów słupkowych, liniowych i kołowych (pie). Wykresy te wyposażone są w deklaratywne kontrolki umożliwiające tworzenie wielu atrybutów obrazu – takich, jak animacje, kolory, etykiety i legendy. Drugi typ wykresów oparty jest na HTML oraz elementach grafiki zapisanych w formacie gif. Umożliwia on, niestety jedynie kreślenie pionowych i poziomych wykresów słupkowych. Trzeci typ wykresów dostępnych w Application Builder wykorzystuje technologię Scalable Vector Graphics (SVG) oraz język oparty na XML i podobnie jak pierwszy, umożliwia tworzenie wykresów słupkowych, liniowych i kołowych.

Aplikacje zbudowane z pomocą Oracle Application Express mają wiele ciekawych właściwości. Na przykład mogą być wykorzystywane przez zewnętrzne usługi webowe, dzięki zastosowaniu SOAP. W takim przypadku odpowiedź dla usługi (Web Service) może być przekształcona przy użyciu XSL i wbudowana w stronę, lub wynik działania usługi może być przechowywany jako stan sesji. To bardzo przydatna funkcjonalność, pozwalająca na łatwą integrację naszej aplikacji z logiką i procesami uruchamianymi na serwerach zewnętrznych.

Innym ciekawym gadżetem jest wbudowana możliwość pobierania plików. Widget o nazwie File Brows wspiera pobieranie dokumentów i składowanie ich w bazie danych. Nasza aplikacja może również korespondować ze swoimi użytkownikami, wysyłając do nich wiadomości mailowe. Funkcjonalność ta realizowana jest przez pakiet UTL_SMTP i jest oparta na bazodanowym API. Sporą elastyczność mają programiści również w obszarze weryfikacji tożsamości użytkowników aplikacji. Bez konieczności ingerencji w logikę aplikacji możliwa jest bowiem zmiana sposobu uwierzytelniania użytkowników. Możemy na przykład zmienić uwierzytelniania realizowane przez LDAP (Lightweight Directory Access Protocol) na mechanizmy Oracle Application Server single Sign-On. Wynik uwierzytelniania może być oczywiście zakomunikowany użytkownikowi aplikacji przez wyświetlenie jego nazwiska na stronie logowania aplikacji stworzonej za pomocą Oracle Application Express lub na zewnętrznej stronie logowania, w przypadku korzystania z narzędzia Oracle Application Server Single Sign-On.

Oczywiście zalet i gadżetów wbudowanych w pakiet Application Builder jest jeszcze o wiele więcej. Mam natomiast nadzieję, że to co zdołałam opisać, zachęci Was do budowy aplikacji opartych na Oracle Application Express.