A Zope és a Világ
Az új 2.01-es verzó kapcsán az adatbázisok elérését, XML-RPC és WebDAV kliensek használatát és lehetõségeit tekintjük át.
A 2.0-ás verzió hozta az igazi újdonságokat, a 2.01 csak egy súlyos biztonsági hibajavítást miatt lett kiadva és funkcionalitásban nem tartalmaz semmi újdonságot. Az egyik legfontosabb változás az új Medusa szerverre alapozott ZServer HTTP szerver, ami a korábbi beépített szerverhez képest minõségi ugrást jelent. Az új szerver párhuzamos script futtatási képességével összhangban megújult az integrált objektumadabázis is: képessé tették konkurrens hozzáférések kiszolgálására. Ez a változás a Zope-hoz eddig kifejlesztett adatbázis-kapcsolati modulok áttervezését is igényli, amit bizonyos modulok esetében már elvégeztek, néhány esetben pedig még folyamatban vannak. A másik lényeges változás, hogy a Zope sajátos öröklõdési/kisajátítási (acquisition) mechanizmusát is kiterjesztették.
A Zope megújulásával párhuzamosan a www.zope.org is jelentõs formai és tartalmi változásokon esettt át(www.zope.org). Talán a legjelentõsebb tartalmi módosulás, hogy online közösséget szerveztek, aminek bárki tagja lehet és szabályozott keretek között hozzájárulhat a site tartalmi fejlesztéséhez.
Adatbázisok elérése
Elsõ lépésként egy adatbázis-kapcsolat objektumot kell létrehozni, majd erre lehet az SQL metódusokat ráültetni. Minden adatbázis-szerverhez külön be kell szereznünk egy adaptert, ami a kapcsolat létrehozásáért felel és egy szabványos interface-t biztosít az SQL metódusok felé. A Zope-al együtt csak a Gadfly-hoz kapunk adaptert, de – a teljesség igénye nélkül- ODBC, Oracle, MySQL és PostgreSQL kapcsolat létrehozására is van lehetõség.
Mi a Gadfly-t használjuk a következõ példákban, mert ez minden olvasó gépén elérhetõ aki telepítette a Zope-ot. A Gadfly egy Python-ban írt demonstrációs célzatú ingyenes adatbázis megvalósítás. Mivel mindent memóriában tárol, ezért komolyabb méretû adatbázisok létrehozására nem alkalmas.
A következõ lépések egy része táblák létrehozásával és feltöltésével foglakozik. Éles környezetben e feladatok egy részét valószínûleg nem Zope-ból, hanem az adatbázis-szerver saját eszközeivel vagy más kliens programmal végezzük el. Mindenesetre a lehetõség a Zope-ban is megvan.
Csináljunk egy test nevû mappát és adjunk hozzá egy “Z Gadfly Database Connection” elemet gdbc Id-vel és a felkínált Title és Connection string(demo) paraméterekkel! Elõször olyan SQL metódust csinálunk, ami létrehoz két táblát, mert új adatbázisunkban nincs egy darab tábla sem. Adjunk hozzá a test mappához egy "Z SQL Method" elemet ctable Id-vel és a Query template mezõben helyezzük el a következõ utasításokat:
CREATE TABLE SZERZOK(KULCS INTEGER, SZERZO VARCHAR(20), LAKCIM VARCHAR(50), TELEFON VARCHAR(20));CREATE TABLE MUVEK (KULCS INTEGER, SZERZO_KULCS INTEGER, CIM VARCHAR(50))Nyomjuk meg az “Add and Test” majd a “Submit Query” gombot. Ha most átmegyünk a gdbc elemre és kiválsztjuk a browse fület a jobb oldalon, akkor ott meg kell jelennie a két táblának, ahogy az alábbi képen képen látszik:
Készítsünk egy második “Z SQL Method” elemet idatas Id-vel és a Query template mezõben heleyezzük el a következõket:
INSERT INTO SZERZOK VALUES(1,'SEKTER PÁDI','BUDAKALÁSZ','06209650218');
INSERT INTO SZERZOK VALUES(2,'SZABSZI', 'BUDAKALASZ','06269640512');
INSERT INTO MUVEK VALUES(1,1,'EGY BOLHA ÉLETE');
INSERT INTO MUVEK VALUES(2,1,'HÁROM TEHÉN');
INSERT INTO MUVEK VALUES(3,1,'A FARKAS');
INSERT INTO MUVEK VALUES(1,2,'EGY BOLHA ÉLETE');
INSERT INTO MUVEK VALUES(2,2,'ESZTERLÁNC')Ezzel néhány adatot is elhelyeztünk a táblákban.
Most jutottunk el odáig, hogy készíthetünk egy lekérdezést a korábban létrehozott táblákra alapozva. Ismét “Z SQL Method” elemet adunk hozzá, az Id legyen qdatas és a Query template mezõ tartalma pedig legyen a következõ SELECT utasítás:
SELECT * FROM MUVEK
Az új elemet a jobb oldal test fülén ki is próbálhatjuk. Ellentétben a korábbi SQL metódusokkal most egy olyan lapot kapunk a végrehajtás eredményeként, amelyen egy táblázatban kapjuk a lekérdezés eredményét valamit a táblázat alatt a végrehajtott SELECT utasítás is megjelenik.
Következõ lekérdezésünk legyen paraméteres! Az új “Z SQL Method” elem Id értéke legyen qdatas2 és a Query template mezõ tartalma pedig a következõ:
SELECT SZERZOK.SZERZO, MUVEK.CIM FROM SZERZOK, MUVEK WHERE SZERZOK.KULCS=MUVEK.SZERZO_KULCS AND MUVEK.CIM='<dtml-var parCIM>' ORDER BY SZERZOK.SZERZOMint a listán is lászik van egy parCIM nevû argumentumunk, amit be kell írni az Arguments rovatba. A qdatas2 végrehajtásának egy lehetséges eredménye:
Végül csináljunk egy trükkös - bár jelen esetben nem sok értelemmel bíró - lekérdezést. Legyen az Id qdatas3, a Query template-be a következõ tartalom kerüljön:
SELECT * from <dtml-var parTable>
Az Arguments mezõbe pedig parTable-t írjunk be! Ez a lekérdezés ha paraméter értéke SZERZOK, akkor a SZERZOK tábla tartalmát listázza ki, ha MUVEK akkor a MUVEk tábla rekordjait egyébként pedig hibaüzenetet generál.
Bizonyosan sokakban felmerült a kérdés: szép-szép, de hogyan tudom beépíteni az SQL metódusok eredményét saját html lapjaimba? Szerencsénkre a Zope “Z Search Interface” eleme segít összeállítani a kinduló dokumentumokat, melyek tartalmazzák az alapvetõ lekérdezési és megjelenítési funkciókat. A továbbiakban már ezeket a dokumentumokat kézzel kell egyéni ízlésünk szerint átalakitani. Természetesen, ha a generált forma és funkcionalitás megfelelõ, akkor nincs velük további tennivalónk. Akkor vágjunk bele és adjunk hozzá egy “Z Search Interface” elemt a következõ beállításokkal:
- A Report Id, Title és Style mezõk kitöltésével a generálandó riport lap alapvetõ adatait és megjelenési formáját határozzuk meg.
- A Search Input Id és Title mezõk pedig a lekérdezõ fromra vonatkoznak. A program megvizsgálja, hogy a “searchable objects” listában kiválasztott elemeknek milyen paraméterei vannak és azokat fogja a Search Input lapra generálni.
Ha elõálltak a megfelelõ DTML metódusok, akkor browser-ünket irányítsuk rá a generált Search Input lapra! A paraméterek kitöltése és a Submit Query gomb megnyomása után a Report lap jelenik meg a lekérdezés eredményével. A két generált DTML metódus tanulmányozását mindenkinek figyelmébe ajánlom!
WebDAV
A WebDAV a “Web-based Distributed Authoring and Versioning” rövidítése és a HTTP protokol olyan kiterjesztése, ami lehetõvé teszi több felhasználó együttmûködését a web szervereken tárolt fájlok szerkesztése és kezelése során. Igy az eddig egyoldalú kérek-kapok kapcsolat a kliens és a szerver között új funkcionalitásokkal bõvül. Bár a specifikáció még nem végleges, a www.webdav.org site-on tekintélyes mennyiségû a WebDAV-ot támogató szoftvert találunk. Nekem talán csak a Netscape hiányzott a listáról. Sajna az illetékesek nyilatkozatai alapján nem valószínû, hogy a közeljövõben a Netscape-ben megjelenik a WebDAV támogatás.
Mi a Zope-Internet Explorer 5 párost teszteltük. A Microsoft terminológiában a “Web Folder” a varázsszó, azaz menübõl open-t választva a megjelenõ ablakban be kell x-elni az “Open as Web Folder”-t. Zope-unk bármelyik mappáját megnyithatjuk így és ezt követõen például drag&drop-al nagyobb mennyiségû adatot lehet átvontatni a Zope site-ra. Sõt a Zope site-on lévõ a rendszer által beregisztrált dokumentumainkat dupla kattintással megnyithatjuk, de visszamenteni csak abban az esetben tudjuk, ha az adott alkalmazás támogatja a WebDAV-ot. Az Office 2000 a leírások szerint közelebbi ismeretséget kötött ezzel a technológiával, tehát valószínûleg tud menteni. Nekünk nem volt lehetõségünk ezt kipróbálni, így ennek tesztelése az olvasóra marad.
Az Internet Explorer másik szolgáltatása az automatikus szinkronizáció: hálózati csatlakozás hiányában is elérhetjük a WebDAV szerveren tárolt dokumentumok másolatait és a másolatok a hálózati kapcsolat létrejöttekor automatikusan frissülnek. Felhívjuk az olvasók figyelmét, hogy a megnyitott Web Folderek a késõbbiekben az Explorer fastruktúrájában is megjelenek és azon keresztül is elérhetõ a tartalmuk. A Microsoft implementációjának egyik problematikus része a kisbetû-nagybetû kezelése, mivel Zope alatt ennek jelentõsége van szemben a windows világgal, ahol meg nincs.
XML-RPC
Különbözõ rendszerek közötti szabványos eljáráshívás specifikációja, ahol az adatok szállítója a HTTP kódolója pedig az XML. A tervezés során szempont volt a lehetõ legegyszerûbb megvalósítás, ami ugyanakkor képes összetett adatszerkezet mozgatására és feldolgozására is. Alkalmazásával olyan elosztott rendszereket készíthetünk, melyek számára a hálózat teljesen transzparens módon viselkedik. Segítségével például Zope alkalmazás szerverek olyan hálózatát hozhatjuk létre, ahol a feladatok végrehajtása elosztható az egyes gépek között.
Érdekesség: cikkekben olvastam olyan utalásokat, hogy a Microsoft a jövõben operációs rendszereinek egyes funkcióit elérhetõvé teszi XML-RPC felületen keresztül is.
A Zope-ba integrált XML-RPC kipróbálásához be kell szereznünk valamilyen kliens programot, vagy használhatjuk a Zope-al együtt kapott Python implementációt is. Mi az utóbbi megoldást választva a 6. listában szereplõ példában a gyökér két elemét kérdezzük le XML-RPC-n keresztül.
A Zope nyitottságát és sokrétû kapcsolódását más rendszerekhez kívántuk bemutatni ebben a cikkben. Természetesen itt csak a legfontosabbakra tértünk ki. A zope.org-on és a levelezési listákban további érdekes és hasznos kiegészítésekre bukkanhatunk, melyek száma napról-napra folyamatosan bõvül. Bárki, aki látogatást tesz az elõbbi helyeken sok-sok segítségre és baráti hangnemre számithat.
Kiss Árpád (sekter@matavnet.hu)