Świat obiektów

advertisement
VIII Konferencja PLOUG
Koœcielisko
PaŸdziernik 2002
„Œwiat obiektów - œwiat analiz”
BusinessObjects jako kompletne narzêdzie
dostêpu do baz danych i systemów Oracle
Bartosz Dobrowolski
Premium Technology Sp. z o.o.
[email protected]
„Świat obiektów – świat analiz”
211
1. Na początku był chaos
W piękny, letni, sobotni poranek, w Paryżu, o godzinie 9:30 w mieszkaniu pewnego młodego
człowieka przez cichy szum miasta i szelest rosnącej nieopodal domu brzozy dało się słyszeć
głośne brzęczenie telefonu. Długo i uparcie próbował on wedrzeć się pod ciężkie po kolejnej
nieprzespanej nocy powieki Bernarda Liautaud’a. Kolejnej nocy programowania, kompilowania, testowania, programowania, testowania. Kolejnej, od dnia kiedy przy szklaneczce czerwonego wina wspólnie z kilkoma kolegami postanowił stworzyć jakiś kawałek kodu, który pozwoli tym z Departamentu Analiz dostawać się do serwera ORACLE wtedy kiedy będą chcieli i to
bez żadnej pomocy IT. Kawałek kodu, który pozwoli wreszcie tym z Marketingu przewracać
dane na wszystkie sposoby bez znajomości SQL’a. Kawałek kodu – dobre sobie. Siedzą nad
tym kolejny tydzień. Pomysł jest genialny w swej prostocie. Skoro tylko IT zna język SQL to
pozostałym trzeba jakoś przetłumaczyć bazę danych....a bazie danych wytłumaczyć to czego
chcą użytkownicy. Mają nawet nazwę dla takiego słownika: angielskie Universe czyli wszechświat, bo dla takiej Claire z Kadr to przecież jak wyprawa w kosmos, tak sobie rozmawiać z bazą danych. Przed nimi jeszcze masa pracy. Teraz spał. Telefon najprawdopodobniej nie zdawał
sobie sprawy z tego, że skoro złote promienie zawieszonej nad miastem ognistej gwiazdy nie
były w stanie dokonać cudu przebudzenia to on, zwykły kawałek czarnego plastiku, pozostaje
bez szans. Kiedy wreszcie postanowił poddać się i pokonany zamilknąć spod kraciastej kołdry
wysunęła się leniwie ręka, słuchawka podskoczyła i Bernard usłyszał roześmiane głosy swoich
kolegów: ”Udało się! Bernard! Odpowiedziała! Baza widzi nasz świat, nasz Universe!”.
2. Wszechświat
Było to dokładnie dwanaście lat temu w 1990 roku. Wtedy to Bernard Laiutaud wraz z kolegami stworzył niezwykle ciekawą aplikację pozwalającą zwykłym, nietechnicznym użytkownikom sięgnąć do wszystkich źródeł danych znajdujących się w przedsiębiorstwie. Sięgnąć samodzielnie. Bez pomocy kolegów informatyków. Bez konieczności kłopotliwego zamawiania raportów. Ponieważ aplikacja pozwalała jakoby „przeskoczyć” znajomość baz danych, języka
SQL, architektury i zabezpieczeń systemu bazodanowego użytkownika autorzy systemu nazwali go początkowo Skipper SQL. Dopiero wersja trzecia została przemianowana na BusinessObjects.
Bernard Liautaud jest teraz prezesem notowanego na giełdach Business Objects, korporacji która zatrudnia obecnie ponad 3000 pracowników w samej kwaterze głównej w Paryżu, posiada
ponadto biura w ponad 40 krajach, nowoczesne centrum wsparcia technicznego w Londynie
oraz setki partnerskich firm na całym świecie. Z systemu BusinessObjects korzysta na świecie
ponad 1 200 000 użytkowników.
W roku 1990, podczas pracy nad swym systemem raportowym zespół Bernarda wynalazł
i opatentował nowatorski sposób dostępu do danych oparty o warstwę semantyczną tłumaczącą
język używany w codziennym życiu przez użytkowników na język rozumiany przez bazy danych – SQL. Warstwa ta, nazwana przez twórców Universe, została przetłumaczona na tyle języków ile wersji językowych aplikacji pojawiło się na rynku. Premium Technology tłumacząc
pierwszą polską wersję systemu na podstawie badań przeprowadzonych wśród użytkowników
angielskiej wersji oprogramowania wybrało nazwę Świat Obiektów.
212
Bartosz Dobrowolski
Rys. 1. Przykładowy Świat Obiektów niewielkiego biura turystycznego. Te obiekty widzi użytkownik końcowy
i z nich buduje raporty
Mimo zaawansowanego mechanizmu tłumaczącego pojęcia biznesowe na język SQL sama zasada działania Świata Obiektów jest bardzo prosta. Świat Obiektów to niewielki binarny plik
(~10-400KB), który zawiera obraz struktury bazy danych, definicję pogrupowanych w tematyczne klasy obiektów (z nich później użytkownik końcowy buduje raporty), konfigurację połączenia do bazy danych, oraz dodatkowe informacje potrzebne do prawidłowego zbudowania i
wykonania raportu (definicję hierarchii drążenia, format danych wynikowych, domyślne
czcionki, kolory, etc). Świat obiektów nie zawiera danych źródłowych a jedynie wskazuje źródłową bazę danych i umożliwia połączenie z nią i wygenerowanie zapytania SQL na podstawie
wybranej do zapytania kombinacji obiektów.
3. Stworzenie Świata
Administrator systemu przy pomocy graficznego narzędzia Designer jednorazowo tłumaczy bazę danych na słowa (obiekty) a następnie udostępnia użytkownikom gotowy Świat Obiektów, z
którego jak z klocków lego można budować dowolne zestawienia z zachowaniem istniejącej polityki bezpieczeństwa firmy. Niezwykle prosty i intuicyjny proces tłumaczenia przebiega w kilku krokach wspieranych kreatorami (Kreator Świata Obiektów, Wykrywanie Pętli, Wykrywanie
Połączeń, Wykrywanie Krotności, etc.) oraz wewnętrznymi mechanizmami kontroli poprawności (Kontrola Składni, Kontrola Struktury, Kontrola Kontektowa, etc.). Dzięki temu projektant
udostępniając Świat Obiektów użytkownikom ma pewność, że generowany przez BusinessObjects SQL będzie poprawny.
•
Kroki prowadzące do stworzenia efektywnego Świata Obiektów to:
•
Połączenie z bazą danych
•
Odwzorowanie (fragmentu lub całości) struktury bazy danych
•
Przetłumaczenie struktury na słowa (obiekty)
•
Udostępnienie gotowego Świata Obiektów użytkownikom
„Świat obiektów – świat analiz”
213
Połączenie z bazą danych odbywa się za pośrednictwem sterowników dedykowanych (Oracle,
DB2, Informix, Teradata, Sybase, SQL Server). Dzięki temu generowany na podstawie Świata
Obiektów kod SQL zawiera natywne funkcje bazy danych (np. DECODE) a zapytanie jest wykonywane efektywnie. W przypadku bazy Oracle należy w SQL*Net stworzyć serwis TNS a
następnie wskazać go z poziomu aplikacji Designer.
Rys. 2. Moduł Designer. Połączenie z bazą danych zostało nawiązane. Projektant może teraz wybrać tabele,
które posłużą za podstawę Świata Obiektów
Po podłączeniu się do bazy danych i wybraniu potrzebnych tabel należy odtworzyć strukturę
bazy danych (lub wybranego fragmentu) definiując relacje między tabelami, określając krotności i ewentualnie edytując formuły warunkowe relacji. Można to zrobić ręcznie lub automatycznie (Designer odczyta Constrains bazy Oracle). Następnie aplikacja optymalizuje obraz struktury bazy danych (nie modyfikując samej bazy) pod kątem generatora SQL, który będzie korzystał ze Świata. Wykrywane i rozwiązywane są tzw. pętle, powstają inteligentne konteksty zapobiegające wysyłaniu do bazy danych błędnych zapytań SQL. Dodatkowo projektant może stworzyć tzw. Shortcut Joins (Połączenia Skrótowe), które pozwalają wielokrotnie skrócić wykonywanie zapytań. Jeżeli baza danych posiada tabele zagregowane (nawet nie połączone z główną strukturą) można dodać je teraz i następnie tak skonfigurować Świat Obiektów (funkcja
@AggregateAware) aby odwoływał się do tych tabel zawsze wtedy kiedy kombinacja użytych
przez użytkownika obiektów pozwala na sięgnięcie do agregatów zamiast do tabel detalicznych!
214
Bartosz Dobrowolski
Rys. 3. Środowisko pracy projektanta – aplikacja Designer. Struktura bazy danych. W tym przypadku relacje
między tabelami zostały automatycznie odczytane z Constrains bazy Oracle
Mając przygotowaną strukturę bazy danych można przystąpić do kreowania obiektów. Każdy
obiekt posiada szczegółową definicję składającą się z nazwy i opisu, typu danych, które będzie
przynosił, fragmentu SQL (klauzula Select i Where) zbudowanego z dowolnej kombinacji
funkcji bazodanowych, definicji listy wartości przeznaczonej do definiowania warunków, etc.
Obiekty można tworzyć także przeciągając po prostu pole tabeli lub całą tabelę z okna struktury
(po prawej) na okno Świata Obiektów (panel po lewej). Obiekt zostanie stworzony automatycznie z domyślnymi ustawieniami, które następnie można edytować.
„Świat obiektów – świat analiz”
215
Rys. 4. Okienko edycji definicji obiektu. Na zakładce Właściwości można ustalić typ obiektu (wymiar, miara,
szczegół)
Aby ułatwić użytkownikom pracę, obiekty grupuje się w klasy (te z kolei mogą posiadać podklasy itd). Klasy porządkują dostępne dla użytkownika dane tematycznie lub hierarchicznie.
Hierarchie mogą być stworzone automatycznie jednak najczęściej projektant sam decyduje o
porządku i kierunkach drążenia danych pozostawiając także do dyspozycji domyślne definicje.
Dzięki temu użytkownik aplikacji analitycznej BusinessObjects może sam zdecydować z jakiej
perspektywy chce oglądać dane a przy pomocy funkcji Drill swobodnie poruszać się po udostępnionych wymiarach (np. przechodzić płynnie z informacji o latach do kwartałów potem
miesięcy, produktów) . Podczas analizy wszystkie wartości liczbowe będą wyliczane w czasie
rzeczywistym. Dzięki podziałowi obiektów na trzy typy jest to możliwe także podczas pracy w
trybie off-line, bez połączenia z bazą danych!
Aby możliwa była efektywna i wygodna praca off-line definiując obiekt należy zakwalifikować
go do jednej z trzech kategorii (patrz rys. 1):
Wymiar (Dimension)
Obiekt Szczegółowy (Detail)
Miara (Measure)
Wymiary to główne wątki analizy, takie jak czas (rok, miesiąc, data faktury, etc.), klient (numer, nazwa, etc.) czy struktura organizacyjna (kraj, miasto, oddział, departament, pracownik,
etc.). Obiekty Szczegółowe nie mogą istnieć samodzielnie i zawsze są „przywiązane” do Wymiaru stanowiąc coś w rodzaju jego atrybutów, dodatkowych informacji, które nie wchodzą w
skład hierarchii i nie są wykorzystywane podczas analizy (np. drążenia danych). Obiektem
Szczegółowym może być na przykład numer telefonu, kod pocztowy czy adres. Wyjątkowym
typem obiektu jest natomiast Miara.
Obiekt typu Miara posiada poza podstawowymi parametrami „zaszytą” funkcję agregującą
(min, max, suma, średnia, zlicz, etc.). Właściwie posiada nawet dwie funkcje tego typu. Jedna
określana jest na poziomie kodu SQL (patrz rys. 4) i po uruchomieniu zapytania wykona się po
stronie serwera bazy danych. Druga (niewidoczna na rysunku ponieważ znajduje się na innej
216
Bartosz Dobrowolski
zakładce) określa w jaki sposób wartości liczbowe będą wyliczane podczas pracy bez połączenia z bazą danych. Oznacza to, że kiedy użytkownik uruchomi raport i otrzyma z bazy danych
wstępnie zagregowany wynik zapytania, może potem dowolnie „przewracać” i „kroić” uzyskane dane a wartości liczbowe będą automatycznie przeliczane lokalnie (na jego stacji) bez konieczności łączenia się ze źródłem danych. Dzięki temu, że wynik zapytania może być przechowywany wewnątrz pliku raportu, pracę nad danymi można kontynuować w dowolnym miejscu i czasie a raz uruchomiony raport (może nawet automatycznie przy pomocy serwera BroadcasAgent) jest gotowy do analizy dla wszystkich uprawnionych użytkowników bez konieczności czasochłonnego odświeżania. Miara domyślnie agreguje się do poziomu wymiarów, z którymi znajduje się w bloku danych (tabela, wykres, macierz). Użytkownik może oczywiście dowolnie wpływać na kontekst agregacji i układ danych.
4. Dzień siódmy
Aby możliwe było zbudowanie raportu projektant po stworzeniu Świata musi udostępnić go
użytkownikom. Sposobów jest kilka. Ponieważ Świat jest pojedynczym plikiem może być udostępniany jako plik poprzez strukturę katalogów czy pocztę elektroniczną. Sposób prosty ale
kłopotliwy w przypadku konieczności wprowadzenia zmian do Świata Obiektów (aktualizacji
struktury bazy danych, przemianowania czy dodania nowych obiektów) – w takim przypadku
należałoby ponownie przesłać świat, upewnić się, czy wszyscy użytkownicy korzystają z nowej
wersji itd. Dużo wygodniej i bezpieczniej można udostępnić Świat Obiektów poprzez repozytorium systemu BusinessObjects.
Repozytorium BusinessObjects to pewnego rodzaju biblioteka. Biblioteka przechowująca zarówno Światy Obiektów jak i dokumenty (z danymi i bez) ale dodatkowo pełniąca funkcje medium pomiędzy użytkownikami systemu oraz będąca centralnym elementem wewnętrznego systemu bezpieczeństwa BusinessObjects (można go opcjonalnie połączyć z domeną NT i wewnętrznym systemem haseł baz danych). Repozytorium to zwykła, relacyjna baza danych
(Oracle, DB2, MS SQL Server, etc) , która w celu określenia polityki bezpieczeństwa generowana jest automatycznie w dowolnej przestrzeni wybranego przez administratora motoru bazy
danych. Tworzenie repozytorium odbywa się z poziomu aplikacji zarządczej Supervisor (patrz
architektura na rys. 5). W tej aplikacji administrator systemu tworzy też drzewiastą hierarchię
użytkowników, nadaje im prawa dostępu do aplikacji, funkcji aplikacji, dokumentów, Światów
Obiektów (z wyszczególnieniem widocznych dla użytkownika obiektów) oraz do danych nawet
na poziomie pojedynczego rekordu. Od momentu stworzenia repozytorium użytkownicy systemu aby skorzystać z jakiejkolwiek aplikacji muszą zweryfikować swój login i hasło. Trzy
błędne próby logowania i....pozostaje już tylko telefon do administratora.
„Świat obiektów – świat analiz”
217
Rys. 5. Architektura systemu BusinessObjects
Wróćmy jeszcze na moment do współdzielenia Światów Obiektów. Projektant umieszcza gotowy Świat w Repozytorium. Dla większego bezpieczeństwa wszystkie informacje dostępowe
(dane serwera, login i hasło) do bazy danych, na której zbudowany został Świat Obiektów przechowywane są w oddzielnym miejscu Repozytorium i nigdy nie są zapisywane na stacji użytkownika. Przy każdym połączeniu do źródłowej bazy raportowej (czyli przy uruchomieniu raportu – zapytania) aplikacja analityczna BusinessObjects sięga do Repozytorium, pobiera dane
logowania uwierzytelniające użytkownika, „podstawia” je do klienta bazy a następnie po uzyskaniu dostępu do danych usuwa z pamięci. Świat Obiektów umieszczony w Repozytorium jest
silnie zabezpieczony a ewentualne modyfikacje wystarczy zaimplementować w jednej jego kopii. Zmiany zostaną automatycznie naniesione na wszystkich stacjach klienckich i raportach.
Repozytorium pełni także funkcję biblioteki dokumentów. Użytkownicy mogą wysyłać do niej
raporty, odbierać je, publikować, współdzielić a dzięki zdefiniowanemu za pomocą aplikacji
Supervisor systemowi bezpieczeństwa każdy użytkownik widzi tylko raporty do których został
uprawniony. System posiada zaawansowany mechanizm ograniczający dostęp do krytycznych
danych. Dzięki temu kilka osób mających dostęp do jednego raportu po jego otwarciu zobaczy
dane przeznaczone tylko dla siebie. Dyrektor Sprzedaży otwierając np. „Raport Miesięczny
Sprzedaży” zobaczy więc zestawienie wyników wszystkich oddziałów firmy, lecz kierownicy
poszczególnych oddziałów pobierając dokładnie ten sam dokument z biblioteki zobaczą tylko
dane swojej jednostki! Filtrowanie odbywa się automatycznie i zupełnie przezroczyście dla
użytkownika.
5. Adam i Ewa
Spójrzmy teraz na system z punktu widzenia użytkownika końcowego. Aby rozpocząć pracę z
aplikacją raportową BusinessObjects użytkownik (np. Adam) musi oczywiście podać swój login
i hasło (sprawdzane w repozytorium lub przy odpowiednich prawach z zaszyfrowanego pliku
profilu zapisanego na stacji użytkownika). Następnie może otworzyć istniejący raport z Repozytorium lub z dysku . Raport zawiera dane więc bez łączenia do bazy danych Adam może rozpocząć analizę. Wartości liczbowe są agregowane lokalnie bez potrzeby sięgania do bazy danych (Miary z wewnętrzną funkcją obliczeniową!). Adam tworzy nowe zakładki raportu, wy-
218
Bartosz Dobrowolski
kresy, tabele, drąży dane, kroi je i przegląda z różnych perspektyw. W dowolnym momencie
Adam może odświeżyć raport aby wypełnić swoją analizę najświeższymi danymi. BusinessObjects odczyta wtedy z pliku raportu nazwę Świata Obiektów, którego autor raportu użył do budowy zapytań. Następnie sprawdzane jest czy na dysku użytkownika znajduje się najświeższa
wersja pliku Świata. Jeśli w repozytorium znajduje się nowsza wersja Świata to następuje jego
aktualizacja i uruchomienie zapytania. W tym momencie BusinessObjects wie już do jakiej bazy będzie się łączyć. Na stacji klienckiej znajduje się sterownik tej bazy i aby uzyskać połączenie do bazy źródłowej, z Repozytorium pobierane są dane logowania. W tym samym czasie do
zapytania wysyłanego od użytkownika dodawane są odpowiednie warunki, które odfiltrują tylko dane, do których użytkownik ma prawo. Następuje połączenie z bazą, zapytanie jest przetwarzane a wynik trafia do raportu, jest formatowany i prezentowany na ekranie.
Rys. 6. Moduł BusinessObjects. Panel Zapytań. Jedyny element systemu, który musi opanować użytkownik
aby samodzielnie budować zapytania do bazy danych za pomocą myszy
Tworzenie nowego raportu odbywa się niemal identycznie z tą tylko różnicą, że użytkownik
zamiast uruchamiać gotowe zapytanie definiuje je sam w Panelu Zapytań (patrz rys. 6) przeciągając za pomocą myszki ze Świata Obiektów te elementy, które chciałby zobaczyć w raporcie,
definiuje warunki, tworzy podzapytania, parametry, listy wartości. W tle generowane jest zapytanie, które następnie przesyłane jest do bazy danych (patrz rys. 7).
„Świat obiektów – świat analiz”
219
Rys. 7. Przetwarzanie zapytania. BO Data Access Pack tłumaczy kombinację obiektów z Panelu Zapytań na
język SQL. Wynik zapytania jest dodatkowo lokalnie indeksowany dla zwiększenia wydajności
Warto jeszcze wspomnieć, że Świat Obiektów to tylko jedno ze źródeł danych, które mogą być
użyte w raportach BusinessObjects. W dokumentach można wykorzystać pliki lokalne (Excel,
CSV, txt), bazy OLAP (np. Oracle Express za pośrednictwem analogicznego do zwykłego
OLAP Panelu), dane z zewnętrznych systemów takich jak Oracle Application, SAP, Baan, Siebel, etc (istnieją gotowe Światy Obiektów i raporty do tych systemów), stron WWW i wielu,
wielu innych. Dane z wielu źródeł można łączyć na poziomie raportu nawet w jednym bloku
danych (tabeli, macierzy, etc).
Do danych oraz biblioteki raportów (Repozytorium) możliwy jest także dostęp przez przeglądarkę internetową (np. Internet Explorer, Netscape, etc.). W takiej sytuacji na stacji klienta nie
jest wymagane żadne dodatkowe oprogramowanie, żadne rozszerzenia czy sterowniki baz danych. Obsługą zapytań zajmuje się wtedy serwer aplikacji WebIntelligence (patrz rys. 5) i poprzez niego na podobnych zasadach jak w przypadku aplikacji klienckiej BusinessObjects użytkownik loguje się do systemu, sięga do dokumentów, odświeża je, generuje nowe zapytania (w
webowym odpowiedniku Panelu Zapytań), współdzieli je. Istnieje też możliwość wykorzystania
środowiska mieszanego. To interesujące rozwiązanie pozwala użytkownikom BusinessObjects
(pracującym w architekturze klient-serwer) dostać się do danych za pośrednictwem serwera
WebIntelligence (architektura wielowarstwowa). Dzięki temu nie ma konieczności wystawiania
bazy danych w Internecie czy nawet Intranecie. Wystarczy udostępnić stronę WWW a schowany za wszystkimi firewall’ami serwer WebIntelligence przez zaszyfrowane SSL’em łącze udostępni uprawnionym użytkownikom dane, raporty i analizy. Także przez WAP. Raporty WAP,
choć zawierające tylko kluczowe wskaźniki są aktywne, mogą być odświeżane, parametryzowane, etc.
Cały system obejmuje jedna polityka bezpieczeństwa. Jeden login, jedno hasło. Bez względu na
aplikację, z której korzysta użytkownik.
6. AD 2002
Od wspomnianego na wstępie letniego poranka upłynęło dwanaście lat. Aplikacja pozwalająca
nietechnicznym użytkownikom„przeskoczyć” SQL przerodziła się w korporacyjną platformę
dostępu do danych składającą się z aplikacji analitycznych, administracyjnych, serwera harmonogramowania, serwera aplikacji pozwalającego na dostęp do systemu z dowolnego miejsca na
świecie, rozwinięto zaawansowany mechanizm subskrypcji do danych i raportów, WAP, kom-
220
Bartosz Dobrowolski
putery naręczne PDA, możliwe stało się łączenie elementów systemu poprzez API z zewnętrznymi aplikacjami (np. GIS, BSC, etc), istnieje możliwość dowolnej modyfikacji interfejsu aplikacji (VBA/ASP/JSP) współdzielenie dokumentów dowolnego typu.....
Nadal jednak system rozwijany jest po to aby użytkownik końcowy mógł po prostu „przeskoczyć” SQL i sięgnąć do dowolnego źródła danych. Administrator systemu może zająć się administracją systemu a nie tworzeniem raportów na zamówienie.
Ostatnia wersja systemu (na dzień 17.07.2002) to BusinessObjects 5.1.5 (Polska wersja językowa)
45% użytkowników BusinessObjects w Polsce jako źródło danych stosuje bazę Oracle.
Telefon Bernarda Liautaud’a ma teraz najprawdopodobniej kolor kremowy.
Download