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.SZERZO

Mint 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:

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)