next_inactive up previous


XMportal -- narzędzie do budowy zaawansowanych portali internetowych

Jarosław Kołakowski, Sławomir Mroczek

Grudzień 2001

Abstract:

W odpowiedzi na potrzebę stworzenia Wydziałowego Portalu Internetowego na Wydziale Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego, zaprojektowano i zaimplementowano narzędzie XMportal, które służy do szybkiej budowy zaawansowanych portali internetowych. Narzędzie to, napisane w języku PHP, jest oparte na całkowicie darmowych rozwiązaniach i korzysta z najnowszych i sprawdzonych technologii XML i XSLT. Obecnie na Wydziale MIM UW trwa wdrożenie portalu skonstruowanego przy pomocy tego narzędzia.


Contents

Wstęp

W ostatnim czasie dużego znaczenia nabrały technologie pozwalające na udostępnienie informacji możliwie największej liczbie odbiorców, w możliwie najkrótszym czasie i możliwie najniższym kosztem. Informacje te powinny być przedstawione w taki sposób, aby odbiorca mógł łatwo i szybko dotrzeć także do informacji powiązanych z nimi tematycznie. Pożądane jest również zróżnicowanie treści i wyglądu informacji oraz możliwości dostępu do niej w zależności od typu odbiorcy. Takie możliwości daje Internet, WWW oraz koncepcja portali internetowych.

Celem naszej pracy magisterskiej było stworzenie i wdrożenie na Wydziale Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego (MIM UW) Wydziałowego Portalu Internetowego. Niezbędnym elementem pracy było zaprojektowanie i oprogramowanie uniwersalnego narzędzia do tworzenia portali internetowych. Narzędzie to otrzymało nazwę XMportal, od technologii XML i XSLT, na których zostało oparte oraz wydziału, na którym powstało.

Projekt był realizowany przez zespół trzyosobowy w składzie: Marek Dębowski, Jarosław Kołakowski, Sławomir Mroczek. Jądro narzędzia i aplikacje powstały we współpracy wszystkich trzech członków zespołu, przetwarzanie dokumentów z użyciem technologii XML i XSLT zostało zaimplementowane przez autorów tej pracy, natomiast częścią bazodanową zajął się Marek Dębowski (por. Wstęp do [Dębowski]).

W rozdziale 1 przedstawimy sieć WWW i omówimy stosowane obecnie standardy i technologie umożliwiające funkcjonowanie WWW oraz wykorzystywane przez aplikacje działające w sieci. Znaczną część rozdziału poświęcimy omówieniu technologii XML i XSLT oraz popularnych języków programowania używanych do pisania takich aplikacji.

W rozdziale 2 wprowadzimy czytelnika w tematykę portali i sprecyzujemy wymagania postawione przed narzędziem XMportal i Wydziałowym Portalem Internetowym.

W rozdziale 3 szczegółowo opiszemy projekt narzędzia -- jego architekturę, zastosowane koncepcje, wraz z uzasadnieniem ich wyboru, oraz logiczny model danych.

W rozdziale 4 skupimy się na szczegółach implementacji narzędzia XMportal. Uzasadnimy słuszność wyboru użytych przez nas technologii oraz omówimy szczegółowo procesy przetwarzania danych i fizyczny model danych.

W rozdziale 5 opiszemy historię wdrożenia portalu na Wydziale Matematyki, Informatyki i Mechaniki UW.

Rozdział 6 poświęcimy na podsumowanie pracy, w szczególności wyjaśnimy, w jakim stopniu narzędzie XMportal spełnia postawione przed nim wymagania.

Dodatek A to instrukcja instalacji narzędzia XMportal z załączonej do pracy płyty CD-ROM.

W dodatku B umieszczono instrukcję obsługi aplikacji administratorskiej wchodzącej w skład narzędzia.

W dodatku C znajdują się przykładowe scenariusze pracy administratora z narzędziem XMportal.

Podziękowania

Pragniemy gorąco podziękować pani dr Janinie Mincer-Daszkiewicz za sprawowanie pieczy nad projektem, promowanie tej pracy oraz masę cennych uwag, a także panu dr Piotrowi Krzyżanowskiemu -- opiekunowi wydziałowych stron WWW -- za cierpliwość i pełne zaangażowanie w realizację projektu. Chcielibyśmy również podziękować naszym najbliższym za okazaną pomoc i wyrozumiałość.

Wprowadzenie w tematykę pracy

W tym rozdziale zostanie omówione zaplecze WWW, czyli protokoły, języki i oprogramowanie, dzięki którym funkcjonuje World Wide Web. Do pojęć zdefiniowanych w tym rozdziale będziemy się odwoływać w dalszej części pracy.

Historia WWW

WWW to skrót od World Wide Web, czyli Wielkiej Światowej Pajęczyny. Jest to hipertekstowy i multimedialny sieciowy system informacyjny oparty na publicznie dostępnych, otwartych standardach IETF, W3C i ISO. Powstał w roku 1990 w ośrodku badawczym CERN, po 21 latach istnienia Internetu i od razu stał się bardzo popularny. Od połowy lat 90-tych jest najczęściej wykorzystywaną usługą oferowaną w Internecie.

Główne przyczyny ogromnej popularności WWW to:

Pojęcie hipertekstu w połączeniu z pojęciem multimedialności tworzy pojęcie hipermediów. Zostało ono po raz pierwszy przedstawione w 1945 roku przez Vanneva Brusha w artykule ,,As We May Think''. Samo słowo hipertekst zaczęło funkcjonować w 1965 roku za sprawą Teda Nelsona. Pierwszy komputerowy system hipertekstowy NLS/Augment został skonstruowany w 1968 roku przez Douga Engelbarta.

W 1989 roku Tim Berners-Lee opublikował w CERN-ie dokument ,,Information Management: A Proposal'', który zapoczątkował prace nad systemem mającym ułatwić naukowcom współdzielenie informacji w sieci Internet. W 1990 roku napisał program do przeglądania i edycji hipertekstu, który nazwał WorldWideWeb (por. rys. 1.1).

Figure: Pierwsza przeglądarka WWW
\resizebox*{0.5\textwidth}{!}{\includegraphics{tims_editor.eps}}

W tym samym roku powstała przeglądarka WWW przeznaczona do pracy w trybie tekstowym. Już pod koniec roku WWW stała się usługą ogólnodostępną, z jednym serwerem WWW znajdującym się w CERN-ie. W roku 1993 około 1% ruchu w Internecie generowali użytkownicy WWW, a liczba serwerów wzrosła do ponad 200.

Wtedy pojawiła się pierwsza graficzna przeglądarka dostępna na wszystkie popularne platformy programowe: X Window, Microsoft Windows i Macintosh. W tym roku powstało też W3 Consortium ([W3C]) nadzorujące rozwój WWW i związanych z nim standardów ([W3C-Hist]).

Obecnie liczbę serwerów WWW szacuje się na ponad 30 milionów, a liczbę użytkowników Internetu nie korzystających w ogóle z WWW na ok. 2% (dane zaczerpnięto z [IntTime]).

W roku 1994 David Filo i Jerry Yang z uniwersytetu w Stanford zapragnęli skatalogować w uporządkowany sposób adresy interesujących stron sieciowych, do których zaglądali. Każdą ze stron przydzielili do określonej kategorii, a gdy okazało się że kategorie są zbyt ogólne -- podzielili je na podkategorie. W taki sposób narodziło się Yahoo!, najbardziej znany katalog stron WWW. W roku 1997 Yahoo!, będąc już wtedy dobrze prosperującym przedsiębiorstwem, zaczęło za darmo udostępniać konta poczty elektronicznej i miejsca na prywatne strony WWW (por. rys. 1.2). W kolejnych latach firma zakupiła wiele tematycznych serwisów WWW, które zostały włączone do Yahoo! ([Yahoo-Hist]). W ten sposób powstał pierwszy portal, czyli rozbudowany serwis internetowy spełniający funkcję przedsionka Internetu, od którego użytkownicy WWW mieli rozpoczynać przeglądanie zasobów sieciowych. Od roku 1998 powstało wiele portali oferujących informacje z wielu różnych dziedzin tematycznych, m.in. najpopularniejsze w Polsce onet.pl (http://onet.pl/) oraz Wirtualna Polska (http://www.wp.pl/).

Figure 1.2: Serwis Yahoo! w roku 1997
\resizebox*{0.5\textwidth}{!}{\includegraphics{yahoo_1997.eps}}

Komunikacja z serwerem WWW

Usługa WWW jest obsługiwana przez protokół HTTP (ang. HyperText Transfer Protocol), zdefiniowany w [RFC2068]. Komunikacja między klientem a serwerem usługi odbywa się na zasadzie pytanie/odpowiedź i zazwyczaj wg następującego schematu:

Zestaw dokumentów wyświetlany w jednym momencie w oknie przeglądarki nazywamy stroną WWW.

Dokument odsyłany klientowi jest opatrzony tzw. nagłówkiem MIME, który definiuje jego typ. Dzięki temu przeglądarka WWW może taki dokument prawidłowo obsłużyć. Specyfikacja typów MIME jest opisana w [RFC2046].

Każdy dokument w WWW jest identyfikowany jednoznacznie przez tzw. URL (ang. Uniform Resource Locator). URL definiuje sposób dostępu do serwera, ścieżkę dostępu do dokumentu na tymże serwerze oraz opcjonalne parametry. W przypadku HTTP standardowy URL ma postać http://host/dokument. Jednak w przypadku powiązanych ze sobą dokumentów znajdujących się na tym samym serwerze, można używać samej ścieżki do dokumentu. Co więcej, ścieżka taka może zawierać odwołania względne (np. '..' oznacza nadkatalog). Dokładną specyfikację URL można znaleźć w [RFC1738].

Żądanie otrzymania dokumentu może nieść ze sobą dodatkowe parametry. Zazwyczaj są to zakodowane przez przeglądarkę informacje wpisane przez użytkownika w formularzach, ale mogą być to też parametry uruchamiania aplikacji internetowych. W HTTP używane są dwie metody przesyłania parametrów: GET i POST.

Parametry przesyłane metodą GET są dopisywane na końcu URL w zakodowanej postaci. Jest to metoda używana do przesyłania parametrów o niewielkim rozmiarze i nie wymagających tajności. W metodzie POST parametry są ukryte w zapytaniu do serwera i są używane do przesyłania większych ilości danych oraz danych wymagających tajności.

Serwer HTTP jest serwerem bezstanowym -- nie przechowuje żadnych danych na temat klientów usługi. Sesja związana z pamiętaniem stanu komunikacji z klientem jest otwierana tylko na czas transmisji pojedynczego dokumentu. Zaletą takiego rozwiązania są niskie wymagania pamięciowe i czasowe serwera, ale wadą jest znaczne utrudnienie realizacji bardziej zaawansowanych projektów. Dlatego też powstały tzw. ciasteczka (ang. cookies), czyli mechanizm przechowywania stanu klienta na lokalnej maszynie (por. [Nets-Cook]). Skrótowo można powiedzieć, że klient przy każdym odwołaniu do serwera HTTP wysyła mu łańcuch tekstowy, który otrzymał przy pierwszym odwołaniu. Dzięki ciasteczkom można m.in. zaimplementować mechanizm sesji albo zapamiętać preferencje użytkownika.

Istnieje również wersja HTTP obsługująca mechanizm szyfrowania, tzw. HTTPS. Komunikacja między serwerem a klientem odbywa się w standardowy sposób, ale połączenie jest szyfrowane przy pomocy protokołu SSL (ang. Secure Socket Layer). Specyfikacja tego protokołu znajduje się w [Nets-SSL].

Obecnie najszybszymi, najbardziej popularnymi i najbardziej zaawansowanymi technicznie serwerami HTTP na rynku są: Apache i Microsoft Internet Information Server (por. [Apache], [MS-IIS]). Wśród najlepszych serwerów HTTP jedynie Apache jest produktem darmowym (opartym na licencji GNU) i zajmuje pierwsze miejsce w większości rankingów.

Formaty dokumentów WWW

Dokumenty wysyłane do klienta zazwyczaj nie są zwykłym tekstem. Zgodnie z ideą WWW, sposób zapisu dokumentów powinien umożliwiać hipermedialność, a jednocześnie być zrozumiały dla wszystkich przeglądarek.

HTML

Formatem dokumentów dedykowanym usłudze WWW jest język HTML (ang. HyperText Markup Language) oparty na metajęzyku SGML (ang. Standard Generalized Markup Language, por. [W3C-SGML]), międzynarodowym standardzie opisu dokumentów. Początkowo język ten miał definiować znaczenie tekstu, szybko jednak stał się językiem opisu wyglądu stron WWW. HTML cechuje się przede wszystkim prostotą i niezależnością od platformy. Dokument w języku HTML to zwykły tekst, którego fragmenty są ujęte w tzw. znaczniki. Znaczniki opisują formatowanie tekstu, definiują powiązania między dokumentami, tabele, rysunki itp. ([W3C-HTML]).

HTML jest rozwijany od 1989 roku, od 1993 roku oficjalnie przez W3 Consortium, a nieoficjalnie przez twórców przeglądarek. Obecnie obowiązująca wersja, HTML 4.01 (opisana w [W3C-HTML4]), udostępnia bardziej zaawansowane funkcje, jak np.:

Wewnątrz kodu HTML można umieszczać odwołania do innych dokumentów, które mają być wyświetlone na stronie we wskazanym miejscu, bądź wczytywane po ich wskazaniu przez użytkownika. Dokumenty wstawione na stronę są to zazwyczaj obrazy zapisane w formatach GIF, JPEG lub PNG, ale możliwe jest także np. włączenie muzyki w tle czy odtworzenie filmu wideo.

Niestandardowe formaty dokumentów

Liczba formatów obsługiwanych standardowo przez przeglądarki jest dosyć ograniczona -- potrafią one wyświetlić różne wersje HTML-a i zwykły tekst oraz wymienione wcześniej formaty graficzne. Wyświetlenie dokumentów zapisanych w mniej typowych formatach jest możliwe dopiero po zainstalowaniu w przeglądarce odpowiednich modułów, nazywanych plug-in lub add-in. Dotyczy to m.in. coraz popularniejszego formatu PDF (ang. Portable Document Format) opracowanego przez firmę Adobe. Jest to format najczęściej używany do prezentacji dokumentów przeznaczonych do druku, chociaż jego twórcy uwzględnili także obsługę hipertekstu.

Ostatnio bardzo popularne stały się również dokumenty stworzone w formacie Flash opracowanym przez firmę Macromedia. Format ten umożliwia przedstawienie w przeglądarkach interaktywnych prezentacji multimedialnych łączących w sobie grafikę, animacje, teksty, dźwięk i wideo. Zaletą prezentacji tworzonych w tym formacie jest ich stosunkowo mała objętość oraz bardzo efektowny wygląd. Dokumenty takie są również używane do tworzenia elementów nawigacyjnych, animacji reklamowych czy też gier.

XML

Najnowsze przeglądarki potrafią również wyświetlić dokument zapisany w XML (ang. eXtensible Markup Language, por. [W3C-XML]). Jest to metajęzyk będący podzbiorem SGML-a, nad którym W3C rozpoczęło prace w 1998 roku. Według W3C ,,XML to uniwersalny format przechowywania ustrukturyzowanych dokumentów i danych w sieci WWW''. Jest to metajęzyk pozwalający tworzyć dokumenty o dowolnej strukturze logicznej, zdefiniowanej przez tzw. DTD (ang. Document Type Definition) lub utworzonej ad hoc.

Cechy odróżniające XML od czystego SGML-a to:

Język oparty na XML zdefiniowany przez określone DTD nazywamy aplikacją XML.

Główne zalety XML to:

Mechanizm tworzenia powiązań między różnymi dokumentami XML jest zdefiniowany przez standardy:

Podobnie jak DSSSL (ang. Document Style Semantics and Specification Language, por. [DSSSL]) jest specyfikacją służącą do formatowania dokumentów SGML, tak XSL (ang. eXtensible Stylesheet Language, por. [W3C-XSL]) jest specyfikacją służącą do formatowania dokumentów XML.

XSL składa się z trzech części:

Najważniejszą częścią specyfikacji XSL jest język XSLT (por. [W3C-XSLT]). Transformacja wyrażona w języku XSLT opisuje reguły transformacji drzewa reprezentującego źródłowy dokument XML w drzewo reprezentujące wynikowy dokument XML. Transformacja jest dokonywana przez kojarzenie wzorców (ang. patterns) z szablonami (ang. templates). Wzorzec jest dopasowywany do elementów drzewa źródłowego. Następnie do dopasowanych elementów stosuje się szablon tworzący część drzewa wynikowego. Drzewo wynikowe nie jest powiązane z drzewem źródłowym, a ich struktury mogą być całkowicie różne. Przy konstruowaniu wyniku elementy z drzewa źródłowego mogą być filtrowane, może być zmieniana ich kolejność, można im nadawać dowolną strukturę. Transformację wyrażoną w języku XSLT będziemy nazywać arkuszem stylów (ang. stylesheet).

Pojedynczy szablon może tworzyć struktury o dużym stopniu złożoności. Może używać łańcuchów znakowych otrzymanych z określonych lokalizacji w drzewie źródłowym, czy też generować struktury powtarzające się w zależności od pojawiania się określonych elementów w drzewie źródłowym.

Lokalizacje elementów w drzewie źródłowym oraz dopasowywane wzorce są zapisane w języku XPath (por. [W3C-XPath]). Jest to język, którego głównym zadaniem jest adresowanie części dokumentów XML. Dodatkowo dostarcza on podstawowych funkcji służących do manipulacji na łańcuchach znaków, liczbach i wartościach logicznych oraz mechanizm umożliwiający użycie zmiennych. Język XPath traktuje dokument XML jako drzewo złożone z węzłów (ang. nodes). Wyróżnia się różne typy węzłów, m.in. węzły-elementy, węzły-atrybuty, węzły tekstowe. XPath definiuje sposób wyliczenia wartości znakowej z węzła każdego typu.

Koncepcja zawarta w XSL FO (por. [W3C-XSLFO]) to jeden z najbardziej rozwijających się obszarów specyfikacji XSL. Zdefiniowane w niej obiekty służą jako uniwersalne znaczniki formatujące, możliwe do zastosowania m.in w przekazach wizyjnych i w druku. Jest to jednak koncepcja bardzo młoda, a zarazem na tyle obszerna, że niewiele jest narzędzi, które potrafią wykorzystać ten powstający dopiero standard. Do nielicznych wyjątków należy np. napisany w języku Java i rozwijany przez Apache Software Foundation, produkt o nazwie FOP (por. [Apache-FOP]), który potrafi odpowiednio sformatowany obiekt XML zapisać we wcześniej już wspomnianym formacie PDF.

Lista standardów, które powstają w oparciu o XML jest długa. Najciekawsze z nich to XML Schema, który ma zastąpić bardzo ograniczony standard DTD oraz XML Query mający służyć do ekstrakcji danych z dokumentów XML na zasadach znanych z baz danych. Inne to np. XForms, XML Protocol, XML Encryption i XML Signature.

XML nie został zaprojektowany, żeby zastąpić HTML, ale żeby ułatwić składowanie i przetwarzanie informacji. Do wyświetlania dokumentów W3C rekomenduje obecnie język XHTML 1.0, który jest aplikacją XML ze znacznikami HTML, czyli -- w znacznej mierze upraszczając -- można go nazwać porządnym HTML-em. Kolejną aplikacją XML jest WML (ang. Wireless Markup Language) używany do wyświetlania stron w telefonach komórkowych i innych małych urządzeniach przenośnych. WML jest częścią protokołu WAP (ang. Wireless Application Protocol) będącego odpowiednikiem WWW dla takich właśnie urządzeń.

Kodowanie znaków

Istotnym problemem związanym z przechowywaniem, przetwarzaniem i prezentacją dokumentów jest obsługa specjalnych znaków diakrytycznych, tzn. nie występujących w angielskiej wersji alfabetu łacińskiego. Jest to problem, z którym informatycy z krajów nieanglojęzycznych, w tym z Polski, borykają sie od dosyć dawna. Przyczyną tego jest mocno zakorzeniony standard ASCII kodujący znaki na jednym bajcie, przy pomocy liczb z przedziału 0-127. Wśród tak kodowanych znaków te specjalne nie występują. Od dłuższego czasu funkcjonują rozwiązania polegające na użyciu tzw. kodowań, czyli tłumaczeń liczb z zakresu 128-255 na brakujące znaki. Obowiązującym standardem są kodowania ogłoszone przez organizację ISO (ang. International Organization for Standardization) oznaczone przedrostkiem ISO-8859. W Polsce obowiązuje standard ISO-8859-2, choć niestety nie wszyscy go respektują. Wadami tego rozwiązania jest mnogość standardów kodowania oraz niewielka liczba formatów umożliwiających połączenie tekstów zapisanych wg więcej niż jednego kodowania w jednym dokumencie. Dlatego też podjęto próby utworzenia jednego, wspólnego zestawu wszystkich znaków. Jedna z nich to projekt ISO 10646 zainicjowany przez ISO, druga to projekt Unicode zainicjowany przez zrzeszenie producentów wielojęzycznego oprogramowania -- Unicode Consortium. W 1991 roku twórcy obu projektów rozpoczęli współpracę, aby nie mnożyć liczby obowiązujących standardów. Od tej chwili standardy publikowane przez Unicode Consortium i ISO, mimo że niezależnie, są ze sobą w pełni zgodne.

Problemy związane ze specjalnymi znakami zdaje się rozwiązywać kodowanie UTF-8. Jest to standard zdefiniowany w ISO 10646-1:2000 Annex D, w [RFC2279] oraz w rozdziale 3.8 standardu Unicode 3.0.

UTF-8 ma następujące właściwości:

Liczba aplikacji obsługujących UTF-8 stale rośnie. Kodowanie to jest zalecane również w standardzie XML, choć można używać innego (pod warunkiem jego jawnego wskazania w dokumencie). Zalety UTF-8 powodują, że jest kodowaniem używanym w wewnętrznych strukturach różnych bibliotek i aplikacji. Jest to kodowanie, na które i z którego konwertuje się dokumenty zapisane według innych kodowań znaków.

Aplikacje internetowe

Oprócz serwowania statycznych stron, WWW od początku swojego istnienia umożliwiało serwowanie dynamicznej treści. Bez możliwości uruchamiania aplikacji po stronie serwera, WWW miałoby bardzo ograniczoną funkcjonalność. Pierwszą aplikacją generującą dynamiczną zawartość przez WWW była wyszukiwarka dokumentów zgromadzonych w CERN-ie, uruchomiona na pierwszym serwerze HTTP.

Aplikacje działające po stronie serwera umożliwiają m.in.:

W tym punkcie zostaną omówione zagadnienia dotyczące uruchamiania aplikacji WWW oraz przedstawione najbardziej popularne platformy programowe dla tej klasy aplikacji.

Interfejsy wołania aplikacji

Wysyłanie dynamicznej treści do klienta wcale nie jest trudnym do rozwiązania problemem. Umożliwiał to już pierwszy służący do tego interfejs, CGI (ang. Common Gateway Interface, por. [W3C-CGI]).

Aplikacje CGI mogą być napisane w dowolnym języku, w szczególności mogą to być programy zapamiętane w postaci skompilowanej. CGI zapisuje parametry wołania na zmienne środowiskowe lub przekazuje je przy pomocy standardowego wejścia. Parametry te są zakodowane w ustalony sposób. Wynik działania aplikacji, ew. poprzedzony serią nagłówków HTTP, jest wyświetlany w przeglądarce klienta.

Oprócz zalet CGI, czyli prostoty, niezależności od języka i platformy, ujawniła się jednak duża wada, która spowodowała, że interfejs ten okazał się niewystarczający: każde zapytanie do serwera odwołujące się do aplikacji CGI wiązało się z koniecznością utworzenia nowego procesu. Przy dużym obciążeniu serwera aplikacje CGI stawały się wąskim gardłem.

Rozpoczęto prace nad interfejsem FastCGI (por. [FastCGI]), różniącym się od CGI tym, że procesy po wysłaniu dokumentu nie kończą pracy, lecz oczekują na nadejście kolejnego żądania. Programy wykorzystujące interfejs FastCGI muszą używać niestandardowego zestawu funkcji wejścia-wyjścia i dodatkowej pętli. Mimo konieczności poprawienia aplikacji, FastCGI jest rozwiązaniem najprostszym z możliwych.

W przypadku aplikacji zapisanych w językach skryptowych, o najbardziej wydajną komunikację z serwerem HTTP powinien zadbać odpowiedni interpreter. Większość popularnych interpreterów języków skryptowych występuje także w postaci modułów do różnych serwerów HTTP. Na przykład do serwera Apache dostępne są m.in. moduły mod_perl i mod_php, odpowiedzialne za uruchamianie programów w językach Perl i PHP. Możliwe jest też dołączenie własnych modułów przy pomocy Apache API (por. [Apache-API]). Z kolei aby podłączyć moduł do Microsoft IIS, należy posłużyć się ISAPI (por. [MS-ISAPI]). W ten sposób jest podłączony m.in. interpreter języka ASP.

Podłączenie interpreterów jako modułów serwera HTTP jest bardzo korzystne, ponieważ eliminuje podstawową wadę CGI, umożliwiając do tego pełniejszą i jeszcze szybszą niż dla FastCGI komunikację między aplikacją a serwerem. Wadą jest mała przenośność tego rozwiązania, jednak większość dobrych interpreterów posiada odpowiednie API zarówno dla serwera Apache, jak i dla IIS.

Perl

Perl (por. [Perl]) jest najstarszym językiem skryptowym używanym nie tylko do generacji stron WWW. Powstał w 1987 roku na zasadach Otwartego Oprogramowania (ang. Open Source, por. [OpenSource]), a jego interpreter jest darmowy. Perl jest językiem bardzo prostym, jednak jego użycie przy bardziej zaawansowanych projektach jest dosyć uciążliwe, głównie przez dosyć niską czytelność kodu. Język ten charakteryzuje się bardzo mocnym zestawem funkcji służących do operacji na łańcuchach znakowych, także przy użyciu wyrażeń regularnych. Liczba bibliotek dostępnych dla Perla jest bardzo duża. Biblioteki te charakteryzują się dużą funkcjonalnością, ale nie są dostępne standardowo i nie są dobrze udokumentowane. Perl posiada wsparcie dla interfejsu ISAPI oraz serwera Apache. Wadą Perla jest jego nienajlepsza skalowalność. Ostatnio jego popularność maleje, głównie na rzecz PHP.

PHP

PHP (por. [PHP]) powstał w 1994 na zasadach Otwartego Oprogramowania. Jego interpreter jest darmowy, ale dodatkowe moduły są płatne. Dotyczy to m.in. modułu Zend Accelerator (por. [PHP-ZAcc]) podnoszącego wydajność PHP, ale istnieją już jego darmowe odpowiedniki -- APC (por. [PHP-APC]), afterBURNER*Cache (por. [PHP-BWC]) i PHP Accelerator (por. [PHP-Acc]). Sam język powstał na bazie wielu innych języków, m.in. Perla, specjalnie do tworzenia dynamicznych stron WWW. PHP jest bardzo prostym językiem, nie sprawiającym większych problemów nawet przy stosowaniu go przy bardziej zaawansowanych projektach. Liczba bibliotek dla PHP jest bardzo duża, a większość z nich jest dołączona do standardowej dystrybucji. Biblioteki te charakteryzują się bardzo dużą funkcjonalnością. Zarówno język, jak i biblioteki są bardzo dobrze udokumentowane. PHP posiada wsparcie dla interfejsu ISAPI oraz serwera Apache. Podobnie jak w przypadku Perla, wadą PHP jest jego nienajlepsza skalowalność. Ponadto przy bardziej obciążonych stronach, nie wyposażony w moduły akcelerujące PHP staje się mało wydajny. Prace nad poprawieniem jego wydajności trwają. Od niedawna PHP umożliwia programowanie obiektowe, jednak na bardzo niskim poziomie zaawansowania. Mimo to jego popularność rośnie w szybkim tempie.

JSP (J2EE)

JSP (ang. Java Server Pages) są częścią J2EE (por. [Sun-J2EE]), stanowiącego pakiet specyfikacji oparty na technologii Java, wyprodukowany w 1998 roku przez Sun Microsystems. Środowiska programistyczne dla tej platformy są dostępne za darmo, ale za serwery aplikacji trzeba płacić. Istnieje jednak darmowy serwer aplikacji JSP o nazwie Tomcat (por. [Apache-Tomcat]) rozwijany przez Apache Software Foundation na zasadach Otwartego Oprogramowania. Siłę JSP stanowi używany język -- JavaScript, dzięki któremu rozwiązanie to jest bardzo łatwo przenośne. Ponadto programy mogą korzystać z ogromnej liczby bibliotek napisanych w języku Java, dzięki czemu mają bardzo duże możliwości. Rozwiązania oparte na J2EE są też dosyć łatwo skalowalne. Wady to bardzo duże wymagania sprzętowe oraz dosyć wysoki stopień skomplikowania kodu. Dlatego też J2EE sprawdza się w dużych przedsiębiorstwach, w długoterminowych i skomplikowanych projektach.

ASP (.NET)

ASP (ang. Active Server Pages) stanowiące część środowiska .NET (por. [MS-NET]), są odpowiednikiem JSP rozwijanym przez Microsoft Corporation od 1996 roku. Część składników jest dołączana do systemów operacyjnych Microsoftu za darmo, za niektóre trzeba płacić. W ASP używa się języka VBScript o podobnym stopniu złożoności co JavaScript. Przenośność tego rozwiązania jest zdecydowanie gorsza, ponieważ .NET działa tylko na platformach Microsoftu. Oferowana jest za to bardzo duża liczba bibliotek umożliwiających m.in. bardzo szybkie tworzenie najbardziej standardowych aplikacji WWW.

ColdFusion

Produkt ColdFusion (por. [Macr-CF]) prezentuje zupełnie odmienną koncepcję budowy aplikacji WWW. Jest to produkt płatny, rozwijany od 1995 roku przez firmę Allaire, a obecnie przez firmę Macromedia. Program napisany przy użyciu ColdFusion jest zdefiniowany przy pomocy specjalnych znaczników zanurzonych w kodzie HTML. Dzięki temu tworzenie aplikacji na tej platformie jest bardzo łatwe i szybkie, a kod jest bardzo czytelny. Na uwagę zasługuje też bardzo bogate i intuicyjne graficzne środowisko programistyczne, dzięki któremu aplikację może stworzyć osoba nie mająca nawet odpowiedniej wiedzy na temat programowania. Wadami tego rozwiązania jest brak bardziej zaawansowanych funkcji oraz brak możliwości dodawania własnych rozszerzeń i definiowania własnych funkcji. To powoduje, że ColdFusion nadaje się jedynie do prostych serwisów, nie wymagających bardziej zaawansowanych technologii.

Bazy danych w aplikacjach internetowych

Bardziej zaawansowane aplikacje muszą składować i przetwarzać większe ilości danych. Dotyczy to również tych najczęściej spotykanych aplikacji WWW, jak wyszukiwarki, katalogi stron, rankingi, moduły personalizacji, systemy ochrony dostępu itp. Ilość informacji, jaką aplikacje muszą zgromadzić i przetwarzać ma zazwyczaj tendencję do przyrastania. Konieczne więc staje się takie projektowanie aplikacji, aby funkcje składowania i operacji na danych wykonywały wyspecjalizowane serwery bazodanowe.

Wybór odpowiedniego serwera nie jest zazwyczaj łatwą do rozstrzygnięcia kwestią. Serwer bazy danych dla aplikacji WWW powinien obsługiwać standard SQL, być wystarczająco szybki i łatwo osiągalny z wybranej platformy programistycznej. W zasadzie wszystkie znane serwery posiadają takie cechy. Różnią się natomiast cenami, prędkością oraz możliwością wykonywania bardziej zaawansowanych funkcji. Jednak aplikacje WWW z reguły nie potrzebują zaawansowanych funkcji. Większość operacji jakie wykonuje się na bazie danych używanej w serwisie WWW to zapytania. Operacje zapisu do bazy występują o wiele rzadziej, nie jest też potrzebna obsługa transakcji. Dzięki temu serwer bazy danych używany przez aplikacje WWW może być mniej wyrafinowany, ale za to tańszy.

Najbardziej znanymi prostymi serwerami bazodanowymi, opartymi na zasadach Otwartego Oprogramowania (a więc darmowymi), są PostgreSQL (por. [PgSQL]) i MySQL (por. [MySQL]). Oba obsługują standard SQL. PostgreSQL dostarcza bardziej zaawansowanych funkcji i jest wygodny w użyciu. Obsługuje też transakcyjność. Serwer MySQL sprawia czasami trudności w użyciu, brakuje mu niektórych bardzo podstawowych funkcji, jest za to jednym z najszybszych darmowych serwerów baz danych. W miarę popularny jest też mSQL (por. [MSQL]), ale nie jest on w pełni zgodny ze standardem SQL i jest dosyć prymitywny.

Wymagania

W rozdziale tym przedstawimy wymagania stawiane przed portalami internetowymi oraz narzędziami służącymi do ich budowy. Scharakteryzujemy istniejące na rynku rozwiązania. Następnie opiszemy wymagania stawiane przed narzędziem do budowy portali XMportal oraz portalem Wydziałowy Portal Internetowy, które są wynikami naszej pracy.

Wymagania stawiane portalom internetowym

Sprecyzowanie wymagań stawianych portalowi jest zadaniem niezwykle trudnym. Nie istnieje jednoznaczna definicja pojęcia Portal Internetowy. Jest to spowodowane świeżością tematu i stale poszerzającym się zakresem, jaki obejmuje.

Początki portali internetowych związane są z wyszukiwarkami, które zaczęto obudowywać aplikacjami mającymi zwiększyć atrakcyjność serwisu i co za tym idzie liczbę gości i reklam. Później zaczęły powstawać duże serwisy internetowe, w których wyszukiwarka była już tylko jednym z elementów, bynajmniej nie najważniejszym. Portale szybko zaczęły się specjalizować.

Rodzaje portali internetowych

Dziś można wyróżnić cztery podstawowe rodzaje portali internetowych, które omawiamy w kolejnych punktach.

Portale Poziome

Portale poziome (ang. horizontal portals) to typowe serwisy internetowe, nastawione na pozyskanie jak największej liczby klientów i związanych z tym zysków. Efektem tego jest zwykle olbrzymia liczba oferowanych usług i przykuwający uwagę wygląd (ta zasada powoli ustępuje priorytetowi szybkości działania systemu). Przykładami serwisów tego typu są Yahoo!, Excite, MSN, Netscape Netcenter, AOL oraz Onet i Wirtualna Polska. Większość klientów traktuje je jako bramę wiodącą do Internetu, miejsce od którego zaczynają przeglądanie stron w Internecie.

Większość dużych portali oferuje:

Dodatkowo wiele informacji, takich jak kursy akcji, najnowsze wydarzenia, czy programy kin, jest dostępnych również przez pocztę elektroniczną, SMS-y oraz WAP.

Dostęp do tego typu portali jest zwykle darmowy. Dochody pozyskiwane są z reklam i prowizji od sklepów internetowych. Ciekawostką jest to, że na razie większość dużych portali tego typu przynosi olbrzymie straty.

Portale Pionowe

Wortale lub portale pionowe (ang. vertical portals) to specjalistyczne (niszowe) portale internetowe. Są zwykle skierowane do konkretnego klienta. Przykładem tego typu serwisów mogą być bardzo popularne portale ekonomiczne. Kolejne przykłady to serwisy dla miłośników ogrodnictwa (http://garden.com), administratorów sieci (http://SearchNetworking.com). Różnica między wortalem i klasycznym portalem internetowym leży głównie w zawartości. Choć również są one efektowne graficznie, to jednak pierwszoplanowa jest zawartość. Wortale posiadają nieco mniejszą liczbę aplikacji. Bardzo rzadko trafia się na wortale oferujące bezpłatne strony domowe czy konta poczty elektronicznej.

Portale korporacyjne

Portale korporacyjne (ang. Enterprise Resource Portal, w skrócie ERP, lub Enterprise Information Portal, w skrócie EIP) wywodzą się z tradycyjnego Intranetu. Międzynarodowe korporacje są dziś małymi państwami. Potrzebują więc bardzo dostępu do jednakowej informacji, niezależnie od miejsca, z którego się jej poszukuje. Użytkownikami tych systemów są najczęściej pracownicy przedsiębiorstwa. Jednak często udostępnia się je również klientom, partnerom biznesowym, a czasem nawet ludziom nie związanym z przedsiębiorstwem. Dostęp do wiedzy, aplikacji i wiadomości jest zależny od stopnia posiadanych uprawnień. Cechą różniącą portale korporacyjne od tradycyjnych portali jest położenie bardzo dużego nacisku na ochronę danych oraz możliwość umieszczania w nich bardzo zaawansowanych aplikacji bazodanowych.

Podstawowe cechy systemów ERP to:

Ponieważ systemy ERP nie muszą walczyć o klientów, do ich wyglądu nie przywiązuje się tak wielkiej wagi. Najważniejsze są zawansowane aplikacje. Obok tradycyjnych wyszukiwarek i serwisów ogłoszeniowych znajdują się tu często duże aplikacje raportujące, wspomagające i decyzyjne. Dlatego właśnie duży nacisk kładzie się na poprawnie działające moduły autoryzacyjne.

Portale B2B

Portale B2B (ang. business to business) są tym dla portali korporacyjnych, czym wortale dla tradycyjnych portali. Mają służyć polepszaniu (poszerzaniu) kontaktów i wymianie handlowej. Odbiorcą informacji zawartych w tym systemie jest zwykle ktoś z zewnątrz, np. klient lub partner biznesowy.

Ważne są tu rozwiązania zapewniające właściwy obieg dokumentów (umowy, zamówienia, faktury) między podmiotami kupującymi i sprzedającymi.

Na rynku istnieją następujące rodzaje portali B2B:

Istniejące rozwiązania często łączą w sobie kilka z wymienionych wyżej zadań.

Cechy wspólne

Różne rodzaje portali są skierowane do różnych grup klientów. Wymusza to stosowanie różnej technologii przy ich tworzeniu i odmiennego podejścia przy projektowaniu. Cechy wspólne, łączące wszystkie rodzaje portali, dotyczą strony technicznej. Każdy portal powinien:

Wymagania stawiane narzędziom do budowy portali internetowych

Na rynku istnieją dziesiątki dużych narzędzi służących do budowy portali internetowych. Pojęcie narzędzia jest jednak trochę mylące. Najczęściej nie są to produkty służące tylko do zaprojektowania i wykonania portalu. Przez pojęcie narzędzia rozumie się zwykle środowisko portalowe zawierające:

Tworzenie portalu polega na zapełnieniu tego środowiska treścią. Po skończeniu pracy nie można zrezygnować z narzędzia. Jądro portalu i narzędzia administratorskie są potrzebne przez cały czas istnienia portalu.

Wymagania stawiane przed narzędziami portalowymi są podobne do wyżej opisanych wymagań dotyczących portali. Podstawowym wymaganiem jest umożliwienie łatwej i wygodnej budowy możliwie zaawansowanych portali. Kolejnym wymaganiem jest dostarczenie wygodnych narzędzi do administrowania portalem.

Właściwie jedynym wymaganiem dotyczącym narzędzi portalowych, które nie zostało wymienione w trakcie opisywania oczekiwań względem portali jest dostarczenie narzędzi pomagających budować dokumenty i aplikacje internetowe bez znajomości jakiegokolwiek języka programowania. Ma to umożliwić administrowanie portalem i rozwijanie go osobom nie posiadającym przygotowania informatycznego.

Najbardziej znane narzędzia portalowe to WebSphere Portal Server [IBM-WAS], Oracle9iAS Portal [Oracle-9iAS] oraz Microsoft Commerce Server [MS-IIS]. Są to duże, komercyjne rozwiązania przeznaczone dla przedsiębiorstw. Wszystkie mają podobną, opisaną wcześniej strukturę. Jako że narzędzia te zostały stworzone przez duże przedsiębiorstwa, ogromne znaczenie ma integracja z innymi ich produktami. Dzięki temu w aplikacjach portalowych możemy korzystać z innych narzędzi danego producenta. Możemy zanurzyć w portalu aplikacje umożliwiające zaawansowane raportowanie (agregowanie danych, obsługa zapytań), obsługę baz i hurtowni danych.

Wymagania stawiane przed Wydziałowym Portalem Internetowym

Wynikiem naszej pracy magisterskiej ma być Wydziałowy Portal Internetowy wykonany przy pomocy narzędzia XMportal i wdrożony na Wydziale MIM Uniwersytetu Warszawskiego. Można go zakwalifikować jako wortal, ewentualnie jako bardzo prosty system typu ERP. Nie jest to komercyjny portal, więc funkcje typu sklep internetowy, reklamy i darmowe strony internetowe nie mają tu większego sensu.

Pierwszym etapem prac przy budowie portalu było określenie wymagań dotyczących środowiska portalowego. Wymagania te były potem konsultowane z wydziałowym opiekunem stron internetowych.

Ustaliliśmy, że środowisko portalowe ma pozwalać na:

Zestaw aplikacji dołączonych do portalu ma zawierać:

Funkcjonalność portalu będzie można poszerzać w miarę zwiększających się potrzeb.

Wymagania stawiane przed narzędziem XMportal

Podstawowe elementy narzędzia XMportal to jądro portalu oraz zestaw narzędzi aministratorskich. Jak widać jest to typowe rozwiązanie, w którym narzędzie użyte do budowy portalu jest ściśle zintegrowane z budowanym portalem.

XMportal może zostać użyty do budowy dowolnych typów portali internetowych. Nie należy jednak zapominać, że podstawowym wymaganiem postawionym przed naszym narzędziem było wykonanie Wydziałowego Portalu Internetowego. Wynika stąd, że choć stworzenie dowolnego typu portalu jest możliwe, to może wymagać dużo pracy. Jest to spowodowane tym, że zestaw aplikacji dołączony do narzędzia jest wystarczający dla serwisu uniwersyteckiego, ale niewystarczający np. dla aplikacji B2B.

Drugim niezwykle istotnym założeniem jest rozszerzalność systemu. Umożliwiamy łatwe poszerzanie listy standardowych aplikacji dołączanych do narzędzia oraz rozszerzanie funkcjonalności jądra o obsługę nowych internetowych języków programowania.

Kolejnym założeniem jest darmowość wszystkich elementów użytych do budowy systemu.

Ostatnim wymaganiem jest wydajne i szybkie działanie portali stworzonych przy pomocy narzędzia XMportal. Oznacza to, że narzuty związane z przetwarzaniem dokumentów przez jądro powinny być niewielkie.

Przypadki użycia

XMportal ma rozróżniać dwie podstawowe role:

Do zadań zwykłego użytkownika należy:

Do zadań administratora należą wszystkie czynności wykonywane przez zwykłego użytkownika oraz:

Projekt

W tym rozdziale opiszemy projekt narzędzia XMportal. Przedstawimy jego architekturę i schemat przetwarzania, omówimy koncepcje zastosowane w projekcie oraz zaprezentujemy logiczny model danych.

Architektura systemu

Portal zbudowany przy pomocy narzędzia XMportal będzie się składać z jądra, modułów i bazy dokumentów. Jądro to program odpowiadający za prawidłowe wyświetlanie dokumentów i aplikacji w portalu. Moduły to pakiety funkcji wykorzystywane przez jądro i aplikacje. Baza dokumentów ma przechowywać wszystkie informacje dotyczące dokumentów i aplikacji zanurzonych w portalu. Narzędzie administratorskie będzie jedną z aplikacji zanurzonych w systemie. Schemat struktury portalu przedstawiono na rysunku 3.1.

Figure 3.1: Architektura systemu
\resizebox*{0.8\textwidth}{!}{\includegraphics{arch.eps}}

Jądro systemu

Jądro portalu będzie najważniejszym elementem środowiska portalowego. Będzie to program uruchamiany przy każdym odwołaniu się do portalu. Zadaniem jądra będzie połączenie się z bazą dokumentów i sprawdzenie, czy dokument istnieje. Następnie jądro sprawdza, czy użytkownik ma prawo dostępu do tego dokumentu. Jeśli tak, to korzystając z informacji zapisanych w bazie dokumentów jądro ma wygenerować dokument wynikowy. Jeśli nie, to zostanie wygenerowany komunikat z informacją o błędzie. Dokument wynikowy będzie się składać z dokumentu głównego otoczonego aplikacjami. Za sposób generacji otoczenia dokumentu również odpowiada jądro. Wygenerowany dokument wynikowy będzie wysłany do przeglądarki użytkownika.

Jądro będzie też odpowiadać za komunikację między bazą dokumentów a aplikacjami. To jądro ma otwierać połączenie z bazą danych, zgodne z uprawnieniami posiadanymi przez użytkownika.

Moduły

Moduły to pakiety funkcji wykorzystywane przez jądro i aplikacje. Dzielą się one na dwie części: wewnętrzne i zewnętrzne.

Moduły wewnętrzne

Moduły wewnętrzne będą zawierać funkcje niezbędne do prawidłowego działania portalu. Będą one wykorzystywane przez jądro portalu i aplikację administratorską. Mogą zostać również wykorzystane przez aplikacje zewnętrzne. W zestawie modułów wewnętrznych znajdować się będą:

Moduły zewnętrzne

Moduły zewnętrzne będą służyć do obsługi konkretnych aplikacji. Przewiduje się powstanie modułów potrzebnych do obsługi:

Narzędzie administratorskie nie posiada własnego modułu. Nie jest typową aplikacją zewnętrzną, ponieważ jego obecność jest niezbędna do zarządzania portalem. Narzędzie administratorskie korzysta wyłącznie z modułów wewnętrznych.

Baza dokumentów

Najprostsze rozwiązania dotyczące przechowywania dokumentów serwisów WWW to umieszczenie ich w zwykłych plikach dyskowych lub w relacyjnej bazie danych. Oba rozwiązania mają swoje zalety i wady.

W przypadku przechowywania dokumentów w całości w plikach powstaje problem z przechowywaniem atrybutów tych dokumentów (m.in. sposób wyświetlania, informacje dla modułu autoryzacji itp.). Zazwyczaj takie informacje są przechowywane w specjalnych plikach, jednak znacznie utrudnia to ich przetwarzanie. Dlatego też w bardziej zaawansowanych serwisach nie stosuje się tego rozwiązania. Z kolei jeśli wszystkie dane zostaną umieszczone w bazie danych, to administrator będzie miał do nich znacznie utrudniony dostęp.

Bardziej elastyczne jest rozwiązanie hybrydowe -- dokumenty są przechowywane w plikach, natomiast atrybuty dokumentów w bazie danych. Problem, który się pojawia w takiej sytuacji to redundancja przechowywanych danych -- dokumenty serwisu znajdujące się w plikach muszą być zarejestrowane w bazie. W takim wypadku o spójność danych powinny dbać odpowiednie aplikacje synchronizacyjne.

Oto krótkie porównanie trzech wspomnianych rozwiązań:
  Pliki Baza danych Hybrydowe
dostęp do dokumentów przez administratora łatwy utrudniony łatwy
dostęp do atrybutów przez administratora łatwy utrudniony utrudniony
dostęp do dokumentów przez system łatwy łatwy łatwy
dostęp do atrybutów przez system utrudniony łatwy łatwy
przejrzystość struktury duża mała duża
podatność na błędy duża mała średnia
naprawa błędów utrudniona łatwa łatwa
dowolność definiowania atrybutów duża mała mała
przetwarzanie dokumentów utrudnione łatwe utrudnione
przetwarzanie atrybutów utrudnione łatwe łatwe

W naszym projekcie zdecydowaliśmy się na użycie rozwiązania hybrydowego. Powodem była chęć zapewnienia administratorom jak największej wygody korzystania z tworzonych serwisów z jednoczesnym ułatwieniem implementacji wydajnego jądra i aplikacji WWW. Dostęp do atrybutów ma zapewniać aplikacja administratorska, a spójność danych przywracać automatycznie aplikacja synchronizacyjna, uruchamianą na życzenie administratora. Aplikacje WWW, zanurzone w tworzonych serwisach, powinny mieć do dyspozycji funkcje udostępniające dokumenty i związane z tymi dokumentami atrybuty oraz funkcje służące do przetwarzania dokumentów.

Zastosowane koncepcje

W ramach narzędzia XMportal postanowiliśmy zaprojektować i zaimplementować funkcje, moduły i aplikacje dla jednego z najpopularniejszych i najprostszych w użyciu języków skryptowych używanych w WWW. Miałyby one zapewnić funkcjonalność potrzebną w każdym zaawansowanym serwisie -- od autentykacji i autoryzacji, przez personalizację, wyszukiwarkę i bazę dokumentów, po funkcje pomocnicze dla aplikacji.

Po przeanalizowaniu wymagań stawianych narzędziu oraz zapoznaniu się z dostępnymi technologiami i rozwiązaniami przyjęliśmy koncepcje realizacji projektu opisane w kolejnych punktach.

Format przechowywanych dokumentów

Wybór formatu przechowywania dokumentów jest newralgicznym punktem w realizacji każdego projektu WWW. Format dokumentów jest podstawowym czynnikiem decydującym o późniejszej elastyczności narzędzia i możliwościach jego łatwej rozbudowy. Wybrany format powinien być łatwy w przetwarzaniu, ale też jednocześnie umożliwiać realizację bardziej zaawansowanych funkcji niskim kosztem.

Dlatego za preferowany format przechowywania dokumentów przyjęliśmy dowolne aplikacje języka XML (w tym XHTML). O wyborze zadecydowała popularność i prostota tego standardu, możliwość jego konwersji do języka HTML na wiele różnych sposobów, duża liczba związanych z nim narzędzi oraz inne liczne zalety. Dodatkowo aplikacje działające po stronie serwera mogłyby korzystać z języka XPath, w celu ekstrakcji wybranych fragmentów dokumentów. Zgodnie ze standardem, sposób wyświetlania dokumentów zapisanych w XML określałyby przypisane do nich arkusze stylów XSLT. Natomiast przeglądarki WWW otrzymywałyby już wynik transformacji XSLT, którym najczęściej byłby dokument zapisany w języku HTML.

Za drugi z preferowanych formatów przyjęliśmy HTML, głównie w celu zachowania wstecznej zgodności z istniejącymi już serwisami WWW. Konwersja dokumentów z języka HTML do XML mogłaby się okazać skomplikowana, a do tego dosyć czasochłonna i trudno odwracalna. Jako dodatkową funkcjonalność założyliśmy możliwość transformacji dokumentów HTML arkuszami stylów XSLT -- w miarę możliwości technicznych oferowanych przez wybrane środowisko programistyczne. Funkcjonalność taka nie jest zgodna ze standardem, ale byłaby bardzo pożądana.

Zarówno dokumenty XML, jak i HTML będą mogły być zapisane w dowolnym obsługiwanym standardowo kodowaniu znaków, w tym także w UTF-8 oraz ISO-8859-2. Kodowanie to powinno być wyspecyfikowane w dokumencie, w przeciwnym wypadku zakładane będzie kodowanie domyślne (UTF-8 dla dokumentów XML oraz ISO-8859-2 dla dokumentów HTML). Sposób kodowania znaków w dokumencie umieszczonym w bazie będzie niezależny od sposobu kodowania znaków w dokumencie przeznaczonym do wyświetlenia w przeglądarce klienta.

Wybór konkretnych formatów przechowywania dokumentów nie powinien ograniczać użytkownika końcowego. Zatem powinna istnieć możliwość umieszczenia w serwisie plików we wszystkich pozostałych formatach, chociaż nie będą one podlegać żadnym transformacjom. Powinna również istnieć możliwość przesłania do przeglądarki WWW dokumentów XML i HTML bez ich transformacji arkuszami stylów XSLT.

Odbiorcy serwisów

Narzędzie XMportal powinno generować strony w języku HTML oraz dowolnych aplikacjach języka XML, więc odbiorcami serwisów zbudowanych przy jego pomocy będą m.in. dowolne przeglądarki WWW i WAP. Postać generowanego kodu HTML i XML będzie zależała w głównej mierze od administratora serwisu -- to on będzie decydował o końcowym wyglądzie publikowanych stron. W skrajnym przypadku administrator będzie mógł posłużyć się narzędziem XMportal do zbudowania serwisu udostępniającego wyłącznie statyczne dokumenty, wzbogaconego jedynie o funkcje autentykacyjne i autoryzacyjne.

Aplikacja administratorska przeznaczona dla administratorów serwisów powinna generować dokumenty zgodne ze standardem HTML 3.2 i być możliwa do używania we wszystkich nowszych graficznych przeglądarkach WWW.

Interakcja z klientem

Dokumenty w wielu nowszych serwisach WWW są osiągalne przez specjalne skrypty, które otrzymują identyfikator dokumentu do wyświetlenia w postaci parametru GET lub POST. My zdecydowaliśmy się na rozwiązanie polegające na identyfikacji wszystkich dokumentów przy pomocy standardowego URL. Takie rozwiązanie ma wiele zalet, m.in.:

Ponadto URL będący identyfikatorem dokumentu będzie jednoznacznie odpowiadał plikowi lub katalogowi w dyskowej strukturze katalogów, co będzie bardzo wygodne dla administratora.

Dokumenty znajdujące się w serwisie nie będą musiały być wysyłane w takim formacie, w jakim są przechowywane. Jądro portalu będzie transformować je w zdefiniowany przez administratora sposób, otaczając je elementami graficznymi i aplikacjami. Dokument nie zostanie w ogóle wysłany, gdy użytkownik nie będzie posiadał do niego stosownych uprawnień.

Typowy scenariusz interakcji serwisu WWW z przeglądarką klienta jest pokazany na rysunku 3.2.

Figure 3.2: Scenariusz interakcji z klientem
\resizebox*{0.8\textwidth}{!}{\includegraphics{scenariusz1.eps}}

Sposób transformacji dokumentu będzie zdefiniowany przez związane z nim dokumenty. Do takich dokumentów należą m.in.:

Typowy scenariusz obsługi żądania klienta jest przedstawiony na rysunku 3.3.

Figure: Obsługa żądania klienta
\resizebox*{0.8\textwidth}{!}{\includegraphics{scenariusz2.eps}}


Model danych

Informacje o statycznych dokumentach i aplikacjach zanurzonych w portalu będą przechowywane w bazie dokumentów. Wymaga to zaprojektowania właściwego modelu danych umożliwiającego przechowanie informacji o:

Figure 3.4: Logiczny model danych
\resizebox*{1\textwidth}{!}{\includegraphics{erwin_l.eps}}

Logiczny model danych spełniających te wymagania przedstawiono na rysunku 3.4.

Podstawowe informacje dotyczące dokumentów będą reprezentowane przez encję DOKUMENT. Znajdą się w niej informacje o hierarchi, fizycznym położeniu i sposobie wyświetlania dokumentów. Katalogi będą szczególnym rodzajem dokumentów. Będą one mogły być przywiązane do dowolnej liczby innych dokumentów. Przykładową strukturę dokumentów przedstawiono na rysunku 3.5. Dokumentami w systemie będą katalogi, pliki i dowiązania internetowe.

Figure: Przykładowa struktura katalogów
\resizebox*{1\textwidth}{!}{\includegraphics{katalogi.eps}}

Informacje o użytkownikach będą reprezentowane przez encję UŻYTKOWNICY. Znajdą się tam informacje o każdym użytkowniku uprawnionym do korzystania z chronionej części serwisu. Użytkownicy będą mogli należeć do dowolnej liczby grup. Grupy będą miały strukturę hierarchiczną. Przynależność użytkownika do danej grupy będzie implikować przynależność do wszystkich jej nadgrup. Przykładowe przypisanie użytkowników do grup przedstawiono na rysunku 3.6. Użytkownik J. Kowalski należy do grup Informatyka i Matematyka. Grupy te są podgrupami grupy Studenci. Oznacza to, że J. Kowalski będzie przez system traktowany tak, jakby należał do grup Informatyka, Matematyka oraz Studenci.

Figure: Przykładowa struktura grup użytkowników
\resizebox*{1\textwidth}{!}{\includegraphics{grupy.eps}}

Informacje o istniejących w systemie uprawnieniach będą reprezentowane przez encję TYP UPRAWNIENIA. W encji UPRAWNIENIE będzie się znajdować informacja o przypisaniu uprawnień do konkretnych dokumentów dla konkretnych użytkowników. Przykład takiego przypisania przedstawiono na rysunku 3.7. Użytkownicy należący do grup Goście i Studenci mają prawo czytać dokumenty znajdujące się w katalogu Ogłoszenia studenckie. Użytkownicy należący do grupy Studenci mogą wysyłać nowe ogłoszenia. Natomiast użytkownik W.Malinowski może administrować ogłoszeniami.

Figure: Przykładowe zastosowanie uprawnień
\resizebox*{1\textwidth}{!}{\includegraphics{uprawnienia.eps}}

Implementacja

W tym rozdziale opiszemy rozwiązania techniczne, których użyliśmy do implementacji narzędzia XMportal.

Wybór technologii

Wybór niektórych technologii do naszego projektu nie przedstawiał żadnych trudności, natomiast w przypadku innych okazał się dosyć trudny.

Jako serwer HTTP wybraliśmy serwer Apache -- najlepszy z dostępnych na rynku, a jednocześnie całkowicie darmowy. Ponadto wiele dostępnych środowisk programistycznych umożliwia uruchamianie aplikacji wewnątrz modułu serwera Apache -- procesy nie są tworzone przy każdym zapytaniu klienta. W trakcie implementacji projektu najnowszą wersją był Apache 1.3.20.

Serwer bazy danych wybieraliśmy spośród trzech całkowicie darmowych, popularnych rozwiązań obecnych na rynku: PostgreSQL, MySQL i mSQL. Decydującym kryterium była dla nas prędkość działania serwera, więc zdecydowaliśmy się oprzeć bazę danych na serwerze MySQL -- najszybszym z nich, a jednocześnie wystarczająco zaawansowanym technologicznie. W trakcie implementacji projektu aktualną wersją był MySQL 3.23.41.

Wybór platformy programowej

Środowisko programistyczne, którego mieliśmy używać w naszym projekcie musiało charakteryzować się następującymi cechami:

  1. Darmowość rozwiązania.
  2. Obecność bibliotek służących do manipulacji dokumentami XML i arkuszami stylów XSLT.
  3. Obecność bibliotek służących do komunikacji z bazami danych.
  4. Wysoka wydajność.
  5. Prostota języka, a co za tym idzie -- możliwość budowy dużej liczby aplikacji portalowych ad hoc.
  6. Dostępność dokumentacji dla programisty.
  7. Duża popularność języka, determinująca jego lepszą znajomość przez potencjalnych autorów nowych aplikacji zanurzonych w portalu.
Ze względu na ostatnią z wymaganych cech, przy wyborze środowiska braliśmy pod uwagę tylko te najpopularniejsze rozwiązania, opisane w punkcie 1.4. Ponadto ograniczyliśmy wybór do środowisk darmowych: Perl, PHP i Java.

Żadne z tych trzech rozwiązań nie ustępuje pozostałym pod względem liczby i funkcjonalności bibliotek służących do komunikacji z bazą danych. Współpraca z bazą danych jest podstawowym wymaganiem stawianym obecnie środowiskom programistycznym służącym do budowy aplikacji WWW.

W przypadku bibliotek zapewniających obsługę XML i XSLT sytuacja przedstawia się podobnie. Dla każdej z tych platform istnieją biblioteki umożliwiające zarówno manipulację dokumentami XML, jak i transformacje z użyciem arkuszy stylów XSLT. Jednak gdy potrzebne są funkcje służące do manipulacji dokumentami XML w podejściu obiektowym, okazuje się, że jedynie technologia Java jest w stanie bezproblemowo spełnić to wymaganie.

Dokumentacja języka i bibliotek jest najobszerniejsza i najłatwiej dostępna w przypadku PHP. Oprócz wyczerpującej dokumentacji producenta, w Internecie można znaleźć wiele stron poświęconych tej platformie, z dużą liczbą porad i przykładów. Dokumentacja dla Perla i Javy jest znacząco gorzej dostępna.

Duża prostota języka jest zaletą Perla i PHP, przy czym ten pierwszy uważany jest za mniej czytelny. Natomiast w przypadku Javy implementacja nawet prostych aplikacji wymaga znacznie większych umięjętności, lepszego przygotowania oraz więcej czasu.

Wydajność wszystkich trzech języków jest do siebie bardzo zbliżona, o ile testy przeprowadzane są na szybkich maszynach. Mimo to Java uznawana jest za rozwiązanie o wiele wolniejsze od pozostałych, co uwidacznia się na serwerach o gorszych parametrach lub o większym obciążeniu. Wydajność Perla i PHP jest porównywalna, przy czym przewaga jednego rozwiązania nad drugim w głównej mierze zależy od jego konfiguracji. Częściej za szybsze uznawane są rozwiązania oparte na Perlu.

Perl, jako środowisko bardzo podobne do PHP, a jednocześnie nie przewyższające PHP w żadnej z wymienionych cech (może z wyjątkiem nieznacznie lepszej wydajności), został przez nas odrzucony. Dlatego ostateczny wybór był dokonywany między PHP a Javą. Biorąc pod uwagę wymienione wcześniej cechy, Java imponuje jedynie bogactwem i profesjonalizmem bibliotek do obsługi standardów XML i XSLT. W PHP natomiast najbardziej razi niski poziom zaawansowania rozszerzeń do obsługi tych standardów. Jednak możliwość takiej obsługi ma być jedynie środkiem do osiągnięcia celu, a nie celem samym w sobie. Ostatecznie więc zdecydowaliśmy się na użycie w naszym projekcie języka PHP i ewentualne rozszerzenie jego funkcjonalności.

Rozszerzenia PHP

W PHP 4.0.6 -- wersji przez nas używanej -- jest dostępny bardzo bogaty zbiór funkcji, służących m.in. do dostępu do baz danych, obsługi sesji i ciasteczek, manipulacji łańcuchami znaków itp. Funkcje te są zaimplementowane w dodatkowych pakietach, nazywanych rozszerzeniami. Do obsługi dokumentów standardu XML i jego pochodnych zdefiniowano trzy rozszerzenia: XML parser, DOM XML oraz XSLT.

Pakiet funkcji XML parser

Pakiet XML parser (por. [PHP-XML]) umożliwia tworzenie parserów języka XML i podstawową obsługę dokumentów XML przy pomocy mechanizmu zdarzeń. Parsowane dokumenty nie podlegają walidacji.

Rozszerzenie XML parser używa biblioteki expat (ang. XML Parser Toolkit, por. [Expat]), opartej na licencji MIT. Jest to obecnie najbardziej popularna biblioteka napisana w języku C, służąca do parsowania dokumentów XML. Sam pakiet nie zapewnia jednak żadnych bardziej zaawansowanych funkcji. Dokument XML, wczytany przy pomocy dostępnych funkcji, musi być przetwarzany w sposób ściśle zdefiniowany przez programistę. Przetwarzanie powinno odbywać się najlepiej w miejscu, ponieważ przechowywanie większych dokumentów przy pomocy wewnętrznych struktur PHP jest bardzo mało wydajne. Rozszerzenie nadaje się więc wyłącznie do implementacji najbardziej podstawowych operacji na dokumentach XML.

W trakcie implementacji projektu aktualną wersją był expat 1.2.

Pakiet funkcji DOM XML

Pakiet DOM XML (por. [PHP-DOM]) udostępnia funkcje do operacji na dokumentach XML przy pomocy interfejsu nazwanego DOM API. DOM (ang. Document Object Model, por. [W3C-DOM]) jest zdefiniowanym przez W3C standardem interpretacji dokumentów XML jako drzew specjalnych obiektów.

Funkcjonalność rozszerzenia jest bardzo prosta -- jedynym jego zadaniem jest uruchamianie funkcji z biblioteki libxml2, rozwijanej w ramach projektu Gnome ([LibXML]). Jest to biblioteka darmowa, oparta na licencji GNU LGPL, napisana w całości w języku C, dzięki czemu jest bardzo wydajna i łatwo przenośna. Obecnie znajduje się w fazie szybkiego rozwoju i w wersji stabilnej udostępnia zaawansowane funkcje umożliwiające m.in.:

Obok biblioteki libxml2 rozwijana jest też biblioteka libxslt umożliwiająca transformacje przechowywanych w pamięci dokumentów w inne dokumenty przy pomocy arkuszy stylów XSLT ([LibXSLT]). Libxslt implementuje w całości standard XSLT. Od niedawna są dostępne wersje stabilne tej biblioteki.

Niestety, rozszerzenie DOM XML znajduje się w fazie eksperymentalnej i nie udostępnia pełnej funkcjonalności biblioteki libxml2 ani żadnej funkcjonalności biblioteki libxslt. Obecnie niemożliwe jest parsowanie dokumentów HTML i zapis dokumentów do tego formatu. Brakuje też poprawnie zaimplementowanej obsługi błędów. Ogromne możliwości bibliotek libxml2 i libxslt są ograniczone przez niedopracowanie interfejsu ze strony PHP. Interfejs ten jest obecnie na tyle niekompletny, że cały pakiet funkcji ma niewystarczającą funkcjonalność do zastosowania go w narzędziu XMportal.

W trakcie implementacji projektu aktualnymi wersjami bibliotek były libxml2 2.4.3 oraz libxslt 1.0.3.

Pakiet funkcji XSLT

Pakiet XSLT (por. [PHP-XSLT]) umożliwia jedynie transformacje dokumentów XML w inne dokumenty XML oraz HTML przy pomocy arkuszy stylów XSLT.

Funkcjonalność rozszerzenia polega na uruchamianiu funkcji z dowolnych bibliotek, będących procesorami XSLT. Do prawidłowej współpracy z danym procesorem XSLT rozszerzenie potrzebuje specjalnego zestawu funkcji do jego obsługi (por. [Sablot-PHP]). W październiku 2000, kiedy rozszerzenie to powstało, istniała możliwość użycia tylko jednego procesora XSLT o nazwie Sablotron (por. [Sablot]). W lipcu 2001 dodano obsługę biblioteki libxslt (por. [PHP-WS44]).

Sablotron jest biblioteką darmową, opartą na licencji MPL, napisaną w języku C++. Sablotron jest rozwiązaniem uboższym, alternatywnym dla bibliotek libxml2 i libxslt, stale rozwijanym, ale nadal nie implementującym pełnego standardu XSLT.

Sablotron używa parsera expat, a transformacje są wykonywane bez widocznego udziału DOM -- dokumenty wejściowe, wyjściowe oraz arkusze stylów są zapisane w postaci łańcuchów znakowych. Wpływa to negatywnie na wydajność biblioteki -- i tak już dosyć niską w porównaniu z libxslt -- w przypadku wielokrotnego przetwarzania tego samego dokumentu. Twórcy biblioteki pracują nad poprawieniem jej wydajności, udostępnieniem interfejsu DOM API oraz obsługi standardu XPath (por. [Sablot-LibXSLT]). W trakcie implementacji projektu aktualną wersją narzędzia był Sablotron 0.71.

Rozszerzenie XSLT znajduje się w fazie eksperymentalnej i udostępnia obecnie wyłącznie funkcje służące do transformacji dokumentów XML, zapisanych w postaci łańcuchów znakowych. Nie cała obsługa błędów jest zaimplementowana poprawnie. Jest to obecnie jedyny interfejs w PHP umożliwiający jakiekolwiek transformacje XSLT, jednak brak obsługi standardu DOM powoduje, że rozszerzenie to ma niewystarczającą funkcjonalność do zastosowania jej w naszym narzędziu.

Dodana funkcjonalność PHP

Po przeanalizowaniu dostępnych w PHP pakietów funkcji stwierdziliśmy, że podstawowa potrzebna nam funkcjonalność, czyli obsługa dokumentów XML, zapytań XPath oraz transformacji XSLT, jest zaimplementowana w stopniu niewystarczającym. W narzędziu XMportal pożądana i wystarczająca byłaby pełna funkcjonalność udostępniana przez biblioteki libxml2 i libxslt. Możliwa byłaby wtedy manipulacja dokumentami XML i XSLT, reprezentowanymi jako drzewa obiektów DOM. Dzięki temu możliwe byłoby osiągnięcie większej wydajności w przypadku wielokrotnej transformacji tego samego dokumentu oraz w przypadku obsługi wielu zapytań w języku XPath do tego samego dokumentu. Dodatkowo dostępne byłyby zaawansowane funkcje służące do operacji na całych drzewach dokumentów oraz na pojedynczych węzłach.

Dlatego podjęliśmy decyzję o takim rozbudowaniu istniejącego pakietu funkcji DOM XML, aby spełniał nasze oczekiwania. Rozszerzenie to wzbogaciliśmy o:

Ponadto wprowadziliśmy poprawki dotyczące obsługi błędów w pakiecie funkcji iconv, udostępniającym funkcje konwersji łańcuchów znakowych między różnymi standardami kodowania. Cały zestaw poprawek został zapisany w postaci łatki do PHP 4.0.6 i znajduje się w załącznikach do niniejszej pracy. Łatka została również wysłana na listę dyskusyjną poświęconą rozwojowi PHP i zyskała duże uznanie. Obecnie autorzy tej pracy oraz autorzy PHP pracują nad włączeniem poprawek do oficjalnej dystrybucji PHP (por. [PHP-WS62]).

Przy okazji prac nad funkcjami znaleźliśmy jeden drobny błąd w bibliotece libxml2. Stosowną łatę wysłaliśmy do systemu śledzenia błędów w implementacji biblioteki. Poprawka została zaakceptowana i wprowadzona do oficjalnej dystrybucji libxml2 (por. [LibXML-55380]).

Przetwarzanie dokumentów

W tym rozdziale zostanie omówiony standardowy sposób przetwarzania dokumentów znajdujących się w portalu do formatu przeznaczonego do wyświetlenia w przeglądarce klienta.

Pliki

Większość dokumentów znajdujących się w portalu to dokumenty statyczne, zapisane w językach HTML i XML. Dokumenty dynamiczne, produkowane przez aplikacje, prawie zawsze są w formacie XML. Część dokumentów HTML oraz wszystkie dokumenty XML wymagają transformacji przed wysłaniem ich do klienta.

Do transformacji dokumentów używa się -- zgodnie ze standardem -- arkuszy stylów XSLT. Odpowiedni arkusz stylów jest przypisany do każdego pliku HTML i XML, który wymaga przetworzenia. Podstawowe przetwarzanie polega na transformacji takiego pliku w formacie HTML lub XML do dokumentu w formacie HTML lub XML. Schematy takiego przetwarzania są przedstawione na rysunku 4.1. Wyjście w formacie XML może być zastosowane m.in. do obsługi protokołu WAP lub w zewnętrznych aplikacjach wykorzystujących dane pobrane z serwisu.

Figure: Podstawowe schematy przetwarzania dokumentów
\resizebox*{0.4\textwidth}{!}{\includegraphics{przetwarzanie1.eps}}






\resizebox*{0.4\textwidth}{!}{\includegraphics{przetwarzanie2.eps}}






\resizebox*{0.4\textwidth}{!}{\includegraphics{przetwarzanie3.eps}}






\resizebox*{0.4\textwidth}{!}{\includegraphics{przetwarzanie4.eps}}






Część aplikacji musi korzystać z bardziej zaawansowanych sposobów przetwarzania. Końcowa treść dokumentu może być złożeniem transformacji wielu mniejszych dokumentów -- zarówno statycznych, jak i generowanych dynamicznie. Przykład takiego zaawansowanego przetwarzania przedstawiono na rysunku 4.2.

Figure: Przykład zaawansowanego przetwarzania dokumentów
\resizebox*{0.9\textwidth}{!}{\includegraphics{przetwarzanie5.eps}}

Informacja o przypisanym do dokumentu arkuszu XSLT jest zapamiętana w bazie (por. p. 4.5.2) w postaci częściowej ścieżki dostępu do pliku z arkuszem. Dla częściowej ścieżki postaci:

ścieżka_do_katalogu/prefiks
używany jest plik:

ścieżka_do_katalogu/prefiks.nazwa_profilu.xsl
Profile zostaną opisane dokładnie w punkcie 4.4. Warto zaznaczyć, że ścieżka_do_katalogu może używać odwołań względnych i bezwzględnych, np.:

Tak wskazany arkusz wyznacza sposób przetwarzania na ostatnim etapie transformacji. O sposób przetwarzania wewnątrz poszczególnych aplikacji powinien zadbać ich autor. Może on zaimplementować przetwarzanie we własnym zakresie albo wykorzystać do tego celu standardowe funkcje transformacji dokumentów XML/HTML i zapytań z użyciem języka XPath. Sposób transformacji może być przekazany do tych funkcji przez:

W arkuszach XSLT stosowanych przy pomocy dostępnych w portalu funkcji można używać następujących zmiennych:

Katalogi

Katalogi są przetwarzane w sposób odmienny niż zwykłe pliki. Co prawda z naszego punktu widzenia katalog jest również dokumentem, ale nie zawierającym treści i pełniącym wyłącznie funkcję grupującą inne dokumenty. W standardowych serwisach WWW próba wyświetlenia katalogu w przeglądarce klienta powoduje zazwyczaj wyświetlenie zawartości katalogu lub odpowiedniego pliku -- o nazwie domyślnej index.html -- znajdującego się w tymże katalogu. Również w naszym portalu próba wyświetlenia katalogu powoduje wyświetlenie określonego dokumentu. Taki dokument będziemy nazywać dokumentem głównym katalogu.

W naszym systemie odwołania do katalogów są obsługiwane trójstopniowo:

  1. Jeśli w katalogu znajduje się plik o nazwie index.php, index.xml lub index.html (nazwy plików znajdują się w konfiguracji portalu), to jako dokument główny jest używany pierwszy ze znalezionych plików. Do transformacji XSLT używa się arkusza przywiązanego do dokumentu głównego.
  2. W przeciwnym przypadku, jeśli w bazie do katalogu jest przywiązany dokument główny (por. p. 4.5.2), to jest używany ten dokument. Jeśli do katalogu jest przywiązany arkusz, to służy on do transformacji XSLT, jeśli nie -- jest używany arkusz przywiązany do dokumentu głównego.
  3. W przeciwnym przypadku jest używany domyślny dokument służący do wyświetlania zawartości katalogów (ścieżka do tego dokumentu znajduje się w konfiguracji portalu). Jeśli do katalogu jest przywiązany arkusz, to służy on do transformacji XSLT, jeśli nie -- jest używany arkusz przywiązany do dokumentu głównego.
W większości wypadków dokument główny jest dokumentem dynamicznym, generowanym przez aplikację mającą dostęp do portalowej bazy danych. Może to być jednak dokument statyczny z zapisanymi wewnątrz odnośnikami do dokumentów podrzędnych.

Przyjęte rozwiązanie trójstopniowe zmniejsza w znacznym stopniu redundancję dokumentów oraz umożliwia łatwe skonfigurowanie sytuacji wyjątkowych, polegających na szczególnej obsłudze wyświetlania wybranych katalogów w portalu.

Obsługa błędów

Aplikacje produkujące dokumenty dynamiczne mogą wykonać się z błędami. Dotyczy to głównie aplikacji będących w fazie implementacji lub testowania, ale nie można wykluczyć pojawienia się błędów w już istniejących programach. Komunikaty o błędach nie powinny się jednak pojawiać w przeglądarce klienta. Jądro naszego portalu potrafi przejąć wszystkie komunikaty o błędach generowane przez końcowe aplikacje i przetworzyć je w zdefiniowany sposób.

W chwili obecnej -- gdy portal znajduje się w fazie testów -- sposób przetwarzania błędów polega na wyróżnieniu ich czerwonym kolorem w przeglądarce klienta. Można jednak zrealizować takie rozwiązania, jak np. przesłanie zestawienia o błędach do pliku XML, a w przeglądarce wyświetlenie krótkiego komunikatu z identyfikatorem zdarzenia.

Niektóre pojawiające się komunikaty o błędach muszą być ignorowane. Dotyczy to np. komunikatów pojawiających się przy parsowaniu źle sformatowanych dokumentów HTML, które mimo to chcemy zapisać w postaci drzewa DOM. Dlatego na czas parsowania dokumentów HTML obsługa błędów jest całkowicie wyłączana.


Szablony stron

Dokumenty HTML wyświetlane w przeglądarce klienta mają pewną szatę graficzną, z zaprojektowanym nagłówkiem i stopką strony. Często jest też dołączany zestaw aplikacji pomocniczych. Umieszczanie szaty graficznej lub aplikacji w dokumentach -- często stosowane w zwykłych serwisach WWW -- powoduje uciążliwą redundancję danych. W naszym portalu szata graficzna strony oraz dołączane do niej aplikacje są zdefiniowane przy pomocy szablonów stron, do których będziemy również używać określenia template.

Szablon jest statycznym plikiem HTML zawierającym układ wyświetlanej strony. Zarówno miejsce na dokument główny, jak i miejsce na dokumenty używane przez szablon, są wskazane przez specjalny znacznik o nazwie portal-window. Podstawowa składnia tego znacznika to:

<portal-window 
   name="wn
   path="ścieżka_do_dokumentu"/>
Atrybut name określa identyfikator miejsca na dokument (w0 zarezerwowano dla dokumentu głównego), a atrybut path -- dokument do wstawienia w miejsce znacznika (dla dokumentu głównego atrybut path jest ignorowany). Wstawiane do szablonu dokumenty nie muszą być statyczne -- mogą być dynamicznie generowane przez aplikacje. Co więcej, atrybut path może wskazywać na katalog, np. '..', jeśli do szablonu ma być wstawiona zawartość nadkatalogu.

Każdy ze wstawianych dokumentów powinien być zapisany w formacie HTML lub XML. W przypadku, gdy do takiego dokumentu jest przywiązany arkusz XSLT, to jest on stosowany przed wstawieniem dokumentu do szablonu. Sposób transformacji dokumentu można zmienić, dodając do znacznika portal-window atrybut xsl. Na przykład użycie następującego znacznika:

<portal-window 
   name="w4" 
   path="/apps/mod_topten.php" 
   xsl="/apps/topten"/>
spowoduje wstawienie do szablonu aplikacji /apps/mod_topten.php wyświetlanej zawsze przy pomocy arkusza z pliku /apps/topten.nazwa_profilu.xsl -- niezależnie od arkusza stylów przypisanego do tej aplikacji w bazie.

Aplikacje uruchamiane przy pomocy znacznika portal-window mają dostęp do wartości jego atrybutów -- można więc tą drogą przekazać im dodatkowe parametry, np.:

<portal-window 
   name="w10" 
   path="/apps/mod_news.php" 
   ps_news_path="/news/aktualnosci/"/>
Oprócz znaczników portal-window, w szablonie podstawiane są wartości zmiennych globalnych w miejscu odwołania do tych zmiennych. Odwołanie do zmiennej zapisuje się w postaci znacznika portal-variable:

<portal-variable name="nazwa_zmiennej"/>
Obsługiwane zmienne globalne to:

Wszystkie szablony są zapisane w oddzielnym katalogu pod nazwami:

nazwa_szablonu.nazwa_profilu.html
Standardowo dostępne są następujące szablony:

Przykładowy wygląd szablonów mainpage i printable przedstawiono na rysunku 4.3.

Figure: Przykładowy wygląd szablonów mainpage i printable
\resizebox*{0.9\textwidth}{!}{\includegraphics{t_mainpage.eps}}






\resizebox*{0.9\textwidth}{!}{\includegraphics{t_printable.eps}}



Zmiana szablonu następuje wtedy, gdy w portalowej bazie danych do wyświetlanego dokumentu jest przypisany odmienny szablon (por. p. 4.5.2). Użytkownik może również przełączyć używany domyślnie szablon przy pomocy odpowiedniej aplikacji w portalu.


Profile

Podobnie jak szablony określają układ i zawartość wyświetlanych stron, tak profile definiują końcowy wygląd stron wysyłanych do przeglądarki klienta. Wygląd jest zależny od klasy użytkownika (np. student, pracownik, administrator) oraz od typu przeglądarki (np. tekstowa, graficzna, obsługująca JavaScript).

Sam profil nie jest zapisany w portalu ani w postaci fizycznego pliku, ani w portalowej bazie danych -- każdy profil to po prostu zestaw szablonów i arkuszy stylów XSLT. Na przykład szablon error.student.html określa sposób wyświetlania stron z komunikatami o błędach w profilu student, a arkusz catalogs.admin.xsl -- specjalny sposób wyświetlania zawartości katalogów w profilu admin.

Najważniejszym profilem jest profil o nazwie default. Jest to profil nadrzędny dla wszystkich innych -- jeśli jądro portalu nie może znaleźć szablonu lub arkusza zdefiniowanego dla bieżącego profilu, to używa pliku zdefiniowanego właśnie dla profilu default. Dzięki temu zaprojektowanie nowego profilu nie wiąże się z koniecznością projektowania dla niego szablonu i wszystkich możliwych arkuszy XSLT. Natomiast dodanie nowego arkusza stylów pociąga za sobą konieczność stworzenia go najpierw w profilu domyślnym, a dopiero w następnej kolejności w wybranych innych profilach.

Zestaw i wygląd profili zależy od administratora serwisu WWW. Przykładowy zestaw może wyglądać następująco:

Przykładowy wygląd profili student i tekst przedstawiono na rysunku 4.4.

Figure: Przykładowy wygląd profili student i tekst
\resizebox*{0.9\textwidth}{!}{\includegraphics{p_student.eps}}






\resizebox*{0.9\textwidth}{!}{\includegraphics{p_tekst.eps}}






Standardowo zmiana profilu polega na uruchomieniu odpowiedniej aplikacji w portalu. Wybrany profil jest używany do momentu wyłączenia przeglądarki. Aplikacja zmieniająca profil próbuje też ustawić u klienta trwałe ciasteczko przechowujące nazwę preferowanego przez użytkownika profilu. Ciasteczko to jest używane przy pierwszym odwołaniu do portalu po ponownym uruchomieniu przeglądarki.

Stosowany sposób przypisania profilu nie jest jedynym możliwym. Technicznie możliwe jest przypisanie najwłaściwszego profilu w zależności od adresu IP klienta, wersji przeglądarki, czy też innych czynników (np. informacji z systemu USOSweb). Jak widać, wybór profilu jest w dużym stopniu uzależniony od konfiguracji środowiska portalu, należy więc do tego zagadnienia podchodzić indywidualnie.

Model danych

Istnieją dwa rodzaje danych portalowych. Pierwszy rodzaj to dane wewnętrzne wymagane przez jądro systemu, jednak dostępne również dla aplikacji portalowych. Drugi to dane zewnętrzne używane wyłącznie przez aplikacje portalowe. W rozdziale 3.3 przedstawiono logiczny model danych wewnętrznych. W tym rozdziale opiszemy dokładną strukturę tabel służących do przechowywania tych danych.

Dane wewnętrzne są niezbędne do prawidłowej pracy portalu. Znajdują się tam informacje o dokumentach, użytkownikach i uprawnieniach zarejestrowanych w systemie. Informacje te są przechowywane w następujących tabelach:

Figure 4.5: Tabele zarejestrowane w systemie
\resizebox*{1\textwidth}{!}{\includegraphics{erwin.eps}}

Związki między tabelami przedstawiono na rysunku 4.5 (logiczny model danych przedstawiono na rysunku 3.4).

Tabela NODE_TYPES

Tabela NODE_TYPES przechowuje informacje o typach dokumentów obsługiwanych przez jądro systemu.

Struktura:

Nazwa kolumny Typ Opis
id Identyfikator Identyfikator typu dokumentu
name tekst Nazwa typu dokumentu

Najważniejsze obsługiwane typy dokumentów to:


Tabela NODES

Tabela NODES jest podstawową tabelą systemu przechowującą informacje o dokumentach. Zapamiętane są w niej informacje o:

Struktura tabeli:

Nazwa kolumny Typ Opis
id Identyfikator Identyfikator dokumentu
type Klucz obcy Typ dokumentu
    (odwołanie do tabeli NODE_TYPES)
parent Klucz obcy Katalog, do którego należy dokument
    (odwołanie do tabeli NODES)
protection Tekst Stopień ochrony
visible Tekst Widoczność dokumentu
name Tekst Nazwa dokumentu
filename Tekst Nazwa fizyczna dokumentu
description Tekst Opis dokumentu
path Tekst Ścieżka wskazująca na fizyczne położenie dokumentu
template Tekst Układ strony, w jakim dokument ma być wyświetlony
par1 Tekst Parametr pierwszy
    (znaczenie jest zależne od typu dokumentu)
par2 Tekst Parametr drugi
    (znaczenie jest zależne od typu dokumentu)

Dopuszczalne wartości pola protection:

Dopuszczalne wartości pola visible:

Pole template przechowuje nazwę szablonu, który należy zastosować wyświetlając dokument. Pusta wartość pola template oznacza, że należy zastosować szablon zgodny z preferencjami i rolą użytkownika.

Domyślnie w systemie są zdefiniowane następujące szablony:

Rozwiązanie, które przyjęliśmy, umożliwia przechowywanie dwóch parametrów dla każdego dokumentu. Parametry te mogą zawierać dowolne informacje, potrzebne do prawidłowego przetwarzania dokumentu. W trakcie prac projektowych rozważane były koncepcje pozwalające na dołączenie do dokumentu dowolnej liczby dodatkowych parametrów. Jednakże prostota i wydajność pierwszego rozwiązania zadecydowały o ostatecznym kształcie tabeli NODES.

Pola par1 i par2 mają różne znaczenie dla różnych typów dokumentów.

Dla katalogów:

Dla plików HTML:

Dla dowiązań:

Dla plików XML:

Dla plików binarnych:

Tabela PORTAL_USERS

Tabela PORTAL_USERS przechowuje informacje o grupach i użytkownikach zarejestrowanych w systemie.

Struktura:

Nazwa kolumny Typ Opis
id Identyfikator Identyfikator użytkownika lub grupy
type Tekst Typ rekordu (grupa / użytkownik)
login Tekst Identyfikator użytkownika w systemie
password Tekst Hasło użytkownika
group_name Tekst Nazwa grupy
first_name Tekst Imię użytkownika
last_name Tekst Nazwisko użytkownika
description Tekst Opis grupy lub użytkownika
login_nis Tekst Identyfikator użytkownika w domenie NIS
domena_nis Tekst Nazwa domeny NIS

Dopuszczalne wartości pola type:

Wypełnione pole login_nis oznacza, że użytkownik jest zarejestrowany w systemie USOSweb i jego hasło jest przechowywane w domenie NIS.

Tabela USERS_STRUCTURE

Tabela USERS_STRUCTURE przechowuje informacje o hierarchii grup użytkowników oraz ich zawartości.

Struktura:

Nazwa kolumny Typ Opis
user_id Klucz zewnętrzny Identyfikator użytkownika lub grupy
    (odwołanie do tabeli PORTAL_USERS)
group_id Klucz zewnętrzny Identyfikator grupy
    (odwołanie do tabeli PORTAL_USERS)
assigned_by Klucz zewnętrzny Identyfikator użytkownika przypisującego uprawnienie
    (odwołanie do tabeli PORTAL_USERS)
assigned_date Znacznik czasowy Data zdefiniowania tego połączenia


Tabela PERMISSION_TYPES

Tabela PERMISSION_TYPES przechowuje typy uprawnień. Uprawnienia te wykorzystuje administrator nakładając ograniczenia w dostępie do dokumentów i aplikacji.

Struktura:

Nazwa kolumny Typ Opis
id Identyfikator Identyfikator uprawnienia
name Tekst Nazwa uprawnienia
type Tekst Typ uprawnienia
description Tekst Opis uprawnienia

Dopuszczalne wartości pola type:

Lista uprawnień niezbędnych do prawidłowego działania środowiska portalowego:

Tabela PERMISSIONS

Tabela PERMISSIONS przechowuje informacje o uprawnieniach nałożonych na dokumenty.

Struktura:

Nazwa kolumny Typ Opis
user_id Klucz zewnętrzny Identyfikator użytkownika lub grupy
    (odwołanie do tabeli PORTAL_USERS)
permission_id Klucz zewnętrzny Identyfikator uprawnienia
    (odwołanie do tabeli PERMISSION_TYPES)
node_id Klucz zewnętrzny Identyfikator dokumentu
    (odwołanie do tabeli NODES)
granted_by Klucz zewnętrzny Identyfikator użytkownika definiującego uprawnienie
    (odwołanie do tabeli PORTAL_USERS)
granted_date Znacznik czasowy Data zdefiniowania tego połączenia

Jądro portalu i moduły

W tej części pracy opiszemy strukturę modułów i jądro portalu, stanowiące najbardziej niskopoziomową część systemu portalowego. Jądro jest programem odpowiadającym za prawidłowe wyświetlanie dokumentów i aplikacji w portalu. Moduły to pakiety funkcji wykorzystywane przez jądro i aplikacje. Moduły dzielą się na zewnętrzne i wewnętrzne. Moduły zewnętrzne służą tylko aplikacjom portalowym. Moduły wewnętrzne są wykorzystywane zarówno przez jądro systemu, jak i aplikacje. Podział systemu na jądro i moduły przedstawiono na rysunku 4.6.

Figure: Struktura środowiska portalowego
\resizebox*{0.6\textwidth}{!}{\includegraphics{system.eps}}

Jądro portalu

Jądro portalu jest najważniejszym elementem środowiska portalowego. Jest wykorzystywane przy każdym odwołaniu do zawartości portalu. Najważniejsza funkcjonalność udostępniana przez jądro to:

Moduły wewnętrzne

Moduł AUTHORIZE

Moduł AUTHORIZE zawiera funkcje umożliwiające zarządzanie użytkownikami i uprawnieniami. Jest to najważniejszy moduł w systemie wykorzystywany przez jądro i większość aplikacji dołączonych do narzędzia XMportal.

Najważniejsza funkcjonalność udostępniana przez moduł AUTHORIZE to:

Moduł NODE

Moduł NODE zawiera funkcje pozwalające na administrowanie bazą dokumentów. Wykorzystywany jest głównie przez aplikację administratorską.

Najważniejsza funkcjonalność udostępniana przez moduł NODE to:

Moduł XML

Moduł XML służy do obsługi dokumentów XML zapisanych w postaci obiektów DOM. Jest nakładką na funkcje PHP z pakietu DOM XML umożliwiającą:

Moduł XSL

Moduł XSL służy do wykonywania transformacji XSLT na dokumentach XML. Jest nakładką na funkcje PHP z pakietu DOM XML umożliwiającą:

Arkusze stylów XSLT używane w transformacjach są wyznaczane na podstawie zadanych parametrów oraz konfiguracji systemu.

Moduł LOGIN

Moduł LOGIN zawiera funkcje pozwalające użytkownikowi na autoryzację w systemie przy pomocy hasła zdefiniowanego w domenie NIS.

Moduł PROFILE

Moduł PROFILE zawiera funkcje pozwalające użytkownikowi zmienić profil w jakim prezentowane są dokumenty, np. zmiana profilu domyślnego na tekstowy.

Moduł DATABASE

Moduł DATABASE zawiera interfejs pozwalający użytkownikowi na korzystanie z baz danych. Dzięki takiemu rozwiązaniu zmiana bazy danych będzie pociągała za sobą konieczność zmiany tylko tego modułu.

Najważniejsza funkcjonalność udostępniana przez moduł DATABASE to:

Moduły zewnętrzne

Moduł SEARCH

Moduł SEARCH zawiera funkcje pozwalające na administrowanie wyszukiwarką i obsługę zapytań.

Najważniejsza funkcjonalność udostępniana przez moduł SEARCH to:

Moduł NEWS

Moduł NEWS zawiera funkcje obsługujące forum dyskusyjne i ogłoszenia.

Najważniejsza funkcjonalność udostępniana przez moduł NEWS to:

Moduł TIME

Moduł TIME zawiera funkcje pozwalające użytkownikowi na otrzymanie informacji o bieżącej dacie w języku polskim.

Metodyka pisania aplikacji

Zgodnie z przyjętymi założeniami, aplikacje włączane do portalu powinny być implementowane w języku PHP, mimo że istnieje możliwość włączenia dowolnych aplikacji, obsługiwanych przez standardowe serwisy WWW. Wybór języka PHP daje programiście dodatkową funkcjonalność oferowaną przez portal, przykładowo:

Aplikacje mogą generować zwykłe dokumenty HTML, chociaż jest to mało elastyczne rozwiązanie. Lepszym rozwiązaniem jest wybór formatu XML, który pozwala programiście na:

Przykładem aplikacji wykorzystującej format XML jest aplikacja administratorska. Wszystkie interfejsy tej aplikacji są wyświetlane w przeglądarce jako formularze HTML opatrzone etykietami. Formularze mają jednolity wygląd dzięki temu, że każdy z modułów aplikacji generuje kod XML według ustalonego DTD i ma przypisany ten sam arkusz stylów XSLT. Tak więc zmiana np. kolorystyki czy układu formularzy dla określonego profilu wiąże się ze zmianą tylko jednego pliku. Także dodawanie nowych formularzy do aplikacji administratorskiej jest bardzo proste.

Podczas implementacji aplikacji wykorzystujących informacje z portalowej bazy danych oraz z innych źródeł danych trzeba zwrócić uwagę na sposób kodowania znaków. Baza danych przechowuje informacje w UTF-8, natomiast dokumenty umieszczone w portalu -- w dowolnym kodowaniu znaków. Dokument będący wynikiem działania aplikacji musi być natomiast zapisany według tylko jednego kodowania (zaleca się używanie UTF-8). Aby było możliwe wygenerowanie takiego dokumentu, konieczne może się okazać wykonanie szeregu konwersji znaków -- służy do tego funkcja iconv, standardowo dostępna w dystrybucji PHP.

Oprócz obsługi formatów HTML i XML, jest możliwe uruchamianie aplikacji generujących dokumenty w bardziej zaawansowanych formatach, jak np. licznik odwołań do strony w postaci obrazu GIF, używany w wielu serwisach WWW.

Zaimplementowane aplikacje -- identyfikowane, tak jak wszystkie dokumenty portalu, przez URL -- mogą być uruchamiane zarówno na żądanie klienta, jak i przez jawne umieszczenie ich w szablonie strony. W tym celu wystarczy odpowiednio wstawić do szablonu i skonfigurować znacznik portal-window. Konfiguracja często polega jedynie na podaniu ścieżki do aplikacji. Przy bardziej zaawansowanych aplikacjach może być konieczne przeciążenie parametru definiującego używany arkusz stylów XSLT oraz przekazanie do aplikacji dodatkowych parametrów wejściowych.

Wdrożenie

Zaprojektowanie i zaimplementowanie narzędzia XMportal wynikło z zapotrzebowania na nowy serwis WWW na Wydziale Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego. W tym rozdziale zostanie opisane wdrożenie Wydziałowego Portalu Internetowego prowadzone równolegle z rozwijaniem narzędzia XMportal.

Przetarg

Prace nad portalem zostały zapoczątkowane przez panią dr Janinę Mincer-Daszkiewicz, Prodziekan ds. Informatyzacji Wydziału. W ramach poszukiwań chętnych do stworzenia nowego portalu i napisania na ten temat pracy magisterskiej, do wszystkich studentów zostało skierowane ogłoszenie. Początkowo zgłosiło się ośmiu studentów, a po szeregu spotkań wyodrębniły się dwa konkurencyjne zespoły. Pierwszy, dwuosobowy zespół zadeklarował chęć implementacji portalu z użyciem technologii XML, XSLT i Java. Drugi zespół, do którego należą Marek Dębowski, Jarosław Kołakowski i Sławomir Mroczek, rozpoczął prace nad portalem opisanym w tej pracy magisterskiej.

Analiza technologii

Pierwszy etap prac polegał na analizie używanych obecnie technologii. Zapoznaliśmy się z dostępnymi platformami programistycznymi do budowy aplikacji WWW oraz z bardzo popularnymi technologiami XML i XSLT. Dokładniej przeanalizowaliśmy dostępne rozwiązania w językach PHP i Java.

Projekt i implementacja systemu

Następnie zajęliśmy się sprecyzowaniem wymagań i zaprojektowaniem systemu. Podstawowe wymagania zostały przedstawione podczas przetargu, a precyzowaliśmy je na podstawie analizy dostępnych w sieci serwisów WWW, m.in. portali i stron domowych uczelni z całego świata, w tym strony domowej Wydziału. Dosyć dużo czasu poświęciliśmy na projektowanie jądra, poszukując kompromisu między maksymalną wydajnością portalu, maksymalną wygodą jego użycia oraz maksymalną elastycznością i rozszerzalnością.

Najbardziej pracochłonnym etapem była implementacja jądra i aplikacji. Podczas tego etapu wyniki testów niejednokrotnie powodowały, że musieliśmy wracać do poprzednich faz, aby wzbogacić projekt o nowe elementy. W wyniku prac powstało wydajne, funkcjonalne i elastyczne jądro oraz zestaw przykładowych aplikacji.

Testy

Portal będący wynikiem naszych prac zainstalowaliśmy na serwerze, na którym ma się w przyszłości znajdować Wydziałowy Portal Internetowy. Zainstalowaliśmy go jako dodatkową usługę i wypełniliśmy przykładowymi dokumentami. Serwis został pokazany opiekunowi wydziałowych stron WWW, panu dr Piotrowi Krzyżanowskiemu. Opiekun stron wstawił do portalu dokumenty z dotychczasowego serwisu wydziałowego, które znajdą się w wersji produkcyjnej i rozpoczął jego testy. W wyniku tych testów zostały usunięte usterki oraz wprowadzone m.in. następujące zmiany:

Testowa wersja nowego portalu została udostępniona studentom i pracownikom w celu jej bardziej wnikliwego przetestowania i zebrania propozycji zmian.

Plany na przyszłość

Mimo uzyskania zakładanej na początku prac funkcjonalności portalu, nadal pozostaje wiele do zrobienia. W trakcie wdrażania portalu pojawiały się nowe wymagania; obecnie lista zadań do wykonania obejmuje kilkanaście pozycji, które można podzielić na:

Wprowadzenie zmian do aplikacji nie będzie należało do zadań trudnych ze względu na ich mały stopień skomplikowania oraz przyjętą architekturę portalu. Pozostałe zadania można uznać za rutynowe.

Oprócz rozszerzeń funkcjonalności portalu, rozważane jest również zaprojektowanie nowej szaty graficznej przez zawodowego grafika.

Podsumowanie

Powodzenie projektu najlepiej można ocenić analizując funkcjonalność portalu wydziałowego przez pryzmat postawionych przed nim wcześniej wymagań.

  1. Strony WWW serwowane przez portal mają modułową budowę -- dokumenty i aplikacje dodatkowe są wstawiane do odpowiednio zdefiniowanego szablonu i w tej postaci wysyłane do klienta.
  2. Dokumenty i aplikacje mogą być wyświetlane w jednolity i łatwo konfigurowalny sposób, dzięki zastosowaniu technologii XML i XSLT. Użyto do tego celu bibliotek libxml2 i libxslt -- jednego z najszybszych i najbardziej zaawansowanych rozwiązań.
  3. Istnieje możliwość przełączenia wyglądu strony z użyciem mechanizmu profili -- odrębne profile mogą być zdefiniowane dla różnych grup użytkowników portalu. Istnieje też możliwość zdefiniowania wyglądu specjalnie przygotowanego dla przeglądarek pracujących wyłącznie w trybie tekstowym. Za szatę graficzną serwowanych dokumentów odpowiada administrator serwisu WWW.
  4. Portal umożliwia także serwowanie dokumentów i aplikacji bez dokonywania na nich żadnych transformacji -- zapewnia to wsteczną kompatybilność ze standardowymi serwisami WWW.
  5. Transmisję dokumentów od serwera do klienta zapewnia serwer WWW. Transmisję w drugą stronę udostępnia odrębna aplikacja dołączona do portalu.
  6. Dane między klientami a serwerem mogą być przesyłane połączeniem szyfrowanym -- taką funkcjonalność zapewnia serwer WWW, więc sposób szyfrowania jest niezależny od jądra portalu. Portal automatycznie przełącza połączenie na szyfrowane w przypadku próby autentykacji użytkownika.
  7. Moduł autoryzacyjny sprzężony z portalem pozwala na definiowanie dowolnych rodzajów uprawnień. Część z tych uprawnień stanowi integralną część jądra, np. prawo do odczytu dokumentów. Użytkownicy mogą należeć do dowolnej liczby grup. Grupy dziedziczą uprawnienia z innych grup, do których należą. Uprawnienia można przypisywać zarówno użytkownikom, jak i całym grupom. Administrator może oglądać zestawienia przydzielonych uprawnień. Oprócz ręcznego definiowania użytkowników i grup istnieje możliwość ich importu z systemu USOSweb.
  8. Wśród aplikacji dołączonych do portalu zaimplementowane są m.in.: wyszukiwarka, listy dyskusyjne, ankiety i administracja portalem.
  9. Dzięki udostępnionemu przez nas zestawowi funkcji i dużych możliwościach PHP oraz dzięki dużej prostocie tego języka, rozwój nowych i istniejących aplikacji jest łatwiejszy niż w przypadku użycia innych języków programowania.
  10. Narzędzie oparte jest na darmowych technologiach i pakietach oprogramowania.
Implementując XMportal osiągnęliśmy postawiony nam cel. Narzędzie to umożliwia łatwe stworzenie portalu, szybkie wypełnienie go dużą ilością aplikacji oraz zapanowanie nad jego zawartością i sposobem prezentacji dokumentów.

Opis instalacji narzędzia XMportal

Składniki wersji instalacyjnej

Do pracy magisterskiej dołączona jest płyta CD-ROM, na której znajduje się wersja instalacyjna narzędzia XMportal zanurzonego w przykładowym portalu. Wersja instalacyjna składa się z:

Struktura katalogów na dysku

Główny katalog instalacyjny zawiera następujące katalogi:

Sposób instalacji w systemie Linux

Podstawowa instalacja portalu odbywa się w sposób opisany w kolejnych punktach.

Wymagane pakiety oprogramowania

Na serwerze, na którym ma być zainstalowany portal, powinny być prawidłowo zainstalowane i działające następujące pakiety oprogramowania:

Skopiowanie drzewa katalogów

Drzewo katalogów z katalogu instalacyjnego należy skopiować na lokalny dysk do wybranego katalogu. Podkatalog _instalacje będzie używany tylko w trakcie instalacji portalu.

W dalszej części będziemy zakładać, że wybranym katalogiem, do którego skopiowano katalogi instalacyjne, jest /home/portal. Tak więc np. katalog _instalacje będzie dostępny przez ścieżkę /home/portal/_instalacje.

Pożądane jest również utworzenie specjalnego konta użytkownika, o mniejszych przywilejach niż root, które będzie używane przez portal. Założymy, że to konto ma nazwę portal i przynależy do grupy o nazwie http.

Prawa dostępu do katalogów powinny być tak ustawione, aby jakikolwiek dostęp do nich miał wyłącznie użytkownik portal (ewentualnie grupa http). Jedynie do katalogu htdocs powinien być dostęp publiczny do odczytu i wejścia, tak jak dla katalogu z dokumentami w standardowych konfiguracjach serwerów http.

Łatka na PHP

Narzędzie XMportal wymaga środowiska PHP z zaaplikowaną specjalną łatką służącą do obsługi biblioteki libxslt. Łatka znajduje się w pliku php-4.0.6-libxslt-patch. Łatkę stosuje się do źródeł PHP w wersji 4.0.6 (archiwum php-4.0.6.tar.gz) przy pomocy polecenia patch. W większości wypadków wystarczy wejść do katalogu ze źródłami i wykonać polecenie:

patch -p1 < ścieżka_do_pliku_z_łatką
Dla wygody instalacji, na płycie CD umieszczono także wersję źródeł PHP 4.0.6 z już zaaplikowaną łatką (archiwum php-4.0.6-libxslt.tar.gz). Obecnie autorzy tej pracy oraz autorzy PHP pracują nad poprawieniem funkcjonalności obsługi biblioteki libxml2 i dodaniem obsługi biblioteki libxslt do oficjalnej dystrybucji.

Instalacja PHP

Następnie należy skonfigurować źródła PHP poleceniem ./configure. Należy przy tym koniecznie uwzględnić następujące rozszerzenia PHP:

Przetestowana była następująca konfiguracja
(znajduje się na płycie w pliku php_portal_config):

#!/bin/sh

'./configure' \

'-prefix=/usr' \

'-exec-prefix=/usr' \

'-bindir=/usr/bin' \

'-sbindir=/usr/sbin' \

'-sysconfdir=/etc' \

'-datadir=/usr/share' \

'-includedir=/usr/include' \

'-libdir=/usr/lib' \

'-libexecdir=/usr/libexec' \

'-localstatedir=/usr/var' \

'-sharedstatedir=/usr/com' \

'-mandir=/usr/share/man' \

'-infodir=/usr/share/info' \

'-with-apxs=/usr/sbin/apxs' \

'-with-config-file-path=/etc' \

'-with-exec-dir=/usr/bin' \

'-disable-debug' \

'-enable-magic-quotes' \

'-enable-shared' \

'-enable-track-vars' \

'-enable-safe-mode' \

'-enable-trans-sid' \

'-enable-session' \

'-with-mysql' \

'-with-mysql-sock=/var/lib/mysql/mysql.sock' \

'-without-gd' \

'-with-pgsql' \

'-enable-posix' \

'-with-xml' \

'-enable-xml' \

'-with-zlib' \

'-with-dom' \

'-with-iconv'

Następnie należy skompilować PHP poleceniem:

make
i zainstalować poleceniem:

make install
Przy prawidłowych ustawieniach, instalacja powinna również automatycznie dołączyć utworzony moduł mod_php (plik libphp4.so) do konfiguracji serwera Apache.

Szczegółowy opis sposobu instalacji jest zawarty w źródłach PHP.

Konfiguracja PHP

Konfiguracja PHP jest zazwyczaj zawarta w pliku /etc/php.ini. W celu prawidłowej interpretacji plików XML (zaczynających się od tekstu ,,<?xml''), skrypty PHP muszą używać normalnej notacji znaczników otwierających -- ,,<?php program ?>'', a nie skrótowej -- ,,<? program ?>''. W konfiguracji PHP należy wyłączyć obsługę skrótowej notacji skryptów:

short_open_tag = Off
Do tego należy rozszerzyć listę katalogów include_path o katalog z modułami portalu -- w naszym przypadku /home/portal/includes. Przykładowo:

include_path = ".:/usr/share/php:/home/portal/includes"
Przetestowana konfiguracja znajduje się na płycie w pliku php.ini. Szczegółowy opis konfiguracji jest zawarty w dokumentacji do PHP.

Konfiguracja serwera Apache

Konfiguracja serwera Apache jest zazwyczaj zawarta w pliku /etc/httpd/httpd.conf. Konfiguracja ta powinna:

LoadModule php4_module       lib/apache/libphp4.so

AddModule mod_php4.c

AddType application/x-httpd-php .php3 .inc .php .php4

LoadModule ssl_module        lib/apache/libssl.so 

AddModule mod_ssl.c

dalsze opcje mod_ssl

User  portal

Group http

DocumentRoot "/home/portal/htdocs"

<Directory "/home/portal/htdocs">

   konfiguracja korzenia dokumentów

</Directory>

LoadModule dir_module        lib/apache/mod_dir.so

AddModule mod_dir.c

<IfModule mod_dir.c>

   DirectoryIndex index.php inne pliki z indeksami

</IfModule>

<Location /portal>

   ForceType application/x-httpd-php

</Location>

Przetestowana konfiguracja znajduje się na płycie w pliku httpd.conf. Szczegółowy opis konfiguracji jest zawarty w dokumentacji do serwera Apache.

Założenie portalowej bazy danych

Następnym krokiem jest założenie portalowej bazy danych o nazwie np. portaldb. Aby to wykonać, należy uruchomić jako polecenie:

mysqladmin create portaldb
Do utworzonej bazy należy nadać pełne prawa na poziomie tabel, wyłącznie dla jednego użytkownika -- dla wygody powinien to być użytkownik o takiej samej nazwie, jak nazwa utworzonego użytkownika w systemie -- w naszym przypadku: portal. Należy w tym celu wykonać polecenie:

mysql portaldb
i wpisać następujący kod SQL:

grant all privileges

    on portaldb.*

    to portal

    identified by 'hasło_dostępu';

Od tej pory użytkownik portal będzie mógł połączyć się z bazą portaldb przy użyciu hasła hasło_dostępu i wykonywać na niej dowolne operacje. Szczegółowy opis zakładania bazy danych z MySQL i używania jej jest zawarty w dokumentacji serwera MySQL.

Inicjalne wypełnienie bazy

Inicjalne wypełnienie bazy polega na uruchomieniu poleceń SQL zwartych w pliku install.sql. Należy to wykonać z konta użytkownika portal, uruchamiając polecenie:

mysql -p portaldb < ścieżka_do_pliku_install.sql
i podając hasło hasło_dostępu.

Konfiguracja portalu

Plik /home/portal/includes/global_constants.inc zawiera globalną konfigurację portalu. Trzeba skonfigurować są następujące zmienne:

Kompilacja programów portalu

Programy w C znajdujące się w portalu należy skompilować. Należy w tym celu wejść do katalogu /home/portal/programs i wykonać polecenie:

make
Spowoduje to kompilację wszystkich programów. Niektóre programy mogą wymagać czynności instalacyjnych. Wszelkie czynności instlacyjne uruchamia się poleceniem:

make install

Dalsze kroki

Po prawidłowym skonfigurowaniu i uruchomieniu portalu oraz wszystkich wymaganych przez niego pakietów oprogramowania, można przystąpić do:

Instrukcja obsługi aplikacji administratorskiej

Narzędzie administratorskie to aplikacja napisana w języku PHP, wchodząca w skład narzędzia XMportal. Służy ona do budowy, administracji i rozwijania portali internetowych zbudowanych przy pomocy narzędzia XMportal. Używać jej mogą tylko osoby z uprawnieniami administratorskimi.

Aplikację administratorską można łatwo rozszerzać o funkcje typowe dla konkretnego portalu (np. obsługa specyficznych dla danego serwisu aplikacji). W tej pracy opiszemy funkcjonalność aplikacji administratorskiej przygotowanej do obsługi Wydziałowego Portalu Internetowego.

Aplikacja administratorska umożliwia (por. rys. B.1):

Uruchomienie aplikacji administratorskiej wymaga połączenia się z portalem i pomyślnego przejścia przez procedurę autoryzacyjną. Potem musimy uruchomić narzędzie administratorskie. Można to zrobić na dwa sposoby. Pierwszy to ręczne uruchomienie aplikacji, polegające na dopisaniu do adresu portalu ścieżki /admin. Drugim sposobem jest wykorzystanie dowiązania znajdującego się na głównej stronie portalu. Trzeba jednak pamiętać, że dowiązanie takie będzie widoczne tylko w profilu administratorskim.

Figure: Menu główne aplikacji administratorskiej
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/admin.eps}}

Administracja dokumentami

Aplikacja służąca do administracji katalogami i plikami jest najważniejszą i najbardziej skomplikowaną spośród aplikacji administratorskich. Umożliwia operowanie na katalogach, plikach i dowiązaniach, czyli na dokumentach umieszczonych w bazie dokumentów. Jednym z podstawowych zadań postawionych przed tą aplikacją jest dbanie o zgodność zarejestrowanej w bazie dokumentów struktury katalogów ze strukturą katalogów, zapamiętaną na dysku.

Pojęcie dokumenty, często używane w dalszej części instrukcji oznacza pliki, dowiązania lub katalogi.

Najważniejsze funkcje udostępniane przez tą aplikację to:

Zmiany wykonywane na strukturze dokumentów wewnątrz bazy są automatycznie synchronizowane z fizyczną zawartością dysku.

Administracja katalogami

Po uruchomieniu aplikacji do administracji katalogami pojawi się widok przedstawiony na rysunku B.2.

Figure B.2: Administracja katalogami
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/katalog.eps}}

Figure: Operacje wykonywane na grupie katalogów
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/pasekall.eps}}

Na stronie jest widoczna lista katalogów zarejestrowanych w systemie. Początkowo katalogi są nierozwinięte. Rozwijamy je i zwijamy przy pomocy przycisków \includegraphics{pic/ACTION_EXP.eps} i \includegraphics{pic/ACTION_COL.eps} znajdujących się przy nazwie katalogu. Aby wejść do aplikacji umożliwiającej administrację plikami i dowiązaniami znajdującymi się wewnątrz wybranego katalogu, musimy nacisnąć odnośnik znajdujący się w nazwie katalogu.

Operacje, które możemy wykonać na katalogach dzielą się na trzy grupy:

Operacje na katalogu głównym uruchamiane są po wciśnięciu odpowiedniego przycisku znajdującego się przy katalogu Katalog Główny. Istnieją trzy operacje, które możemy wykonać na tym katalogu:

Operacje na pojedynczym katalogu uruchamiane są po wciśnięciu odpowiedniego przycisku znajdującego się przy tym katalogu. Na dowolnym katalogu możemy wykonywać następujące operacje:

Po zaznaczeniu grupy katalogów możemy wybrać odpowiedni przycisk znajdujący się na dole strony (por. rys. B.3) i wykonać jedną z następujących operacji:

Dodanie podkatalogu

Do dodania nowego podkatalogu służy przycisk \includegraphics{pic/ACTION_ADD.eps} umieszczony obok nazwy wybranego nadkatalogu. Na ekranie pojawi się wtedy widok przedstawiony na rysunku B.4.

Figure B.4: Dodanie nowego katalogu
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/addcatn.eps}}

Jeśli na dysku w wybranym katalogu znajdują się niezarejestrowane w bazie katalogi, to zostaną one udostępnione w polu wyboru. Możemy również wpisać własną nazwę. Katalog o podanej nazwie zostanie wtedy fizycznie utworzony na dysku.

Dodanie nowego katalogu wymaga zdefiniowania następujących elementów:

Pole Dokument główny wskazuje na plik opisujący sposób wyświetlania zawartości katalogu. W naszym systemie odwołania do katalogów są obsługiwane trójstopniowo:

  1. Jeśli w katalogu znajduje się plik o nazwie index.php, index.xml lub index.html, to jako dokumentu wyświetlającego zawartość katalogu używa się pierwszego ze znalezionych plików.
  2. W przeciwnym przypadku, jeśli do katalogu jest przywiązany dokument opisujący sposób wyświetlania katalogu (czyli w polu Dokument główny znajduje się ścieżka do tego dokumentu), to do wyświetlenia katalogu używa się tego dokumentu.
  3. W przeciwnym przypadku używa się domyślnego dokumentu służącego do wyświetlania zawartości katalogów (ścieżka do tego dokumentu znajduje się w pliku konfiguracyjnym portalu).
W polu Arkusz XSLT możemy wpisać ścieżkę do pliku, odpowiadającego za prezentację zawartości katalogu. Jeśli pole to będzie puste, użyty zostanie arkusz XSLT przywiązany do pliku opisującego sposób wyświetlania katalogów lub domyślny arkusz XSLT, właściwy dla bieżącego profilu.

Pole Ochrona dostępu określa poziom ochrony katalogu. Dopuszczalne wartości pola Ochrona dostępu to:

Pole Widoczność określa widoczność dokumentu. Dopuszczalne wartości to:

Pole Szablon określa sposób wyświetlenia katalogu. Jeśli wartość w polu Szablon pozostawimy pustą, oznaczać to będzie, że ma zostać zastosowany szablon domyślny, zgodny z rolą i preferencjami użytkownika. Domyślnie zdefiniowane są następujące szablony:

Przeniesienie katalogu wraz zawartością w nowe miejsce

Do przeniesienia katalogu służy przycisk \includegraphics{pic/ACTION_MOV.eps} znajdujący się obok nazwy wybranego katalogu. Zostaniemy poproszeni o wybranie katalogu, do którego przenosimy wybrany folder. Przeniesienie katalogu dotyczy całej jego zawartości (podkatalogi, pliki i dowiązania). Zachowywane są atrybuty katalogu i związane z nim uprawnienia.

Usunięcie katalogu

Do usunięcia katalogu służy przycisk \includegraphics{pic/ACTION_DEL.eps} znajdujący się obok nazwy wybranego katalogu. Zostaniemy poproszeni o potwierdzenie chęci usunięcia katalogu. Możemy również zaznaczyć opcję usunięcia katalogu nie tylko z bazy dokumentów, ale również fizycznie z dysku. Usunięcie katalogu odbywa się wraz z całą jego zawartością.

Funkcja ta jest dostępna również dla grup katalogów.

Zmiana atrybutów katalogu

Zmiana atrybutów katalogu jest możliwa po naciśnięciu przycisku \includegraphics{pic/ACTION_CHG.eps} znajdującego się obok nazwy wybranego katalogu. Pojwi się wtedy ekran podobny do tego, który widzieliśmy dodając katalog.

Jeśli zaznaczymy opcję kaskadowego nakładania poprawek, wartość pola Ochrona dostępu zostanie nadana również wszystkim podkatalogom i plikom znajdującym się wewnątrz modyfikowanego katalogu.

Zmiana atrybutów jest możliwa również dla wielu katalogów na raz. Mamy wtedy możliwość zmiany wartości drugiego parametru, pól Ochrona dostępu i Widoczność. Możemy również użyć opcji zmiany kaskadowej.

Funkcja ta jest dostępna również dla grup katalogów.

Nadanie praw dostępu dla katalogu

Uprawnienia do katalogu możemy przypisać po naciśnięciu przycisku \includegraphics{pic/ACTION_PRM.eps} znajdującego się obok nazwy wybranego katalogu.

Interfejs do przypisywania uprawnień składa się z dwóch części. Pierwsza z nich dotyczy nałożenia praw dla całych grup użytkowników i przedstawiona jest na rysunku B.5.

Figure: Nałożenie uprawnień dla grup użytkowników
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/addpermcat.eps}}

Na ekranie otrzymamy pełną listę dostępnych praw i grup użytkowników. Przypisanie wybranego prawa dla danej grupy polega na zaznaczeniu pustego pola. Jeśli chcemy odebrać wybrane uprawnienie, wystarczy odznaczyć zaznaczone pole.

Drugi interfejs dotyczy nakładania praw dla wybranych użytkowników.

Najpierw wybieramy użytkowników, którym chcemy nadać uprawnienia. Mamy do wyboru wyszukiwarkę wg grup, identyfikatorów i nazwisk. Po wybraniu odpowiednich użytkowników mamy do wyboru dwie możliwości nadania im uprawnień.

Pierwsza z nich to nadanie uprawnień całej zaznaczonej grupie użytkowników (por. rys. B.6).

Figure: Zmiana uprawnień dla zaznaczonej grupy użytkowników
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/permuserog.eps}}

Druga pozwala na dokładne przypisanie praw każdemu z wybranych użytkowników. Po zaznaczeniu wybranych użytkowników i naciśnięciu przycisku Zaawansowane pojawia się ekran bardzo podobny do ekranu używanego do nakładania uprawnień dla grup (por. rys. B.7). Jednak zamiast nazw grup otrzymujemy listę dostępnych użytkowników. Uprawnienia nadaje się i odbiera identycznie jak dla grup.

Figure: Zmiana uprawnień dla pojedynczych użytkowników
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/permuserex.eps}}

Możemy zaznaczyć opcję umożliwiającą nadanie wybranych uprawnień dla wszystkich dokumentów podrzędnych.

Funkcja nadawania uprawnień jest dostępna również dla grup katalogów.

Synchronizacja danych dyskowych z portalowymi

Po naciśnięciu przycisku \includegraphics{pic/ACTION_AUT.eps} możemy odświeżyć informacje o zawartości katalogu. Możemy wybrać, jaką wartość przyjmie pole Ochrona dostępu w nowych plikach i katalogach (domyślnie wartość N -- dokument nowy). Do bazy zostaną dodane wszystkie pliki i podkatalogi znajdujące się na dysku, a niezarejestrowane w bazie dokumentów. Z bazy zostaną usunięte informacje o nieistniejących fizycznie podkatalogach i plikach. Informacje wczytane z dysku wymagają uzupełnienia (opisy, wartości parametrów).

Jeśli dodany tą drogą plik ma rozszerzenie .html, to aplikacja próbuje uzyskać z niego informacje o tytule dokumentu (wartość znacznika <title> znajdującego się wewnątrz znacznika <head>) i wpisać go jako nazwę opisową pliku. Dodatkowo, jeśli w pliku wewnątrz znacznika <html> istnieje znacznik <body>, to aplikacja przypisuje do pliku arkusz XSLT wycinający zawartość tego znacznika.

Dla pozostałych dokumentów nazwą opisową staje się nazwa dyskowa pliku lub katalogu.

Funkcja ta jest dostępna również dla grup katalogów.

Administracja plikami oraz dowiązaniami

Okno umożliwiające administrację plikami i dowiązaniami jest bardzo podobne do tego używanego do administrowania katalogami (por. rys. B.8).

Figure: Administracja plikami oraz dowiązaniami
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/pliki.eps}}

Aplikacja umożliwia modyfikowanie informacji o pojedynczych plikach i dowiązaniach, jak również o całych ich grupach. Możliwe operacje to:

Dodanie nowego pliku

Dodanie pliku odbywa się po naciśnięciu przycisku \includegraphics{pic/ACTION_ADD.eps} . Zarejestrowanie pliku jest możliwe wyłącznie w przypadku, gdy plik znajduje się już fizycznie w bieżącym katalogu. Lista nazw plików dostępnych wewnątrz katalogu i niezarejestrowanych w bazie jest podana w polu wyboru.

Formularz służący do dodawania nowych plików uruchamia się tym samym przyciskiem, co formularz do dodawania nowych dowiązań. W przypadku braku na dysku nowych plików (niezarejestrowanych w bazie), formularz ten nie pojawi się. Po naciśnięciu przycisku \includegraphics{pic/ACTION_ADD.eps} będziemy mogli dodać jedynie dowiązania. Formularz służący do dodania nowych plików przedstawiono na rysunku B.9.

Figure B.9: Dodanie nowego pliku
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/addfile.eps}}

Aby zarejestrować plik, musimy podać nazwę opisową pliku, opis, wartości parametrów oraz pól Szablon, Ochrona dostępu i Widoczność.

Pola Szablon, Ochrona dostępu i Widoczność (domyślnie takie jak wartości nadkatalogu) oznaczają dokładnie to samo co dla katalogów.

Parametr Typ zawartości określony jest tylko dla plików typu FILE, i przechowuje typ pliku.

Parametr Arkusz XSLT określa sposób przetwarzania pliku i jest określony dla plików typu XML i HTML.

Dodanie nowego dowiązania

Dodanie dowiązania jest możliwe po naciśnięciu przycisku \includegraphics{pic/ACTION_ADD.eps} (por. rys. B.10).

Figure: Dodanie dowiązania
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/addlink.eps}}

Definicja dowiązania polega na określeniu jego adresu URL, nazwy opisowej, opisu oraz parametru Widoczność.

Możemy zdefiniować dowiązania lokalne. W polu URL podajemy ścieżkę do dokumentu. Ścieżka może być względna ('/' oznacza dokument główny w portalu).

Usunięcie pliku lub dowiązania

Usunięcie pliku lub dowiązania jest możliwe po wciśnięciu przycisku \includegraphics{pic/ACTION_DEL.eps} . Zostaniemy poproszeni o potwierdzenie chęci usunięcia dokumentu. Możemy zaznaczyć opcję usunięcia pliku nie tylko z bazy dokumentów, ale również fizycznie z dysku.

Funkcja ta jest dostępna również dla grup plików i dowiązań.

Przeniesienie plików lub dowiązań

Przeniesienie plików lub dowiązań odbywa się identycznie jak katalogów.

Funkcja ta jest dostępna również dla grup dokumentów.

Zmiana atrybutów plików lub dowiązań

Do zmiany atrybutów plików lub dowiązań służy przycisk \includegraphics{pic/ACTION_CHG.eps} . Po naciśnięciu go pojawi się widok bardzo podobny do używanego podczas dodawania nowych plików lub dowiązań. Możemy w nim zmienić dowolne parametry dokumentu.

Funkcja ta jest dostępna również dla grup dokumentów. Jeśli w grupie tej znajdują się wyłącznie to pliki możemy zmienić wartości parametrów oraz pól Ochrona dostępu i Widoczność. Jeśli znajdują się tam również dowiązania, to możemy zmienić tylko parametr Widoczność.

Nałożenie uprawnień na wybrane pliki

Uprawnienia możemy nakładać wyłącznie na pliki (dowiązania są ogólnodostępne). Metoda nakładania uprawnień dla plików jest identyczna jak dla katalogów.

Funkcja ta jest dostępna dla grup plików.

Synchronizacja danych dyskowych z portalowymi

W celu wczytania z dysku informacji o bieżącym katalogu, należy wcisnąć przycisk \includegraphics{pic/ACTION_AUT.eps} . Do bazy zostaną dodane wszystkie pliki i podkatalogi znajdujące się na dysku, a niezarejestrowane w bazie dokumentów. Z bazy zostaną usunięte informacje o nieistniejących fizycznie podkatalogach i plikach.

Administracja użytkownikami

Aplikacja do administrowania użytkownikami pozwala na zdefiniowanie hierarchicznej struktury grup oraz przypisanie użytkowników do dowolnej liczby grup.

Administracja grupami użytkowników

Aplikacja do administracji grupami użytkowników umożliwia dodawanie, usuwanie i modyfikację grup. Przy jej pomocy definiujemy również hierarchię grup (por. rys. B.11).

Figure: Administracja grupami użytkowników
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/admgr.eps}}

Dodanie nowej grupy

Do dodawania nowych grup służy przycisk \includegraphics{pic/ACTION_ADD.eps}. Musimy wybrać grupę nadrzędną (lub Wszystkie grupy, jeśli grupa ma być grupą główną) i po naciśnięciu przycisku definiujemy nazwę i opis grupy.

Modyfikacja istniejącej grupy

Do modyfikacji informacji dotyczącej wybranej grupy służy przycisk \includegraphics{pic/ACTION_CHG.eps} . Modyfikacja istniejącej grupy polega na zmianie nazwy i opisu grupy.

Przeniesienie istniejącej grupy

Do przeniesienia grupy w inne miejsce służy przycisk \includegraphics{pic/ACTION_MOV.eps} . Zostaniemy poproszeni o wybranie grupy, do której ma zostać przeniesiona grupa i wszystkie jej podgrupy. Użytkownicy należący do przenoszonej grupy nadal w niej pozostaną.

Usunięcie istniejącej podgupy

Usunięcie istniejącej podgupy jest możliwe po wybraniu przycisku \includegraphics{pic/ACTION_DEL.eps} . Usunięcie grupy użytkowników nie powoduje usunięcia użytkowników należących do tej grupy.

Administracja użytkownikami

Administracja użytkownikami obejmuje (por. rys. B.12):

Figure: Administracja użytkownikami
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/usersad.eps}}

Synchronizacja z USOSwebem

Synchronizacja z USOSwebem odbywa się po naciśnięciu przycisku Pobierz. System sprawdza wtedy informacje o użytkownikach znajdujące się w USOSwebie, aktualizuje informacje o użytkownikach zarejestrowanych w portalu oraz dodaje nowych, których znalazł w USOSwebie, a nie znalazł w portalu (importowane są informacje o identyfikatorze użytkownika, jego imieniu i nazwisku). Użytkownicy importowani z USOSweba są automatycznie kierowani do grup Studenci lub Pracownicy. Użytkownicy, którzy byli zarejestrowani w portalu, ale nie zostali odnalezieni w USOSwebie oraz ich pole login_nis jest wypełnione (informacja mówiąca, że dane o użytkowniku były importowane z USOSweba) są usuwani, w przeciwnym przypadku są pozostawiani (użytkownicy byli zarejestrowani w portalu bez udziału USOSweba).

Dodawanie nowych użytkowników

Nowych użytkowników możemy dodać również ręcznie. Aby to zrobić, musimy nacisnąć przycisk Dodaj nowych. Pojawi się wtedy formularz, w który należy wpisać informacje o użytkowniku, jego identyfikator, hasło i listę grup, do których ma należeć (por. rys B.13).

Figure: Dodanie nowego użytkownika
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/adduser.eps}}

Modyfikacja informacji o użytkownikach

Aby zmodyfikować informacje o użytkownikach, musimy najpierw zidentyfikować ich w systemie. W tym celu musimy ich odnaleźć korzystając z wyszukiwarki dołączonej do narzędzia. Użytkowników możemy wyszukiwać według grup, do których należą, identyfikatora systemowego lub nazwiska. W wyniku wyszukiwania dostaniemy listę osób spełniających zadane kryteria.

Z listy wyświetlonych osób powinniśmy wybrać (podświetlając je) osoby, których dane chcemy zmieniać. Aplikacja umożliwia nam:

Figure: Modyfikacja informacji o grupie użytkowników
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/chgusergr1.eps}}

Figure: Modyfikacja informacji o wybranym użytkowniku
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/edituser.eps}}

Administrowanie uprawnieniami

Administracja uprawnieniami polega na dodawaniu, usuwaniu i modyfikacji dostępnych w systemie uprawnień. Nowe uprawnienia mogą się przydać przy obsłudze dołączanych do portalu aplikacji.

Wewnątrz systemu istnieje pięć podstawowych uprawnień, których nie wolno usunąć ani zmodyfikować. Są to:

Figure B.16: Administracja uprawnieniami
\resizebox*{0.3\columnwidth}{!}{\includegraphics{pic/permad.eps}}

Po uruchomieniu aplikacji pojawi się okno, w którym znajdować się będzie pole wyboru z dostępnymi uprawnieniami oraz trzy przyciski, pozwalające na dodawanie, usuwanie i modyfikację uprawnień (por. rys. B.16).

Jeśli wybierzemy modyfikację lub usunięcie któregoś z pięciu wymienionych uprawnień, to zostanie wyświetlony komunikat z informacją o zakazie wprowadzania takich zmian.

Dodanie nowego uprawnienia

Przycisk DODAJ uruchamia ekran umożliwiający zdefiniowanie nazwy i opisu nowego uprawnienia. Jeśli podana nazwa jest poprawna, czyli nie została już wykorzystana przez inne uprawnienie i nie jest pusta, to uprawnienie zostanie dodane do systemu. Od tej pory nowe uprawnienie będzie widoczne przy definiowaniu praw dostępu dla katalogów i plików. Będzie je można również wykorzystać w aplikacjach (np. prawo do korzystania ze wspólnej drukarki).

Modyfikacja istniejącego uprawnienia

Przycisk MODYFIKUJ uruchamia formatkę umożliwiającą zmianę nazwy i opisu uprawnienia. Wszystkie dowiązania do modyfikowanego uprawnienia zostaną zachowane.

Usunięcie istniejącego uprawnienia

Przycisk USUŃ pozwala na usunięcie wybranego uprawnienia. Wszystkie dowiązania do modyfikowanego uprawnienia zostaną usunięte.

Administrowanie bazą danych

Figure: Administracja bazą danych
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/bazaD.eps}}

Aplikacja do administracji bazą danych umożliwia nam naprawę informacji znajdującej się wewnątrz bazy dokumentów. Aplikacja ta pozwala nam na (por. rys. B.17):

Administrowanie aplikacjami

Wyszukiwarka

Aplikacja służąca do administracji wyszukiwarką umożliwia indeksowanie plików znajdujących się w systemie. Indeksowane będą wyłącznie pliki zmodyfikowane po ostatnim indeksowaniu oraz jeszcze nieindeksowane.

Teoretycznie, indeksowanie plików powinno być uruchamiane po każdej zmianie wewnątrz bazy dokumentów. Zaleca się uruchamianie indeksowania raz dziennie.

Ankiety

Ankiety stworzone przy pomocy dołączonej aplikacji administratorskiej mogą zawierać jedno pytanie i maksymalnie dziesięć możliwych odpowiedzi.

Menu główne do administracji ankietami pozwala nam na (por. rys. B.18):

Figure B.18: Administracja ankietami
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/edAnk.eps}}

Dodanie nowej ankiety

Do dodania nowych ankiet służy przycisk \includegraphics{pic/ACTION_ADD.eps} .

Figure B.19: Dodanie nowej ankiety
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/nowaAn.eps}}

Dodanie nowej ankiety polega na zdefiniowaniu pytania i możliwych odpowiedzi. Dodatkowo musimy zdefiniwać parametry Type oraz Status (por. rys. B.19).

Pole Type może przyjmować następujące wartości:

Pole Status może przyjmować następujące wartości:

Administracja istniejącymi ankietami

Administrowanie istniejącymi ankietami umożliwia:

Ogłoszenia

Figure: Usuwanie nieaktywnych wątków w ogłoszeniach
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/news.eps}}

Większość czynności związanych z administrowaniem aplikacją ogłoszeniową można wykonać wykorzystując aplikację do zarządzania katalogami i plikami. Do czynności tych należą:

Aplikacja do zarządzania ogłoszeniami umożliwia nam usunięcie nieaktywnych wątków w grupie, czyli takich, na które nie było żadnej odpowiedzi w określonym czasie. Aby to zrobić, musimy wybrać grupę ogłoszeniową i wpisać datę określającą aktywność grupy (por. rys. B.20). Wszystkie wątki wewnątrz grupy, na które po podanej dacie nie przyszła żadna odpowiedź, zostaną usunięte.

Generacja raportów

Generator raportów zanurzony w aplikacji administratorskiej pozwala na uzyskanie informacji o (por. rys. B.21):

Figure: Generacja raportów
\resizebox*{0.5\textwidth}{!}{\includegraphics{pic/rap.eps}}

Scenariusze czynności administratorskich

W tej części pracy opisano zaawansowane czynności administratorskie.

Administratorzy podkatalogów

Administrowaniem portalem zajmować się będzie najczęściej kilka osób. Narzędzie XMportal umożliwia zdefiniowanie tzw. lokalnych aministratorów. Mogą oni administrować tylko wybranymi podkatalogami portalu. Nie będą mogli niczego zmienić, ani nawet obejrzeć w tych częściach portalu, do których nie mają uprawnień. Uprawnienia do administracji konkretnymi katalogami można nadać jednemu użytkownikowi lub grupie użytkowników.

W dalszej części rozdziału przedstawimy sposób przypisania użytkownikowi uprawnienia do administracji katalogami.

Przypisanie uprawnień

Podstawowym narzędziem służącym do definiowania administratorów lokalnych jest aplikacja administratorska. Administratorów lokalnych definiować może wyłącznie administrator główny.

Pierwszym krokiem jest przypisanie nowym administratorom uprawnienia odczyt dla całego katalogu /admin/catalogs (por. rys. C.1). W tym celu należy zgodnie z instrukcją aplikacji administratorskiej, uruchomić nakładanie uprawnień dla katalogu /admin/catalogs.

Figure C.1: Prawo do odczytu katalogu /admin/catalogs
\resizebox*{0.5\textwidth}{!}{\includegraphics{scen/permreadpadm.eps}}

Po wybraniu odpowiedniego użytkownika (lub grupy użytkowników) dodajemy mu uprawnienie Odczyt. Musimy również zaznaczyć opcję przypisania tego uprawnienia do wszystkich dokumentów podrzędnych.

Drugim krokiem jest przypisanie nowym administratorom uprawnienia administracja do katalogu, którym mają administrować.

Figure C.2: Prawo do administrowania wybranym katalogiem
\resizebox*{0.5\textwidth}{!}{\includegraphics{scen/permreadadm.eps}}

Musimy wybrać katalog do którego chcemy przypisać administratorów. Następnie uruchamiamy menu do przypisywania uprawnień. Po wybraniu odpowiednich użytkowników (lub grup użytkowników) dodajemy im uprawnienie Administracja. Nie należy zaznaczać opcji przypisania uprawnienia do dokumentów podrzędnych (por. rys. C.2). Jest to spowodowane tym, że uprawnienie Administracja pozwala na administrowanie wybranym katalogiem i wszystkimi jego podkatalogami.

Korzystanie z aplikacji administratorskiej przez administratorów lokalnych

Do administrowania swoimi katalogami administrator lokalny wykorzystuje aplikację administratorską. Uruchamia ją wpisując adres portalu, a następnie ścieżkę /admin/catalogs. Pojawi mu się wtedy lista katalogów, którymi może administrować. Będzie ich tyle, do ilu ma przypisane uprawnienie Administracja (por. rys. C.3).

Figure: Lista dostępnych katalogów
\resizebox*{0.4\textwidth}{!}{\includegraphics{scen/wybierzkatalog.eps}}

Naciśnięcie przycisku z wybranym katalogiem uruchamia standardową aplikację służącą do administrowania katalogami, jednak jest ona ograniczona tylko do wcześniej wybranego katalogu (por. rys. C.4).

Figure C.4: Administracja wybranym katalogiem
\resizebox*{0.5\textwidth}{!}{\includegraphics{scen/badania.eps}}

Wyświetlanie zawartości katalogów

Sposób wyświetlania katalogu jest zależny od definicji atrybutów Dokument główny oraz Arkusz XSLT. Pierwszy z wymienionych atrybutów wskazuje na plik wyświetlający zawartość katalogu. Drugi z atrybutów wskazuje na arkusz XSLT, definiujący sposób wyświetlania zawartości katalogu (należy go zdefiniować jeśli pierwszy plik generował wynik w postaci XML). Definiując parametry katalogu nie musimy wypełniać zawartości żadnego z tych atrybutów. Do wyświetlenia zawartości katalogu zostanie wtedy użyty standardowy plik index.php, index.xml lub index.html znajdujący się wewnątrz katalogu lub plik domyślny (zgodnie z regułami przedstawionymi w poprzedniej części pracy). Do przetworzenia języka XML zostanie wtedy użyty arkusz XSLT przywiązany do tego pliku.

W dalszej części rozdziału opisano metody niestandardowego wyświetlania zawartości katalogów.

Wyświetlenie kilku poziomów katalogów

W celu wyświetlenia zawartości katalogu wraz z informacją o zawartości podkatalogów, musimy zdefiniować atrybut głębokość. Atrybut ten definiuje się w pliku index.php.

Pierwszym krokiem jest skopiowanie pliku index.php do katalogu, który chcemy wyświetlić. Jest to konieczne, ponieważ modyfikacje wykonane na standardowym pliku index.php znajdującym się w głównym katalogu zmieniłyby sposób wyświetlania wszystkich katalogów, a nie tylko tego, który chcemy wyświetlić. Następnie nowy plik index.php musimy zarejestrować w bazie i zdefiniować atrybuty, identycznie jak dla standardowego pliku index.php (pole Typ przyjmuje wartość XML, pole Widoczność przyjmuje wartość Ukryty, pole Ochrona dostępu przyjmuje wartość Publiczny, a pole Arkusz XSLT wartość /homepage).

Następnie musimy zmodyfikować zawartość pliku index.php. Zmieniamy fragment kodu:

print(fs_get_catalog_contents($gi_database_handler, $w0_original_id));
na np.:

print(fs_get_catalog_contents($gi_database_handler, $w0_original_id, 2));
Dostawiony na końcu parametr określa głębokość wyświetlania katalogów. Standardowo jest on ustawiony na jeden.

Kopiowanie pliku ani jego modyfikacja nie są konieczne, jeśli już raz zdefiniowaliśmy plik index.php wyświetlający zawartość katalogu o pożądanej głębokości. Wystarczy, jeśli w polu Dokument główny wpiszemy ścieżkę do tego pliku (można wtedy użyć ścieżek względnych, gdzie '/' oznacza katalog główny portalu).

Sortowanie zawartości katalogów

Wyświetlając zawartość katalogów w sposób standardowy otrzymujemy listę katalogów, plików i dowiązań posortowanych według nazw w porządku alfabetycznym. Często chcielibyśmy, aby sortowanie odbyło się według innych atrybutów lub w odwrotnym porządku.

W tym celu należy skopiować plik catalogs_newerfirst.default.xsl z katalogu głównego do katalogu, który chcemy wyświetlić.

Wewnątrz pliku definiujemy sposób sortowania:

<!- Sposob sortowania katalogow ->

<xsl:template match="catalogs">

   ...

   <xsl:sort select="@datetime" order="descending"/>

   ...

<!- Sposob sortowania plikow ->

<xsl:template match="files">

   ...

   <xsl:sort select="@datetime" order="descending"/>

   ...

Musimy zdefiniować sposób sortowania katalogów i plików. Mamy możliwość sortowania według:

Sposób sortowania definiujemy wpisując odpowiednią wartość po atrybucie select. Kolejność sortowania definiujemy atrybutem order. Dopuszczalne wartości to:

Ostatnim krokiem jest przypisanie arkusza XSLT do katalogu. W tym celu musimy w polu Arkusz XSLT katalogu wpisać ścieżkę do skopiowanego pliku catalogs_newerfirst.default.xsl. Należy pamiętać, że w ścieżce podajemy tylko catalog_newerfirst -- główny element nazwy pliku.

Kopiowanie pliku ani jego modyfikacja nie są konieczne, jeśli już raz zdefiniowaliśmy plik catalogs_newerfirst.default.xsl wyświetlający zawartość katalogu o wymaganym porządku. Wystarczy, jeśli w polu Arkusz XSLT wpiszemy ścieżkę do tego pliku.

Niestandardowe metody wyświetlania katalogów

Narzędzie XMportal umożliwia również zupełnie niestandardowe sposoby wyświetlania zawartości katalogów. Możemy samodzielnie napisać skrypty PHP lub strony HTML i przywiązać je do danego katalogu. Istotna jest reguła, że plik generujący stronę z zawartością katalogu powinien mieć nazwę index.php, index.xml lub index.html i znajdować się w katalogu, który chcemy wyświetlić. Drugi sposób to wskazanie na ten plik w atrybucie katalogu Dokument główny. Należy pamiętać, że plik ten powinien być zarejestrowany w bazie dokumentów. Jeśli plik generuje wynik w postaci XML, to należy w atrybucie Arkusz XSLT dowiązać do niego arkusz XSLT. Arkusz ten można dowiązać zarówno do pliku, jak i do katalogu. Przypisanie do pliku sprawi, że wszystkie katalogi wykorzystujące ten plik do wyświetlania swojej zawartości będą mogły wykorzystać ten wygląd. Przypisanie do katalogu zmienia wygląd tylko dla danego katalogu.

Przykładem aplikacji, która wyświetla zawartość katalogu w niestandardowy sposób, jest lista uchwał Rady Wydziału. Generowany na podstawie aplikacji plik index.xml ma następującą postać:

<?xml version="1.0"?>

 

<uchwaly>

    <uchwala

       href="uchwala-2000-01.html"

       nr="1"

       data="24 lutego 2000"

       temat="Temat uchwały nr 1"/>

    <uchwala

       href="uchwala-2000-02.html"

       nr="2"

       data="24 lutego 2000"

       temat="Temat uchwały nr 2"

       description=/>

    <uchwala

       href="uchwala-2000-03.html"

       nr="3"

       data="25 maja 2000"

       temat="Temat uchwały nr 3"/>

    dalsze uchwały

</uchwaly>

Przywiązany do tego pliku arkusz XSLT ma w profilu default następującą zawartość:

<?xml version="1.0"?>

 

<xsl:stylesheet version="1.0"

    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 

<xsl:template match="/">

    <xsl:apply-templates/>

</xsl:template>

 

<xsl:template match="uchwaly">

    <table border="0" cellspacing="0" cellpadding="4">

    <tr>

    <th>Nr</th>

    <th>Data</th>

    <th>Temat</th>

    </tr>

    <xsl:apply-templates select="uchwala"/>

    </table>

</xsl:template>

 

<xsl:template match="uchwala">

    <tr>

        <td nowrap="nowrap"><xsl:value-of select="@nr"/></td>

        <td><xsl:value-of select="@data"/></td>

        <td><a href="{@href}"><xsl:value-of select="@temat"/></a></td>

    </tr>

</xsl:template>

 

</xsl:stylesheet>

Aplikacja generuje listę uchwał Rady Wydziału na podstawie analizy dokumentów HTML znajdujących się w bieżącym katalogu. Analiza polega na pobraniu z tych dokumentów informacji zdefiniowanych przez konkretne zapytania w języku XPath -- szczególne dla tego rodzaju dokumentu.

Zmiana atrybutów Ochrona dokumentu i Widoczność

W trakcie opisywania czynności administracyjnych często pisaliśmy o atrybutach Ochrona dokumentu i Widoczność. W tym rozdziale dokładnie opiszemy znaczenie tych atrybutów.

Atrybut Widoczność

Atrybut Widoczność przyjmuje dwie wartości: widoczny i ukryty. Informacja, że dokument nie jest widoczny nie oznacza, że dokumentu nie da się wyświetlić. Jest to możliwe, ale chcemy to utrudnić. Dokumenty takie nie będą wyświetlone przy standardowych metodach prezentacji zawartości katalogu. Nie zostaną również przekazane jako wynik wyszukiwania. Do dokumentów niewidocznych możemy się jednak odwołać wpisując w przeglądarce ścieżkę do dokumentu. Jeśli przejdziemy pomyślnie procedurę autoryzacji, to dokument taki zostanie wyświetlony. W ten sposób została ,,ukryta'' aplikacja administratorska. Nie jest ona widoczna, więc osoby niepowołane nie powinny się dowiedzieć o jej istnieniu. Jednak osoby o uprawnieniach administratorskich po wpisaniu ścieżki /admin mogą ją uruchomić. Atrybut ukryty otrzymują również aplikacje boczne (otaczające dokument główny), których nie chcemy wyświetlać w oknie głównym.

Atrybut Ochrona dokumentu

Atrybut Ochrona dokumentu przyjmuje pięć różnych wartości. Wartość publiczny oznacza, że dokument ten może odczytać każdy. Dokument będzie wyświetlony na liście prezentującej zawartość katalogu i jako wynik wyszukiwania. Wartość wymaga zalogowania oznacza, że dokument jest dostępny tylko dla użytkowników zarejestrowanych w systemie. Odwołania do dokumentu będą widoczne wewnątrz katalogów i jako wynik wyszukiwania, ale jeśli użytkownik nie jest zautoryzowany w systemie, to dokument nie zostanie wyświetlony. Wartość chroniony oznacza, że dokument podlega ochronie i jest dostępny wyłącznie dla użytkowników, którzy mają przypisane prawo Odczyt do tego dokumentu. Dla pozostałych użytkowników dokument nie będzie wyświetlany wewnątrz katalogów ani jako wynik wyszukiwania. Wartość wewnętrzny oznacza, że dokument jest wewnętrznym dokumentem systemowym. Dokumentu takiego nie da się wyświetlić przez wpisanie pełnej ścieżki do dokumentu. Nie będzie on wyświetlony ani jako wynik wyszukiwania, ani jako zawartość katalogu. Wartość nowy oznacza, że dokument został niedawno dołączony do portalu i administrator nie zdążył jeszcze zdefiniować jego atrybutów. Nie podlega on wyszukiwaniu ani wyświetlaniu.

Dodanie nowych grup dyskusyjnych

Ogłoszenia i listy dyskusyjne są pogrupowane w dwóch poziomach hierarchii. Pierwszy poziom jest bardzo ogólny (podział np. na ogłosznia i forum dyskusyjne). W dalszej części pracy będziemy nazywali ten podział kategoriami. Drugi poziom jest bardziej szczegółowy (podział np. na ogłoszenia studenckie, pracownicze i ogólne). W dalszej części pracy będziemy nazywali ten podział kanałami.

W rozdziale tym opiszemy sposób dodania nowych kategorii i kanałów.

Dodanie nowej kategorii

W celu dodania nowej kategorii o nazwie np. forum dyskusyjne musimy najpierw utworzyć katalog /news/forum_dyskusyjne na dysku. Następnie należy do tego katalogu wgrać plik sendnews.php. Przechowuje on informacje o formatce wykorzystywanej do wysyłania ogłoszeń w danej grupie kanałów. Następnie wykorzystując aplikację administratorską, rejestrujemy nowy katalog i plik w bazie dokumentów (np. poprzez automatyczne wczytanie zawartości katalogu /news). Kolejnym krokiem jest zdefiniowanie informacji o nowym katalogu i pliku wewnątrz bazy dokumentów.

Jedynymi atrybutami, które trzeba ustawić dla katalogu /news/forum_dyskusyjne jest Ochrona dostępu na publiczny, dostępny po zalogowaniu lub chroniony (w zależności od potrzeb), oraz Widoczność na Widoczny.

W pliku sendnews.php należy zaznaczyć Typ pliku jako XML, Ochrona dostępu na publiczny, oraz Widoczność na ukryty. Parametr wskazujący na arkusz XSLT powinien wskazywać na plik /forms ,służący do wyświetlania formularzy (por. rys. C.5).

Figure: Prawidłowo zdefiniowany plik sendnews.php
\resizebox*{0.5\textwidth}{!}{\includegraphics{scen/sendnews.eps}}

Dodanie nowego kanału

Pierwszym krokiem służącym do zdefiniowania nowego kanału jest utworzenie nowego katalogu wewnątrz wybranej kategorii. Następnie katalog ten należy zarejestrować wewnątrz bazy dokumentów.

Figure: Prawidłowo zdefiniowany kanał dyskusyjny
\resizebox*{0.5\textwidth}{!}{\includegraphics{scen/detnews.eps}}

Nowy kanał powinien mieć ustawiony atrybut Widoczność na Widoczny. Parametr wskazujący na sposób wyświetlania katalogu powinien wskazywać na plik /news/level2o.index.php. Parametr Ochrona dostępu ustawiamy w zależności od wymagań (por. rys. C.6).

Jeśli uznaliśmy, że dotęp do kanału powinien być ograniczony powinniśmy zdefiniować uprawnienia do tego kanału. Wykorzystujemy do tego standardową aplikację administratorską.

Figure: Prawidłowo zdefiniowane uprawnienia do kanału dyskusyjnego
\resizebox*{0.5\textwidth}{!}{\includegraphics{scen/permnews.eps}}

Na przedstawionym powyżej rysunku przedstawiono konfigurację kanału, w którym wysyłać ogłoszenia mogą użytkownicy należący do grup Administratorzy i Pracownicy, a czytać mogą użytkownicy należący do grup Administratorzy, Pracownicy oraz Studenci (por. rys. C.7).

Bibliography

Apache
Strona domowa serwera Apache,
http://httpd.apache.org/

Apache-API
Specyfikacja Apache API,
http://httpd.apache.org/docs/misc/API.html

Apache-FOP
Strona domowa produktu FOP,
http://xml.apache.org/fop/

Apache-Tomcat
Strona domowa serwera Tomcat,
http://jakarta.apache.org/tomcat/

Atkinson
L. Atkinson, PHP 3. Helion 2000.

Banachowski
L. Banachowski, Bazy danych: Tworzenie aplikacji. PLJ 1998.

Dębowski
M. Dębowski, Narzędzia do budowy portali internetowych z wykorzystaniem SQL-owej bazy danych. Praca magisterska, Instytut Informatyki Uniwersytetu Warszawskiego, 2001.

DSSSL
Specyfikacja języka DSSSL,
http://www.ibiblio.org/pub/sun-info/standards/dsssl/dssslo/do960816.htm

Expat
Strona domowa biblioteki expat,
http://www.jclark.com/xml/expat.html

FastCGI
Strona domowa standardu FastCGI,
http://www.fastcgi.com/

Fuglewicz
P. Fuglewicz, K. Stąpor, A. Trojnar, CASE dla ludzi, wyd. II. Lupus 1996.

Gruber
M. Gruber, SQL. Helion 1996.

IBM-WAS
Strona domowa serwerów aplikacji firmy IBM,
http://www.ibm.com/software/webservers/

IntTime
Hobbes' Internet Timeline v5.4,
http://www.zakon.org/robert/internet/timeline/

JSart
Porównanie języka JavaScript i JScript,
http://www.javacats.com/US/articles/Jsart.html

LibXML
Strona domowa biblioteki libxml,
http://xmlsoft.org/

LibXML-55380
Błąd 55380 w bibliotece libxml,
http://bugzilla.gnome.org/show_bug.cgi?id=55380

LibXSLT
Strona domowa biblioteki libxslt,
http://xmlsoft.org/XSLT/

Macr-CF
Strona domowa produktu ColdFusion,
http://www.macromedia.com/software/coldfusion/

Morgan
M. Morgan, Poznaj język Java, wyd. II. Mikom 2001.

MS-ActX
Strona domowa kontrolek ActiveX,
http://www.microsoft.com/com/tech/ActiveX.asp

MS-IIS
Strona domowa serwera Microsoft Internet Information Server,
http://www.microsoft.com/iis/

MS-ISAPI
Specyfikacja ISAPI,
http://msdn.microsoft.com/library/en-us/iisref/html/psdk/asp/isre9llx.asp

MS-JS
Strona domowa języka JScript,
http://msdn.microsoft.com/scripting/jscript/default.htm

MS-NET
Strona domowa technologii Microsoft .NET,
http://www.microsoft.com/net/

MS-VBS
Strona domowa języka VBScript,
http://msdn.microsoft.com/scripting/vbscript/default.asp

MSQL
Strona domowa serwera mSQL,
http://www.hughes.com.au/products/msql/

MySQL
Strona domowa serwera MySQL,
http://www.mysql.com/

Nets-Cook
Specyfikacja mechanizmu ciasteczek,
http://home.netscape.com/newsref/std/cookie_spec.html

Nets-JS
Strona domowa języka JavaScript,
http://developer.netscape.com/docs/manuals/communicator/jsref/index.htm

Nets-SSL
Specyfikacja standardu SSL 3.0,
http://home.netscape.com/eng/ssl3/

North
S. North, XML dla każdego. Helion 2000.

Nowisz-Olszewik
J. Nowisz, M. Olszewik, USOSweb -- moduł internetowy systemu USOS. Praca magisterska, Instytut Informatyki Uniwersytetu Warszawskiego, 2001.

Ogryczak
B. Ogryczak, USOSweb -- rejestracja przez Internet. Praca magisterska, Instytut Informatyki Uniwersytetu Warszawskiego (w przygotowaniu).

OpenSource
Strona domowa projektu Open Source,
http://www.opensource.org/

Oracle-9iAS
Strona domowa produktu Oracle9iAS Portal,
http://portalstudio.oracle.com

Perl
Strona domowa języka Perl,
http://www.perl.com/

PgSQL
Strona domowa serwera PostgreSQL,
http://www.postgresql.org/

PHP
Strona domowa języka PHP,
http://www.php.net/

PHP-Acc
Strona domowa produktu PHP Accelerator Cache,
http://www.php-accelerator.co.uk/

PHP-APC
Strona domowa produktu APC,
http://apc.communityconnect.com/

PHP-BWC
Strona domowa produktu afterBURNER,
http://bwcache.bware.it/

PHP-CVS
Repozytorium CVS języka PHP,
http://cvs.php.net/cvs.php

PHP-DOM
Podręcznik PHP: Funkcje DOM XML,
http://www.php.net/manual/en/ref.domxml.php

PHP-WS44
PHP: Podsumowanie tygodniowe: 9 lipca 2001,
http://www.zend.com/zend/week/week44.php#Heading12

PHP-WS62
PHP: Podsumowanie tygodniowe: 12 listopada 2001,
http://www.zend.com/zend/week/week62.php#Heading5

PHP-XML
Podręcznik PHP: Funkcje XML parser,
http://www.php.net/manual/en/ref.xml.php

PHP-XSLT
Podręcznik PHP: Funkcje XSLT,
http://www.php.net/manual/en/ref.xslt.php

PHP-ZAcc
Lista produktów firmy Zend,
http://www.zend.com/zend/products.php

RFC1738
RFC1738: Uniform Resource Locators (URL),
http://www.ietf.org/rfc/rfc1738.txt

RFC2046
RFC2046: Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types,
http://www.ietf.org/rfc/rfc2046.txt

RFC2068
RFC2068: Hypertext Transfer Protocol -- HTTP/1.1,
http://www.ietf.org/rfc/rfc2068.txt

RFC2279
RFC2279: UTF-8, a transformation format of ISO 10646,
http://www.ietf.org/rfc/rfc2279.txt

Sun-J2EE
Strona domowa Java 2 Platform, Enterprise Edition,
http://java.sun.com/j2ee/

Sun-Java
Strona domowa technologii Java,
http://java.sun.com/

Sablot
Strona domowa biblioteki Sablotron,
http://www.gingerall.com/charlie/ga/xml/p_sab.xml

Sablot-LibXSLT
Porównanie bibliotek Sablotron i libxslt,
http://archive.gingerall.cz/archives/sablot/msg00989.html

Sablot-PHP
Rozszerzenia PHP XSLT,
http://www.gingerall.com/charlie/ga/xml/x_sabphp.xml

Traffick
Portal Traffick,
http://www.traffick.com

W3C
Strona domowa World Wide Web Consortium,
http://www.w3.org/

W3C-CGI
Strona domowa standardu CGI,
http://www.w3.org/CGI/

W3C-CSS
Strona domowa stadnardu Cascading Style Sheets,
http://www.w3.org/Style/CSS/

W3C-DOM
Strona domowa standardu Document Object Model,
http://www.w3.org/DOM/

W3C-Hist
A Little History of the World Wide Web,
http://www.w3.org/History.html

W3C-HTML
Strona domowa języka HTML,
http://www.w3.org/MarkUp/

W3C-HTML4
Specyfikacja języka HTML 4.01,
http://www.w3.org/TR/html4/

W3C-SGML
Przegląd zasobów o języku SGML,
http://www.w3.org/MarkUp/SGML/

W3C-XLink
Strona domowa standardów XML Pointer, XML Base i XML Linking,
http://www.w3.org/XML/Linking

W3C-XML
Strona domowa języka XML,
http://www.w3.org/XML/

W3C-XPath
Strona domowa języka XPath,
http://www.w3.org/TR/xpath

W3C-XSL
Strona domowa języka XSL,
http://www.w3.org/TR/xsl/

W3C-XSLFO
Definicja obiektów formatujących,
http://www.w3.org/TR/xsl/slice1.html#section-N742-Formatting

W3C-XSLT
Strona domowa języka XSLT,
http://www.w3.org/TR/xslt

Yahoo-Hist
Historia Yahoo!,
http://docs.yahoo.com/info/misc/history.html

About this document ...

XMportal -- narzędzie do budowy zaawansowanych portali internetowych

This document was generated using the LaTeX2HTML translator Version 99.2beta8 (1.43)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -split 0 XMportal.tex

The translation was initiated by Janina Mincer-Daszkiewicz on 2002-05-23


Footnotes

... JavaScript/JScript[*]
JavaScript i JScript to dwie odmiany tego samego języka. JavaScript jest rozwijany przez Netscape Communications, a JScript przez Microsoft. Porównanie obu odmian można znaleźć w [JSart].
... USOSwebem[*]
USOSweb -- wdrożona na Wydziale MIM Uniwersytetu Warszawskiego aplikacja internetowa pozwalająca studentom na korzystanie z zasobów Uniwersyteckiego Systemu Obsługi Studiów. Podstawowe funkcje udostępnione studentom to sprawdzanie ocen i rejestracja na zajęcia. Por. [Nowisz-Olszewik], [Ogryczak].
... NIS[*]
NIS (ang. Network Information Service) -- serwis umożliwiający przekazywanie informacji wewnątrz sieci komputerowych.
... programistów[*]
Nagłówki dla programistów -- zestaw nagłówków dla języka C i inne pliki potrzebne programistom do implementacji programów korzystających z tego oprogramowania. Zazwyczaj pakiety z takimi plikami mają nazwę nazwapakietu-devel.
... certyfikatem[*]
Sposób generacji certyfikatu jest opisany w dokumentacji serwera Apache.

next_inactive up previous
Janina Mincer-Daszkiewicz 2002-05-23