contextdb. prototyp kontekstowej bazy danych

Transkrypt

contextdb. prototyp kontekstowej bazy danych
Politechnika Poznańska
Wydział Informatyki i Zarządzania
Instytut Informatyki
Praca dyplomowa magisterska
CONTEXTDB. PROTOTYP KONTEKSTOWEJ BAZY DANYCH
Paweł Zaleski
Promotor
dr hab. inż. Mikołaj Morzy
Poznań, 2010 r.
Tutaj przychodzi karta pracy dyplomowej;
oryginał wstawiamy do wersji dla archiwum PP, w pozostałych kopiach wstawiamy ksero.
Spis treści
1 Wprowadzenie
1
2 Definicje
2.1 System informatyczny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Relacyjna baza danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Kontekstowa baza danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
3
4
3 Architektura systemu
3.1 Warstwa prezentacji . . . . . . . . . . . . . . . . .
3.2 Warstwa danych . . . . . . . . . . . . . . . . . . .
3.3 Warstwa pośrednicząca . . . . . . . . . . . . . . . .
3.4 Interakcja z systemem . . . . . . . . . . . . . . . .
3.4.1 Wyszukiwanie danych . . . . . . . . . . . .
Język zapytań ContextDb . . . . . . . . . .
Złożone przykłady zapytań . . . . . . . . .
3.4.2 Modyfikacja danych . . . . . . . . . . . . .
3.4.3 Czyszczenie bazy danych . . . . . . . . . .
3.4.4 Rozszerzanie funkcjonalności systemu . . .
3.5 Lista technologii, bibliotek oraz API zewnętrznych
3.5.1 Technologie . . . . . . . . . . . . . . . . . .
3.5.2 Biblioteki . . . . . . . . . . . . . . . . . . .
3.5.3 API zewnętrzne . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
6
6
8
8
8
9
9
9
10
10
10
10
11
11
4 ContextDb w akcji
4.1 Konfiguracja systemu . . . . . . . .
4.2 Przypadki użycia . . . . . . . . . . .
4.2.1 Ewidencja nowych produktów
4.2.2 Obsługa reklamacji . . . . . .
4.3 Podsumowanie . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
12
12
13
13
13
13
5 Podręcznik użytkownika
5.1 Układ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Zarządzanie kontekstami . . . . . . . . . . . . . . . . . . . .
5.2.1 Tworzenie kontekstów . . . . . . . . . . . . . . . . .
5.2.2 Dodawanie tabel do kontekstów . . . . . . . . . . . .
5.2.3 Usuwanie tabel z kontekstów . . . . . . . . . . . . .
5.2.4 Ukrywanie tabel w kontekstach . . . . . . . . . . . .
5.2.5 Zmiana układu tabel w kontekście . . . . . . . . . .
5.2.6 Zapisywanie kontekstu . . . . . . . . . . . . . . . . .
5.2.7 Otwieranie istniejących kontekstów . . . . . . . . . .
5.2.8 Przełączanie się między otwartymi kontekstami . . .
5.2.9 Usuwanie kontekstów . . . . . . . . . . . . . . . . .
5.2.10 Zamykanie otwartych kontekstów . . . . . . . . . . .
5.3 Widok tabeli . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.1 Dostosowywanie widoku tabeli . . . . . . . . . . . .
5.3.2 Edycja wartości . . . . . . . . . . . . . . . . . . . . .
5.3.3 Edycja kolumn wskazujących na dane w innej tabeli
5.3.4 Dodanie nowego wiersza . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
15
16
16
16
17
17
17
17
17
18
18
18
18
19
20
20
20
.
.
.
.
.
.
.
.
.
.
I
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
II
5.4
5.5
5.3.5 Usuwanie wiersza . .
5.3.6 Zmiana wyświetlanej
Wyszukiwanie danych . . .
Konteksty dodatkowe . . .
5.5.1 Kontekst powitalny
5.5.2 Kontekst kalendarza
5.5.3 Kontekst mapy . . .
5.5.4 Kontekst czyszczenia
. . . . . . . . .
strony danych
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
danych . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
20
21
21
21
21
22
22
23
6 Podręcznik administratora
24
7 Podsumowanie
7.1 Podsumowanie wykonanej pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2 Dalszy rozwój . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
25
25
Literatura
26
Rozdział 1
Wprowadzenie
Szybki rozwój technologii informatycznych na przestrzeni ostatnich lat, zwiększające się możliwości sprzętu i funkcjonalność oprogramowania komputerowego, przyczyniają się do systematycznego wzrostu możliwych obszarów zastosowań systemów informatycznych. Należy również dodać, że duży wpływ na tę sytuację ma coraz większy nacisk jaki kładzie się na zapewnienie łatwej i
intuicyjnej obsługi oprogramowania przez użytkowników końcowych. Systemy informatyczne znajdują zastosowania w bardzo wielu różnych dziedzinach życia: administracji, finansach, medycynie,
marketingu, zarządzaniu i innych. Informatyzacja organizacji pozwala na zoptymalizowanie pracy,
i co za tym idzie, bardziej efektywną prace. Największą wadą, która jest jednocześnie najczęstszą przyczyną rezygnacji z informatyzacji, są jej duże koszty. Budowa specjalizowanego systemu,
który będzie miał wspierać działalność organizacji jest droga i może trwać długi okres czasu, jednak
w rezultacie powstanie system który dokładnie będzie odpowiadał potrzebom informatyzowanej
organizacji. Nie zmienia to jednak faktu, że modyfikacja, nawet niewielka, charakterystyki działalności może wymusić konieczność modyfikacji systemu(która również może trwać długi okres
czasu). Alternatywą dla tego rozwiązania są systemy generyczne (ang. „off the shelf”), czyli
gotowe systemy informatyczne zorientowane na obsługę pewnej dziedziny. Rozwiązanie to niesie
ze sobą nieco mniejsze koszty, ale nabyty system może, a w rzeczywistości często tak jest, nie
do końca odpowiadać potrzebom organizacji. W takim przypadku sposób pracy organizacji musi
zostać dostosowany do sposobu działania systemu. Znaczna liczba dużych organizacji jest zinformatyzowana, jednak dla małych i średnich organizacji koszty mogą okazać się zbyt wysokie, co
prowadzi do zaniechania informatyzacji. Naturalną odpowiedzią na wymienione powyżej wady
rozwiązań mogą być elastyczne systemy informatyczne, czyli takie systemy, które dopasowują się
do wymagań danej organizacji, dziedziny zastosowań. System powinien pozwalać na łatwą i szybką
modyfikacje oferowanej funkcjonalności. Celem pracy było zaprojektowanie i implementacja prototypu kontekstowej bazy danych, nazwanego ContextDb. Prototyp jest elastycznym środowiskiem
systemu informatycznego, który spełnia dwa podstawowe zadania: przechowuje i zarządza danymi
oraz pozwala na tworzenie graficznych aplikacji prezentujących te dane. Elastyczność środowiska
zapewniona jest na trzy sposoby. Po pierwsze, przechowywane w systemie dane mogą mieć dowolny
schemat, który może być modyfikowany także po utworzeniu aplikacji. Po drugie, widoki, z których
składa się aplikacja mogą być dodawane, zmieniane i usuwane w trakcie używania aplikacji w celu
dostosowania ich do aktualnych potrzeb organizacji oraz użytkowników z niej korzystających. Po
trzecie, funkcjonalność systemu może być dodatkowo rozszerzana dzięki zastosowaniu wtyczek.
Tworzenie i modyfikacja aplikacji dla systemu jest uproszczone i nie wymaga umiejętności programowania oraz zaawansowanych umiejętności administracyjnych. Gotowe aplikacje spełniają
założenia użyteczności, obsługa interfejsu użytkownika jest intuicyjna i łatwa do nauczenia się.
Interfejs jest przejrzysty a przeznaczenie jego elementów łatwe do zidentyfikowania. Zaimplementowany system może znaleźć zastosowanie przede wszystkim do zarządzania danymi w małych
i średnich organizacjach, które nie zostały zinformatyzowane ze względu na zbyt wysokie koszty
wytworzenia specjalizowanej aplikacji dla dziedziny, którą się zajmują, bądź na zbyt wysokie koszty
gotowego oprogramowania. Struktura pracy jest następująca:
• rozdział 2 przedstawia definicje pojęć używanych w pracy,
• rozdział 3 zawiera opis architektury systemu,
• rozdział 4 przedstawia przykładowy przypadek użycia systemu,
1
Wprowadzenie
• rozdział 5 zawiera podręcznik użytkownika aplikacji,
• rozdział 6 zawiera podręcznik administratora systemu.
• rozdział 7 zawiera podsumowanie pracy.
2
Rozdział 2
Definicje
W tym rozdziale umieszczono definicje, wykorzystywane w dalszej części pracy.
2.1
System informatyczny
System informatyczny jest to zbiór powiązanych ze sobą elementów, którego funkcją jest
przetwarzanie danych przy użyciu techniki komputerowej. Na systemy informatyczne mogą się
składać obecnie takie elementy, jak:
• sprzęt - obecnie głównie komputery, oraz:
– urządzenia służące do przechowywania danych
– urządzenia służące do komunikacji między sprzętowymi elementami systemu
– urządzenia służące do komunikacji między ludźmi a komputerami
– urządzenia służące do odbierania danych ze świata zewnętrznego - nie od ludzi (na
przykład czujniki elektroniczne, kamery, skanery)
– urządzenia służące do wywierania wpływu przez systemy informatyczne na świat zewnętrzny
- elementy wykonawcze (na przykład silniki sterowane komputerowo, roboty przemysłowe,
podłączony do komputera ekspres do kawy, sterowniki urządzeń mechanicznych)
– urządzenia służące do przetwarzania danych nie będące komputerami
– urządzenia mobilne
• oprogramowanie
• zasoby osobowe - ludzi
• elementy organizacyjne - czyli procedury (procedury organizacyjne) korzystania z systemu
informatycznego, instrukcje robocze itp.
• elementy informacyjne; bazy wiedzy - ontologie dziedziny/dziedzin, w których używany jest
system informatyczny - na przykład podręcznik księgowania w wypadku systemu finansowoksięgowego
[wik]
2.2
Relacyjna baza danych
Relacyjna baza danych to system zarządzania bazą danych oparty o relacyjny model danych.
Model relacyjny reprezentuje bazę danych jako zbiór relacji. Mówiąc nieformalnie, każda relacja
jest podobna do tabeli wartości lub, do pewnego stopnia, „płaskiego” pliku rekordów. Jednak
relacje i pliki istotnie się różnią.
W modelu relacyjnym, każdy wiersz tabeli reprezentuje fakt, który zazwyczaj odnosi się do
obiektu lub zależności świata rzeczywistego. Nazwy tabel i kolumn są wykorzystywane do ułatwienia
interpretacji wartości w wierszach. Wszystkie wartości w kolumnach są tego samego typu. Posługując się formalną terminologią modelu relacyjnego, wiersz nazywamy krotką, kolumnę nazywamy
atrybutem, a samą tabelę nazywamy relacją. Typ danych opisujący typ wartości, które mogą
3
2.3. Kontekstowa baza danych
4
pojawić się w kolumnach, nazywamy domeną. Poniżej zostaną dokładniej zdefiniowane terminy domena, krotka, atrybut oraz relacja.
Domena D jest zbiorem wartości atomowych. Atomowość, w tym przypadku, oznacza, że każda
wartość należąca do modelu danych jest niepodzielna.
Relacją r o schemacie R(A1 , A2 , . . . , An ), oznaczaną r(R), nazywamy zbiór n-tek (krotek) r =
{t1 , t2 , . . . , tm }. Każda krotka jest uporządkowaną listą n wartości t = v1 , v2 , . . . , vn , gdzie vi,
1 ≤ i ≥ n, jest elementem dom(Ai ) lub specjalną wartością pustą(NULL). I-ta wartość krotki t,
która odnosi się do atrybutu Ai , będzie oznaczana przez t[Ai ].
Powyższa definicja relacji może być sformułowana w następujący sposób. Relacja r(R) jest
relacją matematyczną stopnia n zdefiniowaną na zbiorze domen dom(A1 ), dom(A2 ), ..., dom(An )
będącą podzbiorem iloczynu kartezjańskiego domen definiujących R.
r(R) ∈ dom(A1 ) × dom(A2 ) × . . . × dom(An )[EN05]
2.3
Kontekstowa baza danych
Kontekstowa baza danych jest systemem informatycznym który jest równocześnie systemem baz
danych i generatorem aplikacji bazodanowych. Jego zadaniem jest zarówno przechowywanie oraz
zarządzanie danymi, jak i ich prezentacja. Głównymi elementami kontekstowej bazy danych są konteksty, tabele danych oraz metadane. Za zarządzanie i przechowywanie danych oraz metadanych
odpowiedzialny jest relacyjny system bazy danych, ale z punktu widzenia użytkownika zniesione są
pewne cechy tych systemów. Główne różnice przedstawiono w dalszej części rozdziału. Metadane
opisują tabele przechowujące dane. Tworzenie aplikacji dla kontekstowej bazy danych nie wymaga
umiejętności programowania i żadnych dodatkowych narzędzi.
Kontekstem nazywamy widok prezentujący dane, może się na niego składać dowolna liczba
reprezentacji tabel danych. Kontekst jest dostosowany do zadania jakie w danym momencie
wykonuje użytkownik i jest przez niego definiowany. Kontekst może być tymczasowy lub trwale
zapisany w systemie.
Cechy charakterystyczne kontekstowej bazy danych:
• Naturalne klucze podstawowe - kontekstowa baza danych nie wykorzystuje automatycznie
generowanych, sztucznych identyfikatorów rekordów. Zastępują je identyfikatory naturalne,
czyli pola unikalne, już występujące w danych. Przykładowo, identyfikatorem pracownika
bądź klienta może być adres email.
• Brak kluczy obcych - w kontekstowej bazie danych nie występują klucze obce. Tabele danych
mogą być ze sobą powiązane, jednak powiązania te są jedynie logiczne. Atrybut rekordu który
wskazuje na inny rekord(w tej samej lub innej tabeli) może być pusty lub zawierać wartość
która nie występuje jako klucz podstawowy wskazywanej tabeli. Taka sytuacja nie generuje
błędu wprowadzania danych.
• Klucze obce zastąpione mechanizmem autosugestii(autouzupełniania) - przy wprowadzaniu
wartości atrybutu będącego referencją na inny rekord aplikacja sugeruje możliwe wartości.
Zbiorem sugestii jest zbiór wszystkich wartości kluczy naturalnych tabeli, na którą wskazuje
rekord. Należy podkreślić, że użytkownik nie jest zobligowany do wybrania jednej z tych
wartości.
• Automatyczne czyszczenie bazy danych - kontekstowa baza danych udostępnia fukcję okresowego czyszczenia danych, która umożliwia poprawianie powatarzających się błędów we
wprowadzonych przez użytkownika danych.
• Przeszukiwanie całej bazy danych - zapytania kontekstowej bazy danych wykonywane są dla
wszystkich tabel i wszystkich atrybutów. Użytkownik nie jest zmuszony ani do określenia
konkretnej tabeli w jakiej mają znajdować się dane, ani do określenia, jakich atrybutów mają
dotyczyć szukane wartości.
Jedna z głównych zalet kontekstowej bazy danych to między innymi prostota i szybkość implementacji aplikacji. Tworzenie aplikacji ogranicza się do zdefiniowania metadanych opisujących
tabele danych jakie wykorzystywać ma aplikacja. Po ich zdefiniowaniu aplikacja jest gotowa do
użycia. Kolejne kroki wdrożenia aplikacji to tworzenie kontekstów. Tworzone są one jako rezultaty prostych akcji w interfejsie użytkownika - kliknięcie, przeciągnij i upuść itp. co sprawia, że
2.3. Kontekstowa baza danych
5
czynność tę może wykonać nawet niezaawansowany użytkownik. Konteksty mogą być dodawane,
modyfikowane i usuwane w dowolnym momencie podczas działania aplikacji. Te akcje nie wymagają zatrzymywania bądź restartowania aplikacji, a zapisane modyfikacje są od razu widoczne
dla innych użytkowników. Aplikacje są więc dynamiczne i dostosowane do aktualnych wymogów.
Kolejna pozytywna cecha bezpośrednio wynika z poprzedniej - użytkownik„uczy” aplikację w jaki
sposób pracuje, a nie na odwrót. Sposób prezentacji danych i poszczególne widoki, w odróżnieniu
od standardowych aplikacji bazodanowych, nie jest z góry narzucony użytkownikowi. Niewątpliwie zaletą systemu jest wykorzystanie relacyjnej bazy danych jako części systemu, dzięki temu
kontekstowa baza danych posiada pożądane cechy tych systemów, takie jak: transakcyjność, bezpieczeństwo, wielowersyjność.
Rozdział 3
Architektura systemu
3.1
Warstwa prezentacji
Warstwa prezentacji systemu jest oparta o koncepcję Model-View-Controler, zakłada ona podział
komponentów składowych systemu na trzy warstwy. Komponenty modelu reprezentują dane i
funkcje logiki biznesowej. Komponenty odpowiedzialne za wizualizację danych pobierają dane
od komponentów modelu, następnie prezentują je użytkownikowi. Komponenty sterujące, które
przechwytują żądania użytkowników, wywołują odpowiadające im metody komponentów modelu i przekazują sterowanie z powrotem do komponentów widoku. Do realizacji warstwy modelu i
sterowania wybrano szablon Spring Framework[sprb] oraz relacyjną bazę danych. Warstwę widoku
zaimplementowano przy użyciu środowiska do tworzenia bogatych aplikacji internetowych - Adobe
Flex SDK w wersji 3.5[flea]. Środowisko to pozwala na stosunkowo łatwe tworzenie złożonych interfejsów użytkownika. Aplikacje stworzone w tej technologii można w prosty sposób zintegrować z
serwerem wykorzystującym Spring Framework, dzięki jednemu z modułów tego szablonu - Spring
BlazeDS Integration[spra].
3.2
Warstwa danych
Dane aplikacji przechowywane są w relacyjnej bazie danych, ich schemat może być dowolny i
jest nieznany na etapie projektowania. Metadane i ustawienia systemu przechowywane są w tej
samej bazie danych, obejmujący je schemat relacyjny przedstawiono na schemacie logicznym bazy
danych (rysunek 3.1). Poniżej znajduje się krótki opis relacji schematu.
DatabaseTableMetadata tabela przechowuje metadane opisujące tabele danych, obejmuje ona
atrybuty:
• id - identyfikator (klucz podstawowy),
• databaseName - nazwa relacji w bazie danych,
• identifiedBy - numer kolumny identyfikującej wiersze,
• tableColor - kolor jaki ma mieć tabela podczas wizualizacji.
ColumnMetadata tabela zawiera metadane opisujące kolumny tabel danych, atrybuty relacji:
• id - identyfikator (klucz podstawowy),
• databaseName - nazwa atrybutu w bazie danych,
• columnType, columnSubType - typ oraz podtyp danych jakie przechowuje kolumna,
mogą one przyjmować następujące wartości:
–
–
–
–
–
–
columnType:
columnType:
columnType:
columnType:
columnType:
columnType:
0
0
1
1
1
2
,
,
,
,
,
,
subType:
subType:
subType:
subType:
subType:
subType:
0
1
0
1
2
0
-
łańcuch tekstowy,
lokalizacja,
liczba zmiennoprzecinkowa,
szerokość geograficzna,
długość geograficzna,
data,
• useToSearch - czy kolumna ma być wykorzystywana przy przeszukiwaniu danych,
6
7
3.2. Warstwa danych
Rysunek 3.1: Schemat logiczny bazy danych
• parentColumn - dla kolumn które w warstwie danych są reprezentowane przez kilka
atrybutów zawiera identyfikator atrybutu nadrzędnego (np. kolumna typu lokalizacja
jest nadrzędna dla kolumn typu długość i szerokość geograficzna),
• table id - identyfikator relacji która zawiera dany atrybut.
TableJoinMetadata tabela zawiera metadane opisujące połączenia między tabelami danych,
obejmuje ona atrybuty:
• id - identyfikator (klucz podstawowy),
• localTable id - identyfikator tabeli która zawiera referencje do innej tabeli,
• localColumn id - identyfikator kolumny przechowującej referencje,
• remoteTable id - identyfikator tabeli do której prowadzi referencja,
• remoteColumn id - identyfikator kolumny do której odwołuje się referencja.
ContextMetadata tabela zawiera dane opisujące konteksty, atrybuty:
• id - identyfikator (klucz podstawowy),
• name - nazwa kontekstu.
ViewTableMetadata tabela przechowuje informacje o widokach tabel w kontekstach, zawiera
atrybuty:
• id - identyfikator (klucz podstawowy),
3.3. Warstwa pośrednicząca
8
• columnOrder - kolejność wyświetlania kolumn w widoku tabeli,
• columnVisiblity - informacja które kolumny są widoczne a które ukryte,
• dataTable id - identyfikator metadanych tabeli którą ten widok wyświetla,
• context id - identyfikator kontekstu który zawiera ten widok tabeli.
FieldModification tabela zawiera informacje o modyfikacjach pól tekstowych wprowadzanych
przez użytkownika, obejmuje atrybuty:
• id - identyfikator (klucz podstawowy),
• column id - identyfikator zmodyfikowanej kolumny,
• oldValue - wartość przed modyfikacją,
• newValue - wartość po modyfikacji,
• timestamp - czas modyfikacji.
CleanRules tabela zawiera reguły automatycznego czyszczenia danych, obejmuje atrybuty:
• id - identyfikator (klucz podstawowy),
• column id - identyfikator zmodyfikowanej kolumny,
• oldValue - wartość przed modyfikacją,
• newValue - wartość po modyfikacji,
• count - wsparcie reguły (ilość „ręcznych” modyfikacji danych zgodnie z tą regułą),
• enabled - czy dana reguła jest aktywna,
• enabledSetManually - czy dana reguła została aktywowana ręcznie przez użytkownika
czy automatycznie przez system.
ContextDbProperties tabela przechowuje ustawienia systemu, atrybuty:
• name - nazwa ustawienia,
• value - wartość.
3.3
Warstwa pośrednicząca
Warstwa pośrednicząca wykorzystuje dwa mechanizmy komunikacji pomiędzy warstwą danych
a warstwą wizualizacji: odwzorowanie obiektowo-relacyjne oraz bezpośredni dostęp do bazy danych.
Pierwszy mechanizm oparty został o bibliotekę Hibernate, natomiast drugi o Java Database Connectivity (JDBC). Hibernate jest to biblioteka odwzorowania obiektowo-relacyjnego dla języka
programowania Java. Biblioteka dostarcza szkielet pozwalający na odwzorowanie zorientowanego
obiektowo modelu danych do tradycyjnego relacyjnego modelu danych. Mechanizm ten wykorzystany został do przekazywania metadanych między warstwą prezentacji a warstwą danych. JDBC
to interfejs programowania aplikacji (API) dla języka programowania Java, definiuje on sposób komunikacji pomiędzy klientem, a bazą danych. JDBC jest zorientowane na relacyjne bazy danych.
Interfejs dostarcza zbiór metod pozwalających na przeszukiwanie oraz modyfikację danych w bazie
danych przy pomocy zapytań w języku SQL. Mechanizm wykorzystano przy przekazywaniu danych
pomiędzy warstwami danych i prezentacji, odwzorowanie obiektowo relacyjne nie mogło być wykorzystane ze względu na nieznajomość schematu danych.
3.4
3.4.1
Interakcja z systemem
Wyszukiwanie danych
Wyszukiwanie danych odbywa się poprzez wprowadzenie zapytania w polu wyszukiwania interfejsu użytkownika, wynik zapytania prezentowany jest w nowym kontekście. Kontekst ten zawiera
tabele, w których znajdują się dane spełniające zapytanie.
3.4. Interakcja z systemem
9
Język zapytań ContextDb
Język zapytań wykorzystywany przez system przypomina bardziej zapytania, jakie użytkownicy przekazują wyszukiwarkom internetowym, niż tradycyjny język zapytań do relacyjnych baz
danych - SQL. Zapytanie nie określa konkretnej tabeli, która ma zostać przeszukana, przeszukiwane są wszystkie tabele (interfejs użytkownika pozostawia możliwość wykonania zapytania dla
jednej tabeli). Zapytanie składa się z symboli (liczba, słowo, data) oraz operatorów. W zapytaniu nie zaznacza się z góry, że dany symbol musi występować w konkretnym polu wiersza,
przeszukiwane są wszystkie pola o typie odpowiadającym danemu symbolowi. Przykładowo, jeśli
wyszukujemy słowa „Steven”, w odpowiedzi otrzymamy wszystkie wiersze, które w co najmniej
jednym polu o typie łańcuch znaków zawierają ciąg „Steven”. Poniżej przedstawiona jest lista
operatorów wraz z krótkim opisem i przykładami.
• Spacja - operator logiczny „i”. Przykład:
– „Steven King” - znajdzie wiersze które zawierają w co najmniej jednym polu tekstowym
słowo „Steven” oraz jednocześnie zawierają w co najmniej jednym polu tekstowym słowo
„King”.
• Przecinek - operator logiczny „lub”. Przykład:
– „Steven, King” - znajdzie wiersze które zawierają w co najmniej jednym polu tekstowym
słowo „Steven” lub słowo „King”.
• Dwukropek - operator „pomiędzy” dotyczy jedynie liczb i dat. Przykłady:
– „100:1000” - znajdzie wiersze których co najmniej jedno pole zawiera dane liczbowe, a
przechowywana w tym polu liczba należy do przedziału [100,1000],
– „20.01.2009:25.03.2010” - w odpowiedzi otrzymamy wiersze, których co najmniej jedno
pole zawiera datę pomiędzy 20 styczniem 2009 i 29 marcem 2010.
• Operatory relacyjne ( >, <, >=, <=, =) - operatory relacyjne, odpowiednio: większe,
mniejsze, większe równe, mniejsze równe, równe. Dotyczą jedynie liczb i dat, operator „=”
jest operatorem domyślnym dla liczb i dat, zapytanie „=100” jest równoważne zapytaniu
„100”. Przykłady:
– „>1000” - znajdzie wiersze których co najmniej jedno pole zawiera dane liczbowe, a
przechowywana w tym polu liczba jest większa niż 100,
– „<9.06.2010” - w odpowiedzi otrzymamy wiersze, których co najmniej jedno pole zawiera datę przed 9 czerwca 2010.
• Dodatkowo, jeśli szukamy dat z zakresu pewnego miesiąca zamiast dnia podajemy „*”.
Przykładowo, jeśli interesują nas dane ze stycznia 1998 roku, w zapytaniu wpisujemy „*.01.1998”
Złożone przykłady zapytań
• Zapytanie w języku naturalnym: „Znajdź pracowników zatrudnionych przed 29 lutym 1998,którzy
zarabiają więcej niż 1500 i nazywają się King lub McQueen”. W języku zapytań systemu
ma postać: „”<29.02.1998 >1500 King, McQueen”
• Zapytanie w języku naturalnym: „Znajdź faktury na kwotę ponad 500, wystawioną pomiędzy
23 czerwca 2009 i 6 października 2009, a liczba sprzedanych produktów nie przekracza 3”.
W języku zapytań systemu ma postać: „>500 23.06.2009:6.10.2009 <3”
3.4.2
Modyfikacja danych
W systemie, w przeciwieństwie do relacyjnych baz danych, w których modyfikacja odbywa
się przy pomocy języka modyfikacji danych, dane modyfikowane są poprzez intuicyjne akcje w
interfejsie użytkownika. Edycja danej komórki wiersza odbywa się poprzez dwukrotne kliknięcie,
w którego rezultacie zostaje wyświetlone pole do wprowadzenia danych, jest ono różne dla różnych
typów danych. Pole wprowadzania danych tekstowych sugeruje użytkownikowi możliwe wartości,
na podstawie znajdujących się w bazie danych wartości kolumny. Pole wprowadzania daty pozwala
3.5. Lista technologii, bibliotek oraz API zewnętrznych
10
na wybór jedynie takich wartości, które są poprawnymi danymi. Takie podejście pozwala na
uniknięcie części błędów przy edycji danych. Wstawienie danych odbywa się poprzez kliknięcie
przycisku dodania wiersza, do tabeli zostaje dodany pusty wiersz, następnie puste pola wypełnia
się w taki sam sposób w jaki edytuje się istniejące dane. Usuwanie danych odbywa się poprzez
kliknięcie przycisku usuwania wiersza, który znajduje się przy każdym z wyświetlonych wierszy
tabeli. Usunięcie danych jest poprzedzone żądaniem potwierdzenia tej operacji.
3.4.3
Czyszczenie bazy danych
Opisany wyżej mechanizm sugestii wartości dla pól tekstowych częściowo chroni przed wprowadzeniem przez użytkownika wartości błędnych. Nie spełni on jednak swojej roli, jeśli użytkownik
bardzo szybko wpisał dane, nie zwracając uwagi na sugestie lub wprowadza nową wartość. W
celu usprawnienia usuwania takich błędów system został wyposażony w moduł automatycznego
czyszczenia danych. Każda wprowadzona przez użytkownika modyfikacja danej tekstowej jest zapisywana, system przechowuje informację o modyfikowanej kolumnie oraz jej wartości przed i po
edycji. Modyfikacje o identycznej strukturze agregowane są w regułach czyszczenia, jeśli ilość liczba
modyfikacji przekracza pewien ustalony próg reguła zostaje automatycznie aktywowana przez system. Użytkownik ma możliwość ręcznego włączania bądź wyłączania reguł, w takim wypadku
system nie modyfikuje aktywności reguły. Czyszczenie jest uruchamiane automatycznie co pewien
czas, może również być uruchomione na żądanie z poziomu interfejsu użytkownika.
3.4.4
Rozszerzanie funkcjonalności systemu
Elastyczność systemu zapewniają wtyczki, dzięki którym możliwe jest dodanie nowej lub rozszerzanie istniejącej funkcjonalności. Wtyczki to dodatkowe konteksty które mogą służyć na przykład
do wyświetlania danych w inny sposób niż domyślne tabele, generować zapytania poprzez pewne
akcje w interfejsie użytkownika. System wyposażono w dwie przykładowe wtyczki: Kalendarz oraz
Mapę.
Pierwsza wymieniona wtyczka zawiera graficzny kalendarz. Widok obejmuje miesiąc z podziałem na poszczególne dni. Użytkownik jest informowany o istnieniu danych dotyczących poszczególnych dni, poprzez graficzne znaczniki umieszczone na kalendarzu. Kolory znaczników odpowiadają
kolorowi przypisanemu tabeli zawierającej te dane. Kontekst kalendarza pozwala również na zaznaczenie dnia, bądź dowolnego okresu czasu, a następnie wykonanie zapytania, które znajdzie
dane dotyczące tego okresu czasu.
Druga wtyczka wykorzystuje Google Maps Flash API, kontekst wyświetla mapę świata. Pozwala
on na zaznaczenie pewnego obszaru na mapie świata i wykonanie zapytania, które wyszuka dane
zawierające lokalizacje znajdujące się w tym obszarze. Na mapie, na żądanie użytkownika, mogą
być wyświetlone znaczniki pokazujące lokacje dla których istnieją dane.
Powyższe przykłady pokazują jak można wykorzystać wtyczki do rozszerzenia funkcjonalności
systemu. Nie zawsze jednak muszą to być konteksty jednocześnie wyświetlające dane w sposób inny
niż domyślny i generujące zapytania, mogą one wykonywać tylko jedną z tych funkcji. Bardziej
złożone wtyczki mogłyby rozszerzyć system na przykład o moduł eksploracji danych lub generator
raportów pozwalający na liczenie agregatów, generacje wykresów itp.
3.5
3.5.1
Lista technologii, bibliotek oraz API zewnętrznych
Technologie
Technologie:
• język programowania Java,
• szablon Spring Framework[sprb][spra],
• Adobe Flex SDK 3.5 (MXML, ActionScript, CSS)[flea][fleb] - prezentacja wyników,
• relacyjna baza danych MySQL - przechowywanie danych oraz metadanych aplikacji, w praktyce MySQL może być zamieniony na dowolny inny relacyjny system zarządzania bazą
danych.
3.5. Lista technologii, bibliotek oraz API zewnętrznych
3.5.2
Biblioteki
Biblioteki:
• Hibernate[hib] - odwzorowanie obiektowo-relacyjne metadanych,
• JDBC[jdb] - pobieranie, modyfikacja danych aplikacji.
3.5.3
API zewnętrzne
API zewnętrzne:
• Google Maps API[mapb][mapa] - wizualizacja lokalizacji na mapie świata.
11
Rozdział 4
ContextDb w akcji
Rozdział ten opisuje przykład wdrożenia systemu. Przedstawione zostały wszystkie etapy
takiego wdrożenia począwszy od konfiguracji, poprzez definiowanie początkowego zbioru kontekstów, a kończąc na przykładowych przypadkach użycia. Wdrożenie ma miejsce w fikcyjnym, małym
przedsiębiorstwie zajmującym się sprzedażą pewnych produktów. Dla uproszczenia przyjmujemy,
że przedsiębiorstwo już posiada relacyjną bazę danych z wprowadzonym schematem. Częścią tego
schematu są relacje Produkty, Sprzedaże i Reklamacje. Pierwsza relacja przechowuje ewidencje
oferowanych produktów, druga informacje o sprzedażach produktów, natomiast trzecia o reklamacjach sprzedanych produktów. Schemat logiczny bazy danych przedstawiono na rysunku 4.1.
Sposób wykonania czynności opisanych w tym rozdziale szczegółowo opisano w rozdziałach: Podręcznik użytkownika(rozdział 5) oraz Podręcznik administratora(rozdział 6).
Rysunek 4.1: Schemat bazy danych
4.1
Konfiguracja systemu
Administrator instaluje wymagane przez system oprogramowanie - kontener aplikacji Apache
Tomcat. Instaluje dystrybucję systemu na serwerze i uruchamia go, co powoduje utworzenie
schematu metadanych. Po zainstalowaniu administrator modyfikuje schemat bazy danych tak
aby odpowiadał założeniom kontekstowej bazy danych. Usunięte powinny zostać atrybuty będące
sztucznymi identyfikatorami krotek, ponieważ system wymaga dodania do relacji kolumn identyfikujących wiersze, które są niewidoczne dla użytkownika końcowego, administrator zmienia ich
nazwę z id na cdbRowId i przesuwa je na koniec listy atrybutów. Następnie usunięte zostają
klucze obce. Jako nowe kolumny identyfikujące wiersze zostają wybrane atrybuty: kod produktu
dla relacji produkty oraz numer faktury dla relacji sprzedaże, natomiast dla relacji reklamacja
kolumna identyfikująca nie jest ustalona, ponieważ na jej identyfikator nie wskazywał żaden klucz
12
4.2. Przypadki użycia
13
obcy. Typ atrybutów które były kluczami obcymi zostaje zmieniony na łańcuch znaków, ponieważ
taki typ mają wybrane identyfikatory naturalne. Po wykonaniu tych czynności, można przejść do
definicji metadanych. Należy utworzyć następujące dane:
• 3 krotki zawierające informacje o relacjach w DatabaseTableMetadata,
• 14 krotek zwierających informacje o atrybutach tych relacji w ColumnMetadata,
• 3 krotki zawierające informacje o połączeniach między relacjami Produkty i Sprzedaże,
Sprzedaże i Reklamacje oraz Produkty i Reklamacje.
Po utworzeniu metadanych aplikacja jest gotowa do użytkowania. Administrator uruchamia aplikację i tworzy, na podstawie swojej wiedzy o sposobie wprowadzania danych, początkowy zbiór
kontekstów: Ewidencja produktów, Obsługa reklamacji, Ewidencja sprzedaży. Pierwszy zawiera
tabelę Produkty, drugi tabele Reklamacje i Produkty, natomiast trzeci Sprzedaże i Produkty.
Wszystkie te czynności, ze względu na ich niski poziom trudności, nie powinny zabrać administratorowi więcej niż godzinę czasu. Aplikacja jest gotowa i może zostać udostępniona użytkownikom
końcowym.
4.2
Przypadki użycia
Wykorzystywanie aplikacji zostanie przedstawione na przykładzie dwóch przypadków użycia:
ewidencji nowych produktów oraz obsługi zgłoszenia reklamacji.
4.2.1
Ewidencja nowych produktów
Przedsiębiorstwo rozszerza swoją działalność o kilka nowych produktów, pojawia się konieczność
wprowadzenia ich do ewidencji. Pracownik któremu zlecono to zadanie uruchamia aplikację, po
jej uruchomieniu zostaje wyświetlony kontekst powitalny, z listy kontekstów użytkownik wybiera i
otwiera kontekst Ewidencja produktów. Użytkownik klika przycisk dodawania nowego wiersza tyle
razy ile nowych produktów ma wprowadzić, do tabeli zostaje wstawiona potrzebna liczba pustych
wierszy. Następnie, dla każdego wiersza użytkownik wprowadza dane. Aplikacja usprawnia prace
sugerując wartości pól tekstowych, na przykład automatycznie kończy częściowo wprowadzoną
nazwę producenta.
4.2.2
Obsługa reklamacji
Do punktu obsługi klienta zgłasza się klient, który chce reklamować zakupiony produkt. Pracownik punktu serwisowego uruchamia aplikację, a następnie otwiera kontekst Obsługa reklamacji. Prosi klienta o przedstawienie faktury potwierdzającej zakup, a następnie przeszukuje
tabelę Sprzedaże, żeby sprawdzić, czy taka sprzedaż faktycznie miała miejsce. Przeszukuje również
tabelę Reklamacja w celu weryfikacji, czy taka reklamacja nie miała już miejsca i nie została rozpatrzona. Następnie prosi klienta o podanie powodu reklamacji i tworzy nowy wiersz w tabeli
Reklamacje, wiążąc go z odpowiednim wierszem w tabeli Sprzedaże i odpowiednim wierszem w
tabeli Produkty. Nadaje reklamacji stan nierozpatrzona. Reklamowany produkt trafia do działu
serwisowego.
Po pewnym czasie klient dzwoni do punktu obsługi klienta, żeby dowiedzieć się, czy reklamacja
została rozpatrzona. Pracownik pyta o numer faktury i na jej podstawie wyszukuje reklamacji i
sprawdza jej stan. Jeśli klient nie jest w stanie podać numeru faktury, to użytkownik pyta go o
inne informacje, dzięki którym będzie mógł znaleźć reklamacje na przykład: email klienta, model
produktu, termin reklamacji itd. Informuje klienta o stanie reklamacji.
Pracownik serwisu po zapoznaniu się z reklamacją i oględzinach produktu, podejmuje decyzję
o jej zatwierdzeniu bądź odrzuceniu. Uruchamia aplikację, otwiera kontekst Obsługi reklamacji,
na podstawie kodu produktu i numerze faktury odnajduje odpowiadający jej wiersz i edytuje jej
stan zgodnie z podjętą decyzją.
4.3
Podsumowanie
Ten krótki przykład ilustruje, jaki potencjał ma zaimplementowany system. Proces konfigurowania i tworzenia aplikacji jest szybki. Obsługa gotowej aplikacji, pod warunkiem stworzenia
4.3. Podsumowanie
14
w racjonalny sposób kontekstów, jest intuicyjna i nie powinna sprawiać trudności użytkownikom.
Jeśli weźmiemy pod uwagę elastyczność systemu i możliwość modyfikowania kontekstów na bieżąco,
to nawet początkowe złe rozplanowanie kontekstów nie dyskredytuje systemu. Użytkownicy, stopniowo zmieniając widoki do stanu odpowiadającemu ich potrzebom, zwiększą efektywność systemu. Najwięcej czasu pochłania wstępna konfiguracja i tworzenie metadanych. Jeśli prototyp w
kolejnych wersjach zostanie poszerzony o graficzne narzędzia administratora pozwalające np. na
automatyczne generowanie metadanych z poziomu tego narzędzia, to również ten etap zajmowałby
mało czasu i był w znacznym stopniu uproszczony.
Powyższy przykład był bardzo prosty i opierał się jedynie na wprowadzaniu i edycji danych.
Jednak opcja rozszerzania funkcjonalności systemu poprzez wtyczki, sprawia, że system ma duże
możliwości. Weźmy pod uwagę niewielką firmę kurierską, zatrudniająca kurierów poruszających
się na rowerach. Istniejąca już wtyczka pozwalająca na przechowywanie informacji o dokładnych
lokacjach, wraz z jedną z propozycji dalszego rozwoju - aplikacją mobilną umożliwiłaby znaczne
zwiększenie wydajności pracy. Najlepiej zilustruje to krótki przykład. Do firmy kurierskiej dzwoni
klient, podaje adres z jakiego należy pobrać przesyłkę i na jaki adres przesyłka ma zostać dostarczona. Dane te zostają wprowadzone do tabeli zleceń, która przechowuje w tabeli lokalizacje obu
miejsc. Kurierzy wyposażeni w urządzenia mobilne, po wykonaniu zlecenia lub oczekując na zlecenie, uruchamiają aplikację i sprawdzają dostępne zlecenia. Dzięki wykorzystaniu wbudowanych w
urządzenia mobilne modułów GPS mogą wybrać zlecenie najbliższe swojej lokalizacji. Następnie
edytując wiersz zmieniają stan zlecenia na przydzielone. Wykorzystanie Google Maps API daje
możliwość kolejnego(łatwego w implementacji[dri]]) usprawnienia - znajdowanie najkrótszej drogi
do adresu początkowego, a następnie docelowego. Po dostarczeniu kurier przesyłki edytuje zlecenie
i zmienia jego stan na wykonany.
Ten przykład użycia oddaje, jak bardzo elastyczna oraz przydatna może być finalna wersja
systemu ContextDb.
Rozdział 5
Podręcznik użytkownika
Interfejs użytkownika aplikacji utworzonej dla systemu ContextDb ma przejrzysty, minimalistyczny wygląd i cechuje się intuicyjną obsługą. Poniżej przedstawiono ogólny układ elementów
interfejsu użytkownika, dalsza część rozdziału opisuje krok po kroku w jaki sposób przy jego pomocy wykonać żądane czynności.
5.1
Układ
Na rysunku 5.1 przedstawiony został interfejs użytkownika podzielony na główne obszary.
Krótki opis i charakterystyka poszczególnych elementów:
Rysunek 5.1: Główne elementy interfejsu użytkownika
• Obszar 1 - jest najważniejszą częścią interfejsu, w tym obszarze wyświetlane są widoki prezentujące dane i pozwalające na ich edycje. Widoki te nazywamy kontekstami.
• Obszar 2 - zawiera listę dostępnych tabel danych oraz kontekstów. Dalej nazywany panelem
bocznym.
• Obszar 3 - zawiera odnośniki do otwartych w danej chwili przez użytkownika kontekstów,
nazywany paskiem zakładek
• Obszar 4 - zawiera pole tekstowe do wprowadzania i uruchamiania zapytań przeszukujących
dane. Nazywamy je polem wyszukiwania.
• Obszar 5 - nagłówek, znajduje się w nim przycisk, nazywany przyciskiem startowym.
15
16
5.2. Zarządzanie kontekstami
5.2
Zarządzanie kontekstami
Kontekst jest podstawowym elementem interfejsu użytkownika. Konteksty dzielą się na dwa
typy: konteksty widoku tabel oraz konteksty dodatkowe, nazywane również wtyczkami. Ta część
podręcznika przedstawia w jaki sposób tworzone są konteksty widoku tabel oraz w jaki sposób
możemy je modyfikować. Na rysunku 5.3 przedstawiono przykładowy kontekst zawierający dwie
tabele.
Rysunek 5.2: Przykład kontekstu widoku tabel
5.2.1
Tworzenie kontekstów
Konteksty widoku tabel możemy tworzyć na trzy sposoby: tworząc pusty kontekst, przy pomocy wtyczki Welcome Context, kontekst widoku danych zostaje również utworzony w wyniki
przeszukiwania bazy danych. Dwa ostatnie sposoby przedstawione są w dalszej części rozdziału.
Tworzenie pustego kontekstu:
1. Kliknąć przycisk startowy.
2. Wyświetlone zostanie menu rozwijane.
3. Z menu rozwijanego wybrać i kliknąć pozycję New Context.
4. Zostanie utworzony pusty kontekst, widok przełączy się na nowo utworzony kontekst.
5.2.2
Dodawanie tabel do kontekstów
Do kontekstów widoku tabel w każdej chwili mogą zostać dodane tabele. W tym celu należy
wykonać następujące czynności:
1. Z listy tabel znajdującej się w panelu bocznym, wybieramy tabelę która ma zostać dodana.
2. Naprowadzamy kursor myszy na nazwę tej tabeli, wciskami i przytrzymujemy lewy przycisk
myszy.
3. Przeciągamy etykietę tabeli nad kontekst, przy pomocy ruchów myszki. W kontekście
zostanie zaznaczona pozycja na jakiej znajdzie się tabela. Pozycja może być dostoswana
poprzez przeciąganie etykiety w góre lub dół w obrębie kontekstu.
4. Zwalniamy przycisk myszy.
5. Tabela zostanie dodana do kontekstu na wybranej pozycji.
Kontekst może zawierać dowolną liczbę tabel.
5.2. Zarządzanie kontekstami
5.2.3
17
Usuwanie tabel z kontekstów
Z kontekstu w każdym momencie możemy usunąć niepotrzebne tabele, w tym celu:
1. Klikamy przycisk „x” znajdujący się w prawym górnym rogu tabeli.
2. Tabela zostanie usunięta z bieżącego kontekstu.
5.2.4
Ukrywanie tabel w kontekstach
Jeśli kontekst zawiera więcej niż jedną tabelę, a aktualnie pracujemy na danych jednej tabeli,
przydatna jest możliwość zwijania tabeli:
1. Klikamy przycisk „-” znajdujący się w prawym górnym rogu tabeli.
2. Tabela zostanie zwinięta.
Aby powrócić do pierwotnego stanu i rozwinąć tabelę, należy:
1. Kliknąć przycisk z ikoną prostokąta znajdujący się w prawym górnym rogu tabeli.
2. Tabela zostanie rozwinięta.
5.2.5
Zmiana układu tabel w kontekście
Układ (kolejność) tabel w kontekście może być zmieniany. W celu wykonania tej czynności:
1. Naprowadzamy kursor myszy nad nagłówek tabeli, którą chcemy przesunąć.
2. Naciskamy i przytrzymujemy lewy przycisk myszy.
3. Przeciągamy tabelę na nową pozycje.
4. Zwalniamy przycisk myszy.
5. Tabela będzie przesunięta na nową pozycję
5.2.6
Zapisywanie kontekstu
Konteksty, które mają być dostępne przy kolejnym uruchomieniu aplikacji, należy zapisać, w
tym celu:
1. Kliknąć przycisk startowy.
2. Wyświetlone zostanie menu rozwijane.
3. Z menu rozwijanego wybrać i kliknąć pozycję: a. Save Context - jeżeli chcemy nadpisać
układ kontekstu, b. Save Context As - jeżeli chcemy zapisać zmodyfikowany kontekst jako
osobny kontekst.
4. Jeśli kontekst nie był zapisany lub wybraliśmy opcję Save Context As, pojawi się okno
dialogowe w którym należy podać nazwę dla kontekstu.
5. Kontekst i jego układ zostanie zapisany.
5.2.7
Otwieranie istniejących kontekstów
Zapisane konteksty otwieramy w następujący sposób:
1. Wybieramy interesujący nas kontekst z listy kontekstów znajdującej się w panelu bocznym.
2. Klikamy etykietę tego kontekstu.
3. Wybrany kontekst zostanie otwarty i wyświetlony.
5.3. Widok tabeli
5.2.8
18
Przełączanie się między otwartymi kontekstami
Aby zmienić aktualnie wyświetlany kontekst na inny, który jest już otwarty, klikamy na zakładkę z jego etykietą, znajdującą się na pasku zakładek.
5.2.9
Usuwanie kontekstów
Zapisany kontekst, można usunąć, w tym celu:
1. Wybieramy interesujący nas kontekst z listy kontekstów znajdującej się w panelu bocznym.
2. Klikamy etykietę tego kontekstu prawym przyciskiem myszy.
3. Zostanie wyświetlone menu kontekstowe.
4. Wybieramy i klikamy pozycję Delete Context.
5. Wyświetlone zostanie okno dialogowe z prośbą potwierdzenia usunięcia kontekstu. Potwierdzamy
akcję.
6. Kontekst zostanie usunięty.
Jeśli usuwany kontekst jest aktualnie otwarty, jego tymczasowa wersja pozostanie otwarta.
5.2.10
Zamykanie otwartych kontekstów
Otwarte konteksty zamykamy wykonując następujące czynności:
1. Naprowadzamy kursor myszy na zakładkę odpowiadającą kontekstowi, który chcemy zamknąć.
2. W prawym górny rogu zakładki pojawi się przycisk ”x”.
3. Klikamy ten przycisk.
4. Kontekst zostanie zamknięty.
5.3
Widok tabeli
Przeglądanie, wstawianie, edycja i usuwanie danych odbywa się z wykorzystaniem widoku tabeli
(rysunek 5.3). Poniżej przedstawiono opis elementów widoku tabeli:
• Obszar 1 - nazywany nagłówkiem tabeli, zawiera jej nazwę oraz przyciski pozwalające na
usuwanie, zwijanie i ukrywanie tabeli w danym kontekście.
• Obszar 2 - właściwa tabela, prezentuje dane.
• Obszar 3 - nagłówek tabeli, zawiera nazwy kolumn, ikony które mogą się pojawić w nagłówku
kolumny oznaczają:
– Klucz - dana kolumna identyfikuje wiersz tabeli,
– Łańcuch - dana kolumna wskazuje na wiersz w innej tabeli.
• Obszar 4 - przyciski usuwania poszczególnych wierszy danych.
• Obszar 5 - przycisk wstawiania nowego wiersza danych.
• Obszar 6 - zawiera przyciski wyboru strony danych. Jeśli danych do wyświetlenia jest zbyt
dużo, dzielone są one na części, które nazywamy stronami.
• Obszar 7 - zawiera pole przeszukiwania tabeli, służy do wyszukiwania danych jedynie w tej
tabeli.
19
5.3. Widok tabeli
Rysunek 5.3: Widok tabeli
5.3.1
Dostosowywanie widoku tabeli
Widok tabeli można dostosować w zależności od naszych potrzeb. Pozycje kolumn mogą być
zmieniane, istnieje możliwość zmiany szerokości kolumn i ich ukrywanie. Ustalony widok tabeli
zostaje zapisany, wraz z zapisaniem kontekstu. Należy podkreślić, że dostosowany widok tabeli
jest powiązany wyłącznie z kontekstem, w którym się znajduje. Ta sama tabela może mieć różny
układ w różnych kontekstach.
Zmiana pozycji kolumny
1. Naprowadź kursor myszy na nagłówek kolumny, która ma zostać przesunięta.
2. Kliknij i przytrzymaj lewy przycisk myszy.
3. Przeciągnij kolumnę na nową pozycje.
4. Kolumna zostanie przesunięta.
Ukrywanie kolumny
1. Naprowadź kursor myszy na dowolny nagłówek kolumny.
2. Kliknij prawym przyciskiem myszy.
3. Zostanie wyświetlone menu kontekstowe.
4. Z menu wybierz i kliknij pozycję Hide nazwa kolumny, która ma być ukryta.
5. Kolumna zostanie ukryta.
Przywracanie ukrytej kolumn
1. Naprowadź kursor myszy na dowolny nagłówek kolumny.
2. Kliknij prawym przyciskiem myszy.
3. Zostanie wyświetlone menu kontekstowe.
4. Z menu wybierz i kliknij pozycję Show nazwa kolumny, która ma być przywrócona.
5. Kolumna zostanie ukryta.
5.3. Widok tabeli
20
Zmiana szerokości kolumny
1. Naprowadź kursor myszy na prawy lub lewy kraniec nagłówka kolumny (kursor zmieni
się na kursor zmiany szerokości).
2. Naciśnij i przytrzymaj lewy przycisk myszy.
3. Przeciągnij granicę kolumny do osiągnięcia pożądanego rozmiaru.
4. Zwolnij przycisk myszy.
5. Kolumna zmieni rozmiar na ustalony.
5.3.2
Edycja wartości
W celu dokonania edycji wartości jednego z pól tabeli:
1. Naprowadzamy kursor myszy nad wartość, którą chcemy edytować i klikamy dwukrotnie
lewym przyciskiem myszy.
2. Zostanie wyświetlone pole edycji, wygląd pola edycji różni się w zależności od typu danych
kolumny.
3. Wprowadź nową wartość pola.
4. Edycję akceptujemy klawiszem ENTER, kliknięciem w dowolnym miejscu, poza polem edycji
lub klawiszem TAB. W ostatnim przypadku przejdziemy od razu do edycji następnej kolumny
danego wiersza.
5. Edycję anulujemy klawiszem ESC.
5.3.3
Edycja kolumn wskazujących na dane w innej tabeli
Jeśli dana kolumna wskazuje na wiersz z innej tabeli, jej wartość możemy wpisać w polu
edycji, w tym wypadku aplikacja poda sugestie możliwych identyfikatorów wskazywanej tabeli.
Drugim sposobem jest umieszczenie tabeli wskazywanej w tym samym kontekście co edytowana
tabela, a następnie przeciągnięcie wiersza, który ma być wskazywany na wiersz, który ma na niego
wskazywać.
5.3.4
Dodanie nowego wiersza
Dodanie nowego wiersza wykonujemy w następujący sposób:
1. Klikamy przycisk dodania nowego wiersza.
2. Do tabeli za ostatnim aktualnie wyświetlanym wierszem zostanie dodany nowy pusty wiersz.
Widok zostanie automatycznie przewinięty tak, aby ten wiersz był widoczny.
3. Wartości pustemu wierszowi nadajemy w taki sam sposób, w jaki edytujemy istniejące
wartości(patrz punkt edycja).
4. Jeśli chcemy zrezygnować z wstawiania wiersza, usuwamy ten wiersz.
5.3.5
Usuwanie wiersza
Usunięcie wiersza odbywa się w następujący sposób:
1. Klikamy przycisk usuwania wiersza wyświetlony w wierszu, który chcemy usunąć.
2. Zostanie wyświetlone okno dialogowe z prośbą potwierdzenia operacji.
3. Potwierdzamy operację.
4. Wiersz zostanie usunięty.
21
5.4. Wyszukiwanie danych
5.3.6
Zmiana wyświetlanej strony danych
Zmiana aktualnie wyświetlanej strony danych odbywa się przez kliknięcie przycisku wyboru
strony danych odpowiadającego numerowi wybranej strony lub klikając przycisk Next lub Previous.
5.4
Wyszukiwanie danych
W celu znalezienia wierszy, które posiadają pewne cechy, należy wpisać zapytanie w polu
wyszukiwania lub w polu wyszukiwania tabeli i potwierdzić klawiszem ENTER lub kliknięciem
ikony lupy. Opis języka zapytań i przykłady przedstawiono w rozdziale 3. Rezultatem wyszukiwania danych we wszystkich tabelach jest nowy kontekst zawierający wszystkie wiersze spełniające
zapytanie(oczywiście z zachowaniem podziału na tabele). Rezultatem wyszukiwania danych w
pojedynczej tabeli jest zmiana wyświetlanych danych w widoku tabeli, w którym zainicjowano
wyszukiwanie.
5.5
Konteksty dodatkowe
System jest domyślnie wyposażony w cztery wtyczki, są to: kontekst powitalny, kontekst kalendarza, kontekst mapy, kontekst czyszczenia danych. W tej części podręcznika znajduje się ich
krótkie charakterystyki oraz ich sposób obsługi.
5.5.1
Kontekst powitalny
Kontekst powitalny jest wyświetlany w momencie uruchomienia aplikacji oraz automatycznie
otwierany w przypadku, gdy zostanie zamknięty ostatni kontekst. Został on przedstawiony na
rysunku 5.4. Zadaniem tego kontekstu jest wspieranie początkujących użytkowników aplikacji.
Pozwala on na utworzenie nowego kontekstu widoku tabel, otwarcie już istniejącego, rozpoczęcie
wyszukiwania danych oraz posiada odnośniki do dokumentów pomocy systemu.
Rysunek 5.4: Wygląd kontesktu powitalnego
Tworzenie kontekstu
Kontekst tworzymy w sekcji Create New Context, wybierając z listy tabele danych jakie ma
on zawierać i potwierdzając kliknięciem przycisku Create Context.
Otwieranie kontekstu
Kontekst otwieramy poprzez kliknięcie na jego etykietę w sekcji Open Existing Context.
22
5.5. Konteksty dodatkowe
Otwarcie dokumentu pomocy
Z sekcji Learn ContextDb wybieramy interesujący nas temat pomocy i klikamy jego etykietę.
Wyszukiwanie danych
Wyszukiwanie wykonujemy wykorzystując pole tekstowe w górnej części kontekstu.
5.5.2
Kontekst kalendarza
Kontekst kalendarza jest rozszerzeniem systemu o alternatywny sposób przedstawiania danych
zawierających daty i ich przeszukiwania. Widok kontekstu kalendarza przedstawiono na rysunku
5.5. Aby zmienić aktualnie wyświetlany miesiąc klikamy strzałki w lewym górnym rogu kontekstu,
które zmieniają miesiąc na następny lub poprzedni. Zmiana na konkretny miesiąc, bądź rok
odbywa się z wykorzystaniem pól rozwijanych znajdujących się w prawym górnym rogu tabeli,
oznaczonych etykietą Go to. Jeśli w bazie danych znajdują się dane dotyczące tego miesiąca, to
fakt ich istnienia jest zaznaczany na kalendarzu.
Rysunek 5.5: Wygląd kontekstu kalendarza
Wyszukiwanie danych dla okresu czasu
Wybieramy dzień klikając w niego, jeśli chcemy wyszukać dane tylko dla jednego dnia klikamy
przycisk Find in selection. Aby zaznaczyć okres czasu przechodzimy do miesiąca, w którym
ma znajdować się druga z granic okresu czasu i przytrzymując klawisz SHIFT klikamy na
wybrany dzień, następnie tak samo, jak w przypadku pojedynczego dnia klikamy przycisk
Find in selection. Domyślnie przeszukiwanie odbywa się dla wszystkich tabel, jeśli chcemy
przeszukać pojedynczą tabelę wybieramy ją z pola rozwijanego znajdującego się w lewym
dolnym rogu kontekstu.
5.5.3
Kontekst mapy
Kontekst mapy oferuje możliwość prezentacji na mapie danych, które posiadają informację
o lokalizacji oraz poszukiwania danych odnoszących się do wybranego obszaru na mapie świata.
Wygląd kontekstu przedstawiono na rysunku 5.6. Interakcja z mapą jest taka sama jak w przypadku map Google. Fakt istnienia danych dla pewnej lokalizacji jest sygnalizowany znacznikiem
umieszczonym na mapie. Kliknięcie znacznika powoduje pojawienie się informacji o wierszu powiązanym z tą lokalizacją. Znaczniki nie są wczytywane automatyczne, wczytywanie rozpoczyna się
kliknięciem przycisku z ikoną trójkąta, w prawym górnym rogu aplikacji. Rozpoczęte pobieranie
można wstrzymać przyciskiem pauza znajdującym się w tym samym miejscu.
23
5.5. Konteksty dodatkowe
Rysunek 5.6: Wygląd kontesktu mapy
Wyszukiwanie danych dla obszaru
Obszar zaznaczamy rysując prostokąt na mapie świata. Należy nacisnąć i przytrzymać klawisz SHIFT, a następnie naciskając i przytrzymując lewy przycisk myszy nakreślić prostokąt
obejmujący wybrany obszar. Wyszukiwanie rozpoczynamy klikając przycisk Find in selection. Przeszukiwane są wszystkie tabele zawierające lokalizacje lub wybrana tabela(przy
pomocy pola w lewym dolnym rogu kontekstu).
5.5.4
Kontekst czyszczenia danych
Kontekst czyszczenia danych jest powiązany z mechanizmem automatycznego czyszczenia danych.
Mechanizm ten został opisany w rozdziale Architektura. Kontekst pozwala na przeglądanie reguł
czyszczenia, ich aktywację i dezaktywację, ustawienie preferencji automatycznego czyszczenia oraz
ręczne uruchomienie procedury czyszczenia danych.
Rysunek 5.7: Wygląd kontekstu czyszczenia danych
Rozdział 6
Podręcznik administratora
Do uruchomienia systemu potrzebne są:
• Kontener Aplikacji Apache Tomcat,
• Relacyjny system zarządzania bazą danych.
Pierwszym krokiem jest zainstalowanie dystrybucji systemu w kontenerze aplikacji (plik contextdb.server.war). Jeżeli Tomcat ma uruchomiony moduł Java Security aplikacji należy nadać
poniższe prawa:
permission java.util.PropertyPermission "*", "read,write";
permission java.lang.RuntimePermission "getenv.*";
permission javax.management.MBeanServerPermission "createMBeanServer";
permission javax.management.MBeanPermission "flex.management.runtime.*",
"registerMBean";
permission javax.management.MBeanTrustPermission "register";
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
permission java.lang.RuntimePermission "getProtectionDomain";
permission java.net.SocketPermission DATABSE\_ADDRESS, "connect,resolve";
permission javax.management.MBeanPermission "flex.management.runtime.*",
"unregisterMBean";
permission java.lang.RuntimePermission "modifyThread";
permission java.io.FilePermission LOG\_FOLDER, "read";
LOG FOLDER to katalog w którym przechowywane są pliki zawierające logi Tomcata(np.
”var/lib/tomcat6/logs”), a DATABASE ADDRESS to adres IP oraz port bazy danych danych(np.
”127.0.0.1:3306”). W dalszej kolejności ustawiamy konfigurację połączenia z bazą danych , która
znajduje się w pliku:
TOMCAT HOME/webapps/contextDb.server/WEB-INF/web-application-config.xml, w komponencie o identyfikatorze „hibDataSource”. Następnie uruchamiamy serwer, w bazie danych zostaną
stworzone relacje przechowujące metadane.
Ostatnim krokiem jest definicja metadanych w tabelach DatabaseTableMetadata, ColumnMetadata oraz TableJoinMetadata. Ich strukturę opisano w rozdziale 3. Należy również do
relacji dodać automatycznie generowany atrybut liczbowy „cdbRowId”, który służy do identyfikacji krotek przez system. Po wykonaniu tych akcji aplikacja jest gotowa do użytkowania.
24
Rozdział 7
Podsumowanie
7.1
Podsumowanie wykonanej pracy
Przygotowany projekt jest w pełni funkcjonalnym prototypem kontekstowego systemu baz
danych. Pozwala on przechowywać dane i nimi zarządzać, a także w prosty sposób generować bogate aplikacje internetowe, korzystające z przechowywanych danych. Użytkownikowi końcowemu
zostają udostępnione aplikacje cechujące się intuicyjnym i przejrzystym interfejsem. Umożliwiają
one wizualizacje danych oraz ich modyfikacje. System został również wyposażony w podstawowe
wtyczki, które dodatkowo ułatwiają i urozmaicają interakcję pomiędzy aplikacją i użytkownikiem.
7.2
Dalszy rozwój
W pierwszej kolejności, system powinien być poddany testom użyteczności. Wnioski z takich
testów pomogłyby uczynić ContextDb jeszcze łatwiejszym i przyjaźniejszym w użyciu.
W następnych wersjach zaimplementowany system powinien być rozwijany o dodatkową funkcjonalność. Możliwe jest np. rozbudowanie systemu o narzędzia administracyjne, pozwalające na konfigurację środowiska z poziomu graficznego interfejsu użytkownika, przyśpieszy proces tworzenia
aplikacji. Proces ten będzie mógł być przeprowadzony przez mniej zaawansowanych użytkowników.
Interesującym rozszerzeniem byłoby dodanie do systemu modułu pozwalającego na generowanie
aplikacji na urządzenia przenośne. Dzięki temu system znalazłby zastosowanie w nowych dziedzinach. Tworząc moduł można częściowo wykorzystać istniejący kod generatora aplikacji mobilnych. Niektóre systemy operacyjne urządzeń mobilnych posiadają pełne wsparcie dla biblioteki
uruchomieniowej Flash (np. Android[and]), co pozwala na budowę modułu z wykorzystaniem Flex
SDK.
System powinien być również wyposażony w funkcje przetwarzania danych. Przykładem takiej
funkcji może być generowanie raportów na podstawie danych. Częścią takiego raportu mogłyby
być wykresy oraz wyliczone agregaty. Kolejny przykład to automatyczna eksploracja danych,
pozwalająca na odkrywanie pewnych prawidłowości i reguł w danych.
25
Literatura
[and]
Adobe and HTC Bring Flash Platform to Android. [online] http://www.adobe.com/aboutadobe/
pressroom/pressreleases/200906/062409AdobeandHTCBringFlashPlatformtoAndroid.html.
[dri]
Google Maps API for Flash Services. [online]
http://code.google.com/apis/maps/documentation/flash/services.html.
[EN05] Ramez Elmasri, Shamkant B. Navathe. Wprowadzenie do systemów baz danych. Wydawnictwo
Helion, Warszawa, 2005.
[flea]
Flex 3 Help. [online] http://livedocs.adobe.com/flex/3/html/help.html.
[fleb]
Flex 3.5 Language Reference. [online]
http://livedocs.adobe.com/flex/3/langref/index.html.
[hib]
Hibernate Documentation. [online] http://www.hibernate.org/docs.html.
[jdb]
JDBC API Documentation. [online]
http://java.sun.com/j2se/1.3/docs/guide/jdbc/index.html.
[mapa] Google Maps API ActionScript Reference. [online]
http://code.google.com/apis/maps/documentation/flash/reference.html.
[mapb] Google Maps API for Flash Developer Guide. [online]
http://code.google.com/apis/maps/documentation/flash/intro.html.
[spra]
Spring BlazeDS Integration Reference Guide. [online]
http://static.springsource.org/spring-flex/docs/1.0.x/reference/html/index.html.
[sprb]
Spring Documentation. [online] http://www.springsource.org/documentation.
[wik]
Wikipedia, wolna encyklopedia. [online] pl.wikipedia.org/wiki/System_informatyczny.
26
c 2010 Paweł Zaleski
Instytut Informatyki, Wydział Informatyki i Zarządzania
Politechnika Poznańska
Skład przy użyciu systemu LATEX.
BibTEX:
@mastersthesis{ key,
author = "Paweł Zaleski",
title = "{ContextDb. Prototyp kontekstowej bazy danych}",
school = "Poznan University of Technology",
address = "Pozna{\’n}, Poland",
year = "2010",
}