Twoja pierwsza aplikacja WWW w jedną godzinęczyli jak w kilku krokach wygenerować aplikację WWW za pomocą Designer’a/2000

Wprowadzenie

Nie trzeba nikogo przekonywać, że znaczenie aplikacji internetowych i intranetowych, czyli w ogólności aplikacji obsługiwanych za pomocą przeglądarek WWW, stale rośnie i
będzie rosnąć. Czasami trzeba jednak przekonywać, że tworzenie takich aplikacji nie
jest rzeczą trudną, albo dokładniej, nie jest trudniejsze niż zrobienie zwykłego
formularza lub raportu. W tym artykule postaram się do tego przekonać tych nie
przekonanych lub po prostu zainteresowanych tematem pokazując 9 kolejnych kroków, które
pozwalają w 60 minut wykonać zupełnie od zera aplikację WWW umożliwiającą w
przeglądarce internetowej wprowadzanie zapytania, wyświetlającą listę wyszukanych
rekordów, pozwalającą wstawiać, modyfikować i usuwać wybrane rekordy.
Zawarty poniżej opis może być z powodzeniem wykorzystany również przez osoby, które
nie projektowały jeszcze żadnego systemu pod Designer’em/2000, nie wiedzą nic na temat
HTML i nie pisały nic w PL/SQL. Może to dziwne, ale prawdziwe.
Zanim przystąpimy do wystartowania stopera odmierzającego czas i do wykonania pierwszego
kroku, upewnijmy się, że mamy zainstalowane wszystkie niezbędne narzędzia. Będą nam
potrzebne następujące produkty: Oracle Server w wersji minimum 7.2 i utworzona baza
danych, Oracle Designer/2000 w wersji min. 1.3 (ale poniższy opis dotyczy wersji 2.1) i
zainstalowane repozytorium w bazie danych, Oracle Web Application Server 3.0 lub Oracle
Application Server 4.0. Jeśli któregoś z wymienionych elementów brakuje, to zainstaluj go teraz.
Scenariusz wykonania aplikacji można opisać w postaci dziewięciu następujących
kroków:

Krok 1. Założenie nowego systemu aplikacji w Designer/2000
Krok 2. Konfiguracja Oracle Application Server
Krok 3. Instalacja pakietów narzędziowych OAS i WSG
Krok 4. Tworzenie obiektów bazy danych
Krok 5. Generowanie API tabel
Krok 6. Definiowanie nowego modułu
Krok 7. Ustawienie parametrów WebServer Generator’a
Krok 8. Generowanie modułu i instalowanie go w bazie danych
Krok 9. Testowanie aplikacji w przeglądarce WWW

Za chwilę omówimy dokładnie na czym polega każdy krok, ale najpierw zwróćmy uwagę
na to, że pewne kroki są wykonywane jednorazowo podczas budowy nowego systemu aplikacji,
a inne są wykonywane wielokrotnie. Oczywistym jest, że nowy system aplikacji pod
Designerem/2000 oraz użytkownika, który będzie właścicielem obiektów w bazie danych
będziemy tworzyć raz, na samym początku. Również Application Server będziemy
konfigurować tylko raz, to samo dotyczy zainstalowania pakietów narzędziowych OAS i
pakietów bibliotecznych WSG. Inne kroki, które można traktować jako wykonywane
jednokrotnie to projektowanie schematu bazy danych, generowanie API tabel i konfigurowanie
parametrów WebServer Generatora (zaniedbajmy fakt, że można do nich powracać podczas
implementacji kolejnych modułów aplikacji). Natomiast, kroki polegające na definiowaniu
nowych modułów aplikacji, ich generowaniu i testowaniu będą powtarzane tyle razy ile
modułów będzie wymagał nasz system aplikacji.

Krok 1.
Założenie nowego systemu aplikacji w Designer/2000

Ten krok polega na przygotowaniu bazy danych i Designera/2000 do pracy nad nowym systemem
aplikacji. Po pierwsze potrzebny nam będzie nowy użytkownik w bazie danych, który
będzie właścicielem wszystkich tworzonych przez nas obiektów (tabel, sekwencji,
pakietów, itp.). Nazwijmy go np. WWWUSER. Jeśli ktoś lubi, może go utworzyć za
pomocą Security Manager’a, ale jeśli zależy nam na czasie i chcemy zdążyć przed
upływem 60 minut to proponuję wpisać dwa proste polecenia pod SQL*Plus’em jako
użytkownik SYSTEM:

create user wwwuser identified by wwwuser;
grant connect, resource to wwwuser;

Następnie, uruchamiamy Designera/2000 logując się jako właściciel repozytorium
(zapytaj o to osobę, która instalowała repozytorium), otwieramy Navigator i za
pomocą polecenia New tworzymy nowy system aplikacji – wystarczy wpisać krótką
nazwę aplikacji (name), np. WWWAPP i jej pełną nazwę (title), np. Pierwsza
aplikacja WWW
. Zamykamy Navigator’a.
Mamy zatem użytkownika WWWUSER, w którego schemacie będziemy tworzyć wszystkie
potrzebne nam obiekty bazy danych i system WWWAPP, w którym to będziemy projektować
wszystkie elementy aplikacji. Jeśli komputer ma wystarczająco dużo pamięci, krok ten
powinien zająć nie więcej niż 3 minuty.

Krok 2.
Konfiguracja Oracle Application Server

Konfiguracja Oracle Application Server przebiega w zupełnie różny sposób w
zależności od tego z jaką wersją OAS mamy do czynienia. Powodem tego jest to, że
zarówno w wersji 3.0, jak i 4.0, występują elementy (pojęcia), które nie występują
w drugiej wersji (np. PL/SQL agent, application), a ponadto interfejs aplikacji
dla administratora jest w obu wersjach zupełnie inny. Ze względu na to, że wersja 3.0
jest jeszcze bardzo popularna, a wersja 4.0 stanie się bardzo popularna, opiszemy tutaj
konfigurowanie obu wersji OAS.

Konfigurowanie Oracle Web Application Server 3.0

     Uruchom program administratora

Uruchom przeglądarkę WWW i wpisz w niej adres serwera, na którym zainstalowano OAS 3.0,
podając również numer portu (domyślnie 8888), na którym nasłuchuje listener
administratora. Przykładowy adres może wyglądać następująco:
http://www.firma.pl:8888. Należy wówczas wpisać nazwę i hasło administratora OAS
(zapytaj o to osobę, która instalowała OAS na serwerze). Z głównej strony OAS 3.0
wybierz link Web Application Server Manager.

     Utwórz nowy DAD

DAD (Database Access Descriptor) określa sposób połączenia się z bazą
danych. Aby utworzyć nowy DAD przejdź do Oracle Web Application Server,
następnie do DAD Administration i kliknij na Create New DAD. Do
wyświetlonego formularza trzeba wpisać następujące dane: do pola DAD Name
"genwww" (nazwa może być dowolna), do pola Database User
"wwwuser", do pola Database User Password i Confirm password
"wwwuser", do pola SQL Net V2 Service – odpowiedni alias bazy danych,
zaznacz pole Store the user name and password in the DAD, na koniec wpisz nazwę
i hasło użytkownika DBA (np. SYSTEM) i kliknij na Submit New DAD. Zielony
naspis SUCCESS oznacza, że wszystkie dane zostały wpisane poprawnie, a na
liście DAD-ów pojawiła się nowa pozycja: genwww.

     Utwórz nowego agenta PL/SQL

Za pomocą przycisku Cartridge przejdź do strony z listą kartridży, a
następnie przejdź do PL/SQL Cartridge i wybierz Create New PL/SQL Agent.
W wyświetlonym formularzu należy wpisać dane nowego agenta: do pola Name of PL/SQL
Agent
wpisz – "genwww" (nazwa może być inna), w polu Name of DAD to
be used
wskaż – "genwww" (nazwa DAD-a utworzonego w poprzednim punkcie),
do pola Authorized Ports – 80 (numer musi być zgodny z numerem portu, na którym
nasłuchuje Listener), zaznacz pole Install Web Application Server
Developer’s Toolkit PL/SQL packages
, wpisz nazwę i hasło użytkownika DBA (np.
SYSTEM) i kliknij na Submit New Agent. Teraz trzeba wykazać się odrobiną
cierpliwości i poczekać na zainstalowanie pakietów.
Po dokonaniu powyższych zabiegów musimy restartować proces listenera www. W okienku Commnad
Prompt
w NT lub shella w Unix wpisz dwa polecenia: 1) owsctl stop www 2) owsctl start
www.

Konfigurowanie Application Server 4.0

     Uruchom program administratora

Uruchom przeglądarkę WWW i wpisz w niej adres serwera, na którym zainstalowano OAS 4.0,
podając również numer portu (domyślnie 8888), na którym nasłuchuje listener
administratora. Przykładowy adres może wyglądać następująco: http://www.firma.pl:8888.

     Utwórz nową aplikację

Kliknij na Applications aby wyświetlić w prawej ramce listę aplikacji. Użyj
przycisku z zielonym plusem po prawej stronie aby dodać nową aplikację. W okienku
dialogowym podaj Application Type – PL/SQL, Configure Mode
"Manually" i kliknij Submit. W kolejnym okienku wprowadź następujące
parametry: Application Name – "genwww", Display Name
"genwww", Application Version – 1, następnie kliknij Apply.

    Utwórz nowy PL/SQL cartridge

Po wprowadzeniu danych aplikacji i kliknięciu Apply, użyj przycisku Add
Cartridges to Application
aby dodać nowy kartrydż PL/SQL, a w okienku dialogowym
wpisz następujące parametry: Cartridge Name – "genwww", Display
Name
– "genwww", Virtual Path – "/genwww/plsql/" (aby
uzyskać taką samą wirtualną ścieżkę, jaką domyślnie tworzy OAS 3.0 dla nowego
agenta PL/SQL). Pozostałe pola zostaw puste i kliknij na Create New DAD aby
zdefiniować DAD’a (sposób dołączenia się do bazy danych).

     Utwórz nowy DAD

W okienku dialogowym Add DAD podaj kolejne parametry: DAD Name
"genwww", Database User – "wwwuser", Database User
Password
i Confirm Password – "wwwuser", Connect String
odpowiedni alias bazy danych, zaznacz pole wyboru Store the username and password in
the DAD
i kliknij Apply.

Po dodaniu nowej aplikacji trzeba zatrzymać i wystartować ponownie procesy OAS. W tym
celu kliknij w lewej ramce na Oracle Application Server , po prawej stronie
zaznacz "ALL", a następnie użyj przycisku z czerwonym kwadratem aby zatrzymać
procesy i z zielonym trójkątem aby je wystartować.

Krok 3.
Instalacja pakietów narzędziowych OAS i WSG

Przygotowywana przez nas aplikacja WWW będzie wygenerowana w formie szeregu pakietów
PL/SQL instalowanych w bazie danych. Wszystkie wygenerowane pakiety tego typu korzystają
z jednej strony z narzędziowych pakietów PL/SQL dostarczanych z OAS, a z drugiej strony
z pakietów bibliotecznych WSG (WebServer Generatora) dostarczanych z Designerem/2000. Oba
zestawy pakietów narzędziowych i bibliotecznych muszą zostać zainstalowane zanim
spróbujemy wygenerować i zainstalować pierwszy moduł WWW.

Instalacja pakietów narzędziowych OAS

Pakiety narzędziowe OAS (nazywane PL/SQL Toolkit lub OAS Toolkit) można zainstalować
automatycznie podczas tworzenia nowego agenta PL/SQL w OAS 3.0 lub podczas tworzenia
nowego PL/SQL cartridge w OAS 4.0. Jeśli podczas tego kroku nie wybrałeś opcji
instalacji pakietów narzędziowych, to możesz to zrobić przyłączając się do bazy
danych za pomocą SQL*Plus’a jako WWWUSER i uruchamiając skrypt OWAINS.SQL. Zakładając,
że produkty były instalowane w domyślnych katalogach na dysku C:, w przypadku OAS 3.0
należy wpisać następujące polecenia:

set scan off
start c:orantows3.0adminowains.sql
Instalacja pakietów bibliotecznych WSG

Pakiety biblioteczne WSG należy instalować za pomocą SQL*Plus’a. Będąc przyłączonym
do bazy danych jako WWWUSER należy wykonać skrypt WSGL.SQL. Zakładając, że produkty
były instalowane w domyślnych katalogach, należy wpisać następujące polecenie:

start c:orantcgenw20cvwetcwsgl.sql

Oczywiście katalog orant dotyczy Windows NT i należy go ewentualnie zastąpić przez
orawin95. Uwaga: cała operacja nam się uda pod warunkiem, że katalogiem, w którym
pracuje SQL*Plus jest ten sam katalog, w którym znajduje się WSGL.SQL (zawiera on
wywołania innych skryptów z tego samego katalogu). Można to osiągnąć tworząc skrót
do SQL*Plus’a na pulpicie i we własnościach skrótu wpisując do pola "Uruchom
w:" ścieżkę do katalogu z WSGL.SQL. Innym rozwiązaniem jest otwarcie okienka
Command, przejście do żądanego katalogu za pomocą cd i wywołanie sqlplus.

Zainstaluj dodatkowy pakiet biblioteczny przeznaczony do wspierania języka polskiego:

start c:orantcgenw20cvwetcWSGLMPL.PKS

Zainstaluj pakiet CG$ERRORS uruchamiając skrypty CDSAPER.PKS i CDSAPER.PKB:

start c:orantcgens70sqlcdsaper.pks
start c:orantcgens70sqlcdsaper.pks

W tym momencie mamy w bazie danych wszystkie obiekty, do których może potencjalnie
odwoływać się wygenerowana przez nas aplikacja i jesteśmy w ten sposób gotowi do
instalowania pakietów w bazie danych.

Krok 4.
Tworzenie obiektów bazy danych

W tym kroku zaprojektujemy schemat bazy danych i utworzymy w bazie danych wszystkie
obiekty, na których będzie działać nasza aplikacja. Ograniczmy złożoność schematu
bazy danych do jednej tabeli i jednej sekwencji, ale przejdźmy za to pełną ścieżkę
od diagramu ERD do wygenerowania obiektów w bazie danych.

Narysuj diagram związków encji (ERD)

Z głównego pulpitu Designer’a uruchom narzędzie Entity Relationship Diagrammer.
Otwórz nowy diagram za pomocą polecenia Nowy z menu Plik. Użyj
przycisku Entity z paska narzędziowego aby wrysować nową encję. Jako nazwę
encji (name) wpisz PRACOWNIK, skróconą nazwę (short name) wpisz PR, a
nazwę w liczbie mnogiej wpisz PRACOWNICY. Kliknij dwukrotnie na wrysowanej encji i w
okienku dialogowym wpisz na zakładce Attributes atrybuty encji, takie jak
pokazano na rys. 1.

rys. 1
Rysunek 1: Najprostszy diagram ERD – jedna encja

Dla atrybutu ID należy w polu Format wskazać typ NUMBER, w polu MaxLen
wpisać 6 i zaznaczyć pole wyboru Primary. Dla atrybutu NAZWISKO należy
wskazać format VARCHAR2 o maksymalnej długości 20 (pole Opt wybrane), a pole
IMIE: VARCHAR2 o długości 10. Zapisz diagram pod dowolną nazwą i zamknij narzędzie Entity
Relationship Diagrammer
.

Dokonaj transformacji ERD do schematu relacyjnego

W tym kroku wykonamy transformację diagramu (jednej encji) do schematu relacyjnego, w
wyniku czego uzyskamy definicję tabeli: kolumny i definicję klucza podstawowego. Z
głównego pulpitu Designer’a wywołaj Database Transformer i uruchom jego
działanie za pomocą przyciksu Run. Gdy w dodatkowym okienku pokazującym
przebieg transformacji pojawi się napis "Waiting for Close to be pressed",
zamknij oba okienka.

Rezultat transformacji można obejrzeć wywołując z głównego pulpitu narzędzie Design
Editor
i rozwijając pozycję Relational Table Definitions. Właśnie Design
Editor
będzie naszym podstawowym narzędziem pracy w dalszej części budowy
aplikacji.

Zdefiniuj sekwencję

Zakładamy, że identyfikatory pracowników będą nadawane automatycznie z użyciem
sekwencji. Trzeba w tym celu zdefiniować nowy obiekt typu Sequence. Na zakładce
Server Model kliknij dwukrotnie na pozycji Sequence Definitions, a
następnie wpisz w okienku z paletą własności nazwę sekwencji, np. SEQ_PRAC i zapisz
to klikając na dyskietce. Okienko dialogowe "Default Database
Implementation"
, które pojawi się podczas tworzenia pierwszej sekwencji można
zaakceptować bez modyfikacji jakiegokolwiek parametru.

Sekwencję mamy zdefiniowaną. Kolejnym krokiem jest wskazanie, że kolumna ID w tabeli
pracownicy ma być automatycznie numerowana z wykorzystaniem właśnie tej sekwencji.
Odszukaj w nawigatorze tabelę PRACOWNICY i jej kolumnę ID. Z menu Options
wybierz Use Property Pallete, a następnie kliknij dwukrotnie na ikonie
reprezentującej kolumnę ID. W okienku z paletą własności ustaw własność Sequence
na SEQ_PRAC oraz własność Server Derived na "Yes" (kolejne wartości
sekwencji będą pobierane przez wyzwalacz w bazie danych).

Mamy w tym momencie gotowy tzw. logiczny schemat bazy danych, czyli gotowe definicje
wszystkich obiektów, które będziemy tworzyć w bazie danych.

     Wygeneruj obiekty do bazy danych

Aby zdefiniowane do tej pory obiekty utworzyć w bazie danych, należy je zaznaczyć w
nawigatorze i z menu Generate wybrać polecenie Generate Database from Server
Model
. W okienku dialogowym wybierz opcję Database, a następnie wpisz
nazwę użytkownika (wwwuser), hasło (wwwuser) i alias bazy danych. Uruchom generowanie
skryptów DDL przyciskiem Start, a gdy pojawi się okienko DDL Generation
Complete
kliknij na przycisku Execute DDL. Tabela PRACOWNICY wraz z kluczem
podstawowym PR_PK oraz sekwencja SEQ_PRAC zostały utworzone w bazie danych. Co dalej?
Teraz już tylko pozostaje wykonanie aplikacji działającej na tych obiektach.

Krok 5.
Generowanie API tabel

Ten krok jest specyficznym krokiem budowy aplikacji za pomocą WebServer Generator’a. API
(Application Programing Interface) tabeli (Table API) jest zbiorem
procedur PL/SQL wykonujących podstawowe operacje DML na danej tabeli. Każdej operacji,
takiej jak: wstawienie nowego rekordu, modyfikacja danego rekordu, usunięcie rekordu i
zablokowanie wskazanego rekordu, odpowiada inna procedura. Pakiety generowane w oparciu o
zdefiniowany moduł aplikacji wykorzystują procedury z API do wykonywania operacji DML,
zatem w odniesieniu do każdej tabeli bazy danych istnieje potrzeba wygenerowania API
jeszcze przed generowaniem modułu aplikacji.
Generowanie API dla wybranej tabeli jest trywialne. Pod Design Editor’em zaznacz tabelę i
z menu Generate wybierz polecenie Generate Table API. Zaznacz opcję Oracle
podając użytkownika, hasło i alias bazy danych. Uruchom generowanie za pomocą
przycisku Start, co zakończy się utworzeniem w bazie danych pakietu o nazwie
CG$PRACOWNICY.
API tabel realizuje operacje DML więc API potrzebne jest przy każdej tabeli do której
wstawiamy, modyfikujemy lub usuwamy rekordy, ale jeśli z danej tabeli chcemy tylko
wyświetlać dane na stronach WWW, to generowanie dla niej API jest zbędne.

Krok 6.
Definiowanie nowego modułu

Przyszedł czas na określenie struktury naszej aplikacji, czyli zdefiniowania z jakich
modułów programowych będzie się ona składać. Zgodnie z duchem tego artykułu,
aplikacja będzie miała najprostszą możliwą strukturę w postaci jednego modułu.
Definiowanie modułu przebiega w następujących krokach:

  1. utworzenie modułu typu WebServer,
  2. definiowanie komponentów logicznych
  3. określanie sposobu wyświetlania.

Omówimy sobie teraz po kolei jak to zrobić.

Utworzenie modułu

Aby utworzyć nowy moduł przejdź na zakładkę Modules i z menu Options
wybierz pozycje Use Property Dialogs. Kliknij dwukrotnie na pozycji Modules
aby wywołać okienka dialogowe z własnościami nowego modułu. Jako Short Name
wpisz np. PRAC, a w polu Language wskaż Oracle WebServer. Na następnej
stronie okienka, do pól Hyperlink text i Startup page title wpisz
"Pracownicy" i "Ewidencja pracowników". Na następnej stronie, do
pola Implementation name wpisz PR (to będzie nazwa pakietu tworzonego w bazie
danych). Na kolejnej stronie możesz wpisać stałe fragmenty tekstu, które będą się
pojawiały na górze lub na dole strony WWW, a następnie kliknij na przycisku Finish.

rys. 2

Rysunek 2: Nowy moduł widoczny w nawigatorze

Utworzenie komponentu

Każdy moduł musi zawierać minimum jeden komponent, który będzie obsługiwał
wyświetlanie bądź wstawianie rekordów do danej tabeli w bazie danych. Zakładamy, że
nasz moduł będzie wyświetlał, a także umożliwiał wprowadzanie, modyfikowanie i
usuwanie rekordów w tabeli PRACOWNICY, więc musimy utworzyć komponent oparty na tej
tabeli. W tym celu należy zaznaczyć moduł PRAC w nawigatorze i wybrać polecenie Module
Component Data Wizard
z menu Tools.
W okienku dialogowym należy wpisać najpierw nazwę komponentu, np. PR (tak jak short
name
tabeli, na której będzie działał), a następnie tytuł, który będzie się
pojawiał jako nagłówek listy wyświetlonych rekordów. Na następnej stronie należy
wskazać tabelę, na której będzie zbudowany komponent, czyli w naszym przypadku tabelę
PRACOWNICY. Następną stronę (usage names) możemy zaakceptować bez
modyfikowania czegokolwiek. Na następnej stronie (operations) zaznaczamy
dozwolone operacje na wybranej tabeli. W naszym przypadku chcemy wstawiać, modyfikować,
usuwać i wyszukiwać rekordy poprzez wprowadzanie zapytań, więc zaznaczamy wszystkie
możliwe operacje. Na następnej stronie (item selection) należy przesunąć z
lewej części na prawą wszystkie te kolumny tabeli, które będą w jakikolwiek sposób
przetwarzane przez moduł. W naszej aplikacji będą to wszystkie trzy kolumny (można
posłużyć się podwójną strzałką). Klikając na polu wyboru przy kolumnie ID i
usuwając w ten sposób zaznaczenie możemy wskazać, że wartości tego atrybutu nie
mają być wyświetlane na stronie WWW. Na następnej stronie (item names)
możemy zaakceptować domyślne nazwy pól. Na następnej stronie (item operations)
zaznaczamy dozwolone operacje na poszczególnych polach. Należy wyłączyć operacje Query,
Insert
i Update dla pola ID, gdyż nie będziemy chcieli wyszukiwać
rekordów na podstawie ID, wpisywać ręcznie tych wartości (automatycznie z sekwencji),
czy też modyfikować wartości ID istniejących rekordów. Dla pozostałych pól
zostawiamy zaznaczone wszystkie operacje. Następna stronę (optional)
akceptujemy bez modyfikacji i klikamy na przycisku Finish, aby utworzyć komponent. Nowy
komponent zostanie wyświetlony w nawigatorze, tak jak pokazano na rysunku 3.

rys. 3

Rysunek 3: Komponent modułu zaraz po jego utworzeniu

Sposób wyświetlania komponentu

Możemy teraz określić jak ma być wyświetlany komponent i jego elementy składowe –
poszczególne pola. Nasz komponent ma wyświetlać pracowników i umożliwiać ich
przetwarzanie, więc musimy podać ile rekordów ma zostać wyświetlonych, jak ma być
wyświetlane imię i nazwisko, itp.
Podczas, gdy jest zaznaczony komponent PR wybierz z menu Tools polecenie Module
Component Display Wizard
. Na pierwszej zakładce okienka dialogowego należy
określić styl układu danych na stronie WWW i maksymalną liczbę wyszukanych rekordów
wyświetlanych na jednej stronie. Nie wdając się teraz w szczegóły wybierzmy styl List/Form
i wpiszmy w polu rows liczbę 20. Na następnej zakładce można wskazać
kolumny, które będą wyświetlane Zgodnie z tym, o czym była mowa poprzednio
akceptujemy pola IMIE i NAZWISKO jako wyświetlane, a ID jako ukryte. Na następnej
zakładce możemy skorygować etykiety wyświetlane przy poszczególnych polach, np.
"Imie" możemy zmienić na "Imię". Na następnej zakładce wskazujemy
tzw. pola kontekstowe czyli pola wyświetlane na wyszukanej liście rekordów (pozostałe
pola będą wyświetlane po kliknięciu na danym rekordzie). Wybierzmy tutaj NAZWISKO jako
pole kontekstowe, a IMIĘ będzie wyświetlane na życzenie. Następnie możemy kliknąć
na Finish aby zakończyć określanie sposobu wyświetlania komponentu.

Diagram modułu

Wewnętrzną strukturę modułu i sposób jego wyświetlania można w dogodny sposób
oglądać i modyfikować na tzw. diagramie modułu (module diagram). Najszybciej
można to zrobić jeśli klikniemy myszką na module PRAC i przeciągniemy go na szary
obszar poza nawigatorem – diagram modułu pojawi się automatycznie. Zostaje wówczas
wyświetlona struktura logiczna modułu: żółte komponenty bazowe i nazwy używanych
kolumn. Za pomocą polecenia Display View z menu View możemy przejść
do trybu, w którym pokazany jest sposób wyświetlania modułu: zamiast nazw kolumn mamy
etykiety, a niewidoczne kolumny nie są w ogóle pokazywane. Na potrzeby naszej aplikacji
nie trzeba tutaj nic modyfikować. Diagram modułu w trybie Data View i Display
View
pokazano na rysunku 4.

rys. 4
Rysunek 4: Dwa tryby wyświetlania diagramu modułu

Na tym kończy się definiowanie samego modułu, określanie tego jakie operacje będą
wykonywane na stronie WWW na tabeli
i poszczególnych polach oraz jak maja być one wyświetlane. Następnym krokiem jest
ustawienie (opcjonalnie) dodatkowych parametrów (lub tzw. prefernecji) sterujących
pracą WebServer Generator’a.

Krok 7.
Ustawienie parametrów WebServer Generator’a

Parametry WebServer Generator’a pozwalają wpływać na wygląd i działanie
wygenerowanej aplikacji. Ustawianie parametrów (preferencji) generatorów odbywa się za
pomocą tzw. nawigatora preferencji. W nawigatorze Design Editor’a zaznaczmy
moduł PRAC, a następnie wybierzmy z menu Edit polecenie Generator
Preferences
. Nowe okienko (generator preferences) wyświetla nam szereg
parametrów uporządkowanych w kilkunastu grupach.
Załóżmy na przykład, że chcemy uzyskać jasno żółty kolor tła na stronach WWW
naszej aplikacji. Aby to osiągnąć należy ustawić odpowiednią wartość parametru
MODBGC znajdującego się w grupie parametrów zwanej Document Attributes.
Rozwiń tę grupę i obok parametru MODBGC wpisz wartość FFFFE6 (szesnastkowo zapisany
kolor tła), a następnie zapamiętaj to klikając na dyskietkę. W analogiczny sposób
można modyfikować wartości pozostałych parametrów mających wpływ na kolory,
wyrównywanie elementów, działanie list wartości, formaty wyświetlania danych i wiele
innych elementów stron WWW.

Krok 8.
Generowanie modułu i instalowanie go w bazie danych

Pozostała nam jeszcze do wykonania ostatnia operacja polegająca na wygenerowaniu
aplikacji i jej zainstalowaniu. Sama operacja generowania tworzy nam pliki tekstowe z
definicją pakietów PL/SQL, których zadaniem jest konstruowanie w trybie on-line
dokumentów HTML. Instalacja aplikacji polega na utworzeniu tych pakietów w bazie danych.
Aby przystąpić do generowania modułu należy go zaznaczyć w nawigatorze i wywołać z
menu Generate polecenie Generate Module. W okienku dialogowym Generate
WebServer
użyjmy przycisku Options aby ustawić jeszcze najpierw kilka
opcji. W dodatkowym okienku WebServer Generator Options w sekcji Install
Generated PL/SQL
zaznaczmy pole wyboru Auto-install after Generation (aby
wygenerowane pakietu były od razu instalowane w bazie danych), do pola Name
wpiszmy nazwę użytkownika i hasło (wwwuser/wwwuser), a w polu Connect string
wpiszmy alias bazy danych. Można teraz kliknąć OK aby zamknąć okienko z
opcjami i Start aby uruchomić generowanie aplikacji.

Krok 9.
Testowanie aplikacji w przeglądarce WWW

Czy już zbliża się godzina, od kiedy rozpoczęliśmy konstruowanie naszej aplikacji?
Być może już minęła, ale gdyby nie trzeba było tracić czasu na czytanie tego tekstu
tylko działać to na pewno by się udało wszystkie opisane czynności wykonać w
godzinę. Teraz możemy w końcu uruchomić naszą aplikację.

Uruchomienie aplikacji

Poprawnie zainstalowaną aplikację możemy uruchomić wpisując w przeglądarce WWW
odpowiedni URL. W przypadku OAS 3.0, jeśli były akceptowane wszystkie domyślne
wartości parametrów, będzie to:

http://www.firma.pl/genwww/plsql/pr$.startup

W OAS 4.0 jeśli wirtualną ścieżkę kartridża PL/SQL nazwaliśmy
"/genwww/plsql/" to URL będzie taki sam.
W przeglądarce powinna się pojawić początkowa strona naszej aplikacji, tak jak to
pokazano na rysunku 5. W adresie URL fragment "/genwww/plsql/" jest
wirtualną ścieżką, na podstawie której OAS wie, że należy uruchomić procedurę w
bazie danych korzystając z odpowiedniego DAD-a. Ostatnia część URL to nazwa pakietu
"pr$" i nazwa uruchamianej procedury "startup". Nazwy pozostałych
procedur w wygenerowanych pakietach można podejrzeć nawigując po kolejnych stronach
aplikacji.

rys. 5

Rysunek 5. Strona początkowa i formularz do wprowadzenia zapytania.

Jak działa aplikacja?

Po wyświetleniu strony początkowej można wprowadzić zapytanie podając imię lub
nazwisko pracownika i nacisnąć Find aby wyświetlić listę rekordów. Przy
pierwszym uruchomieniu nie ma oczywiście jeszcze żadnych rekordów w bazie danych.
Przyciskiem New możemy dopisać nowego pracownika. Po wpisaniu imienia i
nazwiska przyciskiem Insert wprowadzamy rekord do bazy danych. Operację tę
możemy powtarzać aby szybko dopisać paru pracowników.
Gdy użyjemy przycisku ReQuery w lewej ramce to zostanie wyświetlona lista
rekordów (nazwiska). Ten sam efekt uzyskamy gdy na stronie początkowej użyjemy Find.
Po kliknięciu na wybranym nazwisku pojawiają się w prawej ramce szczegółowe
informacje o pracowniku (imię), tak jak pokazano na rysunku 6. Możemy tutaj
zmodyfikować imię lub zmienić nazwisko, a kliknięcie na Update uaktualni
odpowiedni rekord w bazie danych.

rys. 6

Rysunek 6. Lista wyszukanych rekordów i szczegóły dotyczące wybranego rekordu

Co dalej?

Takiej aplikacji jeszcze nikt nie kupi, ale jest to już punkt wyjścia do zrobienia
przyjaznej w obsłudze i ładnie wyglądającej aplikacji WWW. Programista ma do
dyspozycji szereg preferencji generatora WebServer. Na pierwszy rzut oka jest ich bardzo
dużo, ale nie należy się łudzić, że wszystko można nimi ustawić. Najczęściej,
gdy zastanawiamy się jakim parametrem można ustawić takie to a takie zachowanie lub
wygląd strony, to okazuje się, że takiego parametru nie ma. Zawsze pozostaje
możliwość dopracowania aplikacji przez poprawianie wygenerowanych i zainstalowanych w
bazie danych pakietów PL/SQL dokładając do nich ręcznie wpisane znaczniki HTML. Jeśli
chcemy szybko uzyskać zaawansowaną grafikę i ładny wygląd stron to najlepiej się
posłużyć jakimś edytorem stron wysokiego poziomu (np. MS Front Page), a następnie
zapisane przez niego pliki HTML lub ich fragmenty można wprowadzić do pakietów PL/SQL
za pomocą zwykłej operacji Kopiuj i Wklej (wklejane teksty powinny
być parametrami procedury htp.print). Funkcjonalność powyższej aplikacji możemy
również szybko poprawić umieszczając formularz zapytania w górnej ramce strony
(istnieje akurat odpowiedni parametr generatora), stosując tam gdzie trzeba listy
wartości, wstawiając z przygotowanych wcześniej szablonów nagłówki i stopki stron
oraz stosując wiele innych technik, których opisanie wykracza już poza ramy tego
artykułu. Powodzenia.

Maciej Matysiak
maciej.matysiak@cs.put.poznan.pl