WYKORZYSTANIE NARZĘDZIA SFH_FORM_FRAMEWORK DO BUDOWY SYSTEMU KLASY CMS Tomasz Adamczewski, Celina M. Olszak Wprowadzenie Rozwój technologii informacyjnej jest głównym motorem sprawczym dynamicznego rozwoju Internetu. Coraz powszechniej pełni on nie tylko funkcje informacyjną, ale poprzez swoją otwartość umożliwia użytkownikom aktywny udział w tworzeniu wirtualnego świata. Dzięki powstaniu systemów klasy CMS (Content Management System) tworzenie stron WWW nie jest już tylko domeną specjalistów. Pojawienie się tej klasy systemów umożliwiło znaczną poprawę wartości merytorycznej prezentowanych treści, ponieważ dzięki mechanizmom uprawnień jest ona wprowadzana przez specjalistów danej dziedziny, a rola informatyków została sprowadzona do nadzorowania funkcjonowania całego systemu. Ceny rozwiązań tej klasy systemów wahają się od zera do setek tysięcy dolarów, dzięki czemu każdy może znaleźć rozwiązanie najbardziej odpowiednie. Firmy oferujące drogie rozwiązania komercyjne są w stanie dopasować działanie systemu doskonale do potrzeb klienta. Istnieją jednak takie obszary świata wirtualnego, które ze względu chociażby na swoją niszowość nie mieszczą się w ramach nawet kosztownych rozwiązań komercyjnych. W takiej sytuacji niezbędne jest stworzenie systemu dedykowanego. Mimo, iż nie znajdują tutaj zastosowania gotowe systemy, to do ich wykonania pożądane wydaje się być wykorzystanie spe-
cjalistycznych narzędzi, bibliotek, czy klas, które przyspieszą powstanie oprogramowania. Celem niniejszego opracowania jest: 1) porównanie użyteczności gotowych systemów CMS i narzędzi typu framework; 2) Przedstawienie przykładowych potencjalnych zastosowań frameworków ułatwiających tworzenie stron WWW; 3) przedstawienie przykładowej implementacji narzędzia SFH_FORM_FRAMEWORK do budowy systemu klasy CMS. Systemy klasy CMS Systemy Zarządzania Treścią znajdują zastosowanie w wielu obszarach działalności przedsiębiorstwa. Służą przede wszystkim do tworzenia stron. Oprócz tego służą do przechowywania różnego rodzaju treści. Ze względu na zastosowanie systemu, wyróżnia się następujące jego podklasy [AdOl06]: W-CMS (Web Content Management System) zaprojektowane z myślą o zarządzaniu treścią witryny internetowej; T-CMS (Transactional Content Management System) używane w środowisku komercyjnym w celu ułatwiania przeprowadzania transakcji; I-CMS (Integrated Content Management System) zintegrowany system ułatwiający współpracę między użytkownikami oraz obieg dokumentów; P-CMS (Publication Content Management System) czyli systemy wspomagające równoległe tworzenie publikacji; L-CMS (Learning Content Management System) czyli aplikacje wspomagające tworzenia serwisów z treściami edukacyjnym
W niniejszym opracowaniu autorzy przedstawią założenia działania systemu klasy W-CMS na przykładzie popularnego systemu Joomla!, dostępnego na licencji GPL (General Public Licence). System Joolma! zalicza się do profesjonalnych systemów zarządzania treścią (CMS). Jest używany na całym świecie do budowy zarówno złożonych serwisów korporacyjnych i portali, jak i do prostych, ale efektownych stron WWW [Joom07]. Realizuje on wszystkie podstawowe założenia stawiane przed systemami tej klasy, tzn. [AdOl06]: Pozwala oddzielić treść strony od jej szaty graficznej poprzez umożliwienie edycji zebranych danych przy pomocy wspólnego interfejsu użytkownika oraz wprowadzenie mechanizmów zarządzania szablonami, które pozwalają zmienić wygląd całej witryny bez ingerencji w jej strukturę czy treść; Pozwala na edycję witryny osobom, które nie posiadają profesjonalnej wiedzy na temat tworzenia witryn internetowych, najczęściej poprzez umożliwienie im tworzenia i redagowania treści strony przy pomocy łatwych w obsłudze programów biurowych lub wprowadzanie własnych narzędzi, których interfejs jest podobny do interfejsu takich programów (Rich Text Editor); Umożliwia automatyzację procedur związanych z aktualizacją witryny i archiwizacją nieaktualnych materiałów dzięki zastosowaniu procedur odpowiadających za generowanie na żądanie użytkownika poszczególnych treści oraz za wdrożenie terminarza zarządzania zgromadzonymi materiałami;
Zapewnia kontrolę publikacji materiałów na stronie poprzez zastosowanie mechanizmów akceptacji i weryfikacji w centralnym systemie zarządzania obiegiem prac; Umożliwia śledzenie zmian poczynionych w materiałach, a także ewentualny powrót do wcześniejszych wersji dokumentów; Funkcje CMS odpowiadają za wszystkie zasadnicze elementy witryny internetowej: szatę graficzną (layout), treść oraz nawigację. Aby możliwe było realizowanie powyższych założeń, niezbędne jest także wprowadzenie sprawnych mechanizmów zarządzania użytkownikami systemu oraz ich uprawnieniami. W systemie Joomla! Wyróżnione zostały cztery grupy użytkowników: anonimowy, zarejestrowany, zarejestrowany specjalny do strony głównej, zarejestrowany specjalny do strony administracyjnej. Zależnie od posiadanych praw dostępu użytkownik Joomla! może należeć do jednej z sześciu grup ze specjalnymi przywilejami [Wajd07]: autor [Author], edytor [Editor], publikator [Publisher], redaktor [Manager], administrator [Administrator], główny administrator [Super Administrator]. Rozwiązanie przyjęte przez projektantów systemu pozwala szybko zarządzać uprawnieniami. Odbywa się to jednak kosztem jakości tych uprawnień, ponieważ użytkownik posiadający uprawnienia określone jako specjalne ma prawo nadsyłania artykułów do wszystkich sekcji
oznaczonych w systemie jako specjalne. Może to stanowić o potencjalnym obniżeniu jakości prezentowanych w systemie treści. Podejście do problemu uprawnień w sposób, w którym każdy element systemu traktuje się elementarnie wydaje się być rozwiązaniem bezpieczniejszym. W systemach, które oferują takie rozwiązanie, uprawnienia (a także ich poziom) nadaje się indywidualnie do każdego elementu systemu (sekcje, elementy administracyjne). Systemy CMS rozpowszechniane na licencji GPL (w tym Joomla!) są systemami zazwyczaj stabilnymi i mogącymi sprostać wymaganiom stawianym im przez ich użytkowników. Pod warunkiem jednak, że są one wykorzystywane do typowych zadań (niekoniecznie prostych), takich jak prezentacja treści czy obsługa sklepu internetowego. Dynamiczny rozwój technologii informatycznych nie byłby możliwy bez innowacyjności ich użytkowników. Należy tu zwrócić uwagę, że mimo swojej elastyczności, gotowe systemy CMS opierają się na pewnych założeniach projektowych, a zatem pewne nowinki, mimo rozszerzalności systemu nie mogą zostać zaimplementowane. Aby osiągnąć pożądany efekt, trzeba czasem zbudować system od podstaw. Aby jednak przyspieszyć czas powstania systemu, twórcy oprogramowania wspierani są przez różnego typu narzędzia w tym, przede wszystkim, przez rozmaite frameworki. arzędzia typu framework Narzędzia Framework wspomagają tworzenie, rozwój testowanie aplikacji. Z reguły na framework składają się programy wspomagające, biblioteki kodu źródłowego i inne analogicyne narzędzia. [ ] To szkielet
działania aplikacji, który zapewnia podstawowe mechanizmy i może być wypełniany właściwą treścią programu. Np. w programowaniu gier na szkielet może składać się utworzenie pustego okna, kod inicjalizacji i finalizacji biblioteki graficznej (jak DirectX czy OpenGL), a także dodatkowe moduły wspomagające, jak wczytywanie tekstur z różnych formatów plików, funkcje rysujące podstawowe figury geometryczne, tekst, itp. [Wiki07]. Można wyróżnić narzędzia framework dedykowane dla języka programowania, lub dla platformy (np..net Framework, PEAR, ZEND), a także te, które są niezależne od użytego języka obsługujące na przykład dostęp do API systemu operacyjnego. Tego typu frameworki najczęściej pisane są w języku C++ dzięki czemu można z nich korzystać w językach dających możliwość uruchamiania skompilowanych bibliotek. W kontekście systemów CMS działających najczęściej w technologii WWW wykorzystywane są frameworki wspomagające dany język skryptowy (PHP, ASP.NET). W dalszej części niniejszego opracowania wykorzystanie tego typu narzędzi zostanie pokazane na przykładzie frameworków ZEND i SFH_FORM_FRAMEWORK. Zastosowanie narzędzi typu framework Twórcy oprogramowania używając narzędzi typu framework są w stanie zająć się logiką biznesową nie programując aplikacji na poziomie instrukcji sterujących, ponieważ logika niskopoziomowa zakodowana jest w predefiniowanych metodach klas wykorzystywanego narzędzia framework. Rozbudowane narzędzia oferują zestaw metod umożliwiających
zakodowanie złożonej logiki. Wybrane elementy składowe (klasy) pakietu ZEND prezentuje tabela 1. Nazwa Zastosowanie Zend_Acl Zarządzanie użytkownikami i rolami Zend_Auth Zarządzanie autoryzacją i schematami uprawnień Zend_Db Zarządzanie operacjami na bazie danych Zend_Debug Zarządzanie sprawdzaniem poprawności działania aplikacji Zend_Date Zarządzanie operacjami na datach Zend_Exception Zarządzanie obsługą błędow Zend_Feed Zarządzanie obsługą RSS Zend_Mail Zarządzanie wysyłką poczty email Zend_Locale Zarządzanie formatowaniem danych w zależności od ustawień regionalnych Zend_Log Zarządzanie logami aplikacji Zend_Pdf Zarządzanie konwersją dokumentu do PDF Zend_Search Zarządzanie wspomaganiem wyszukiwania Zend_Session Zarządzanie zmiennymi sesyjnymi Zend_Version Zarządzanie wersjami aplikacji Tabela 1. Wybrane elementy skladowe pakietu ZEND Dodatkową zaletą wykorzystywania takich narzędzi jest niejako wymuszona optymalizacja kodu, ponieważ aplikację powstające w ten sposób wykorzystują technikę DRY (Don't Repeat Yourself). Dzięki temu radykalnie zmniejsza się ilość kodu (nawet dziesięciokrotnie) w porównaniu z aplikacjami pisanymi w sposób tradycyjny. Doskonałym uzupełnieniem pakietu ZEND wydaje się być SFH_FORM_FRAMEWORK umożliwiający dynamiczne tworzenie formularzy powstających na podstawie struktury bazy danych. Tworzenie formularzy z wykorzystaniem SFH_FORM_FRAMEWORK Pakiet SFH_FORM_FRAMEWORK jest dedykowanym narzędziem typu framework dla języka PHP i bazy danych działającej w oparciu o
motor MySQL. Jest on rozpowszechniany na zasadach komercyjnych przez firmę Soft For Humans, a także stanowi integralną część systemów CMS oferowanych przez tą firmę. Idea działania omawianego pakietu jest podobna do jednej z funkcjonalności programu PHPMyAdmin operacji na rekordach tabel (zob. Rysunek 1). Rysunek 1. Wstawianie rekordu za pomocą programu PHPMyAdmin. Program ten jednak z oczywistych powodów nie pilnuje logiki biznesowej, ani też nie umożliwia wypełnienia więcej, niż jednej tabeli naraz. Kolejnym ograniczeniem jest brak możliwości łączenia tabel biznesowych ze słownikami. Korzystając z tego programu użytkownik zmuszony jest podać klucz obcy tabeli słownikowej bez możliwości podejrzenia jej wartości. Wszystkie te ograniczenia zostały wyeliminowane w klasach zawartych w pakiecie SFH_FORM_FRAMEWORK. Jednak ze względu na
złożoność zagadnienia twórcy pakietu poczynili kilka założeń dotyczących odpowiedniego mapowania pól i schematów postępowania, czyli sytuacji, jakie mogą się zdarzyć w trakcie projektowania formularza. Założenia aplikacji wykorzystującej SFH_FORM_FRAMEWORK W trakcie projektowania narzędzia SFH_FORM_FRAMEWORK twórcy zestawili możliwości bazy danych w kontekście dopuszczalnych typów danych przechowywanych w bazie danych ze znacznikami języka HTML, służącego do wygenerowania formularza. W efekcie otrzymano zestawienie, którego wybrane elementy prezentuje Tabela 2. Typ danych w MySQL Kontrolka HTML Varchar Text Typy liczbowe (int, float, double Text etc.) Text Textarea Typy daty Text + kalendarz zaprogramowane w języku Javascript Blob Edytor typu RTE Enum Radio Tabela 2. Mapowanie pól w SFH_FORM_FRAMEWORK Do połączenia tablicy biznesowej z tablicami słownikowymi używane są kontrolki typu selectbox, natomiast łączenie relacji typu N:M odbywa się poprzez obiekty typu checkbox (w przypadku danych słownikowych), lub z wykorzystaniem zmiennych sesyjnych na zasadzie kreatora. Zależności pomiędzy tabelami podanymi do wyświetlenia przez programistę wykrywane są w sposób automatyczny za pomocą więzów integralności. Dane te zapisane są w tabelach systemowych schematu o nazwie Information_Schema i są dostępne w MySQL wersji 4.1 i wyższych dla silnika InnoDB [MySQ07].
Istnieje także możliwość wskazania pól, które nie są dostępne dla końcowego użytkownika na formularzu, a podlegają modyfikacji w trakcie operacji wstawiania lub modyfikowania rekordu, na przykład pola: data_utworzenia, data_modyfikacji. W efekcie wywołania metody createform zostaje wygenerowany formularz HTML powstały na podstawie parametrów wejściowych (zob. Rysunek 2). Rysunek 2. Formularz wygenerowany za pomocą SFH_FORM_FRAMEWORK Formularze wyświetlane są na podstawie szablonu definiowanego do wyświetlania formularza, co zapewnia dużą elastyczność generowanych formularzy.
Podsumowanie Jak zaznaczono na wstępie niniejszego artykułu, systemy CMS wydają się być rozwiązaniem wysoce funkcjonalnym, jednak ich schematyczność powoduje, iż nie nadają się do wykorzystania problemów niszowych. W takich sytuacjach pomocne okazuje się narzędzia typu framework, które pozwalają skupić się na kodowaniu logiki biznesowej a nie na pisaniu kodu niskopoziomowego. Przedstawiony w części analitycznej SFH_FORM_FRAMEWORK stanowi przykład takiego narzędzia. Innowacyjność nowego typu rozwiązań polega przede wszystkim na zdecydowanie wyższej, niż w przypadku rozwiązań standardowych, elastyczności wynikowego systemu. To z kolei otwiera przed stosującymi te narzędzia szeroki obszar dla tworzenia kreatywnych rozwiązań biznesowych. Literatura [AdOl06] Adamczewski T. Olszak C., Ślęzak K., System zarządzania treścią serwisów stron WWW, [w.] Porębska-Miąc T., Sroka H. (red.), Systemy Wspomagania Organizacji 2006, AE Katowice 2006 [CoMa07] What types of CMS are there?, http://www.contentmanager.eu.com/confusion.htm, odczyt 2007-05-10 [Fram07] Framework vs. CMS, http://www.ister.org/code/article/en/framework.html, odczyt 2007-04-30
[Joom07] Polskie Centrum Joomla!, odczyt 2007-05-15 [Soft07] Soft For Humans, www.softforhumans.com, odczyt 2007-05-01 [Wajd07] Wajda S., Dokumentacja systemu Joomla!, www.joomla.pl, odczyt 2007-05-15 [Wiki07] Wikipedia, wolna encyklopedia, http://pl.wikipedia.org/wiki/framework, odczyt 2007-05- 02 Informacje o autorach Prof. AE dr hab. inż. Celina M. Olszak Mgr Tomasz Adamczewski Katedra Informatyki Ekonomicznej Akademia Ekonomiczna ul. Bogucicka 3 40-226 Katowice Polska Numer telefonu (fax) +48/32 2577610 e-mail: olszak@ae.katowice.pl tadamcz@ ae.katowice.pl