Seriál Caché Studio vám v příštích měsících bude nabízet
postupný výklad práce se systémem Caché vč. praktických příkladů. Jednotlivé
díly zde budou přibývat podle toho, jak budou vycházet.
V ucelených tématech jednotlivých dílů se jejich autor -
ing.
Daniel Kutáč, sales engineer InterSystems B.V. - věnuje možnostem
univerzálního aplikačního a databázového serveru Caché vč. posledních novinek.
Objasňuje, v čem jsou hlavní výhody Caché - jako je např. rychlost
a mohutnost databázového stroje, rychlost vývoje, rozšiřitelnost aplikací,
snadná kooperace s různými technologiemi a pružná reakce na poslední
technologické trendy.
Seriál Caché Studio je vhodným doplňkem k ostatním studijním
nástrojům, které společnost InterSystems B.V. nabízí, např. dokumenty v sekci
webových stránek
Technologie Caché
nebo jednodenní trénink Caché
Entrée, který firma pořádá každý měsíc. Vždy můžete své informace doplnit
na amerických stránkách www.intersystems.com
nebo nás přímo kontaktovat zde.
Představujeme vám první 3 díly včetně zdrojových kódů. Pro
praktické příklady budete potřebovat download verze Caché 5,
Beta 3. Pod ikonami jsou ke každému dílu připraveny zdrojové kódy, které
vhodně ilustrují příklady z textu.
Věříme, že se budete ke Caché Studiu se zájmem vracet.
Caché Studio 3
Chcete rock´n´roll? Tak se ptá jedna z televizních reklam
na cosi, ani nevím co. No, rock´n´roll vám sice nenabídnu, ale i s XML si pěkně
zařádíte.
V předchozích dílech našeho seriálu jsme se dozvěděli
o objektech a SQL v Caché. Nyní si povíme o další z projekcí dat
podporovaných databází Caché, a to o XML.
Ne, nebojte se, nebudu do vás nudit sáhodlouhými fakty,
jen připomenu pár základních. XML (EXtended
Markup Language) je jedním z jazyků celé rodiny založené na specifikaci
SGML.. Z této specifikace pochází mj. jazyk HTML pro tvorbu webových stránek.
HTML je však víceméně jazyk statický a nepopisuje ani tak data, jako jejich
grafickou prezentaci na stránce webového prohlížeče. Postupným vývojem, přidáváním
různých nestandardizovaných značek jednotlivých tvůrců webových prohlížečů
a dynamického modelu stránky došlo k tomu, že HTML se stal poměrně
komplikovaným a nepřehledným. Navíc stále neřeší strukturální popis dat
putujících mezi klientem a serverem.
To byly hlavní důvody pro vznik samostatného jazyka
(respektive množiny jazyků) založených na SGML, ale pojatých jednodušeji a
zaměřených na strukturální popis přenášených dat.
XML se od jiných jazyků v jednom aspektu značně liší.
Nikde totiž není definována množina klíčových slov jazyka, je čistě na tvůrci
aplikace/dokumentů, jaká slova použije k popisu dat. Existuje pouze definice
pravidel, která musí být splněna tvůrcem XML dokumentů, aby takový dokument byl
platným XML dokumentem. Patronát nad pravidly definujícími XML (a jiné
jazyky používané v prostředí Internetu) má organizace Worlwide Web Consortium
(W3C), což je sdružení firem a uživatelů, které se snaží o normalizaci na
Internetu.
Chcete-li vytvořit aplikace která si bude vyměňovat data s
okolím pomocí XML musíte mít výše uvedené požadavky na paměti. XML dokument
nesmí být jen změtí XML značek. K tomu, aby se jednalo o dobře formovaný
XML dokument, musí mít určitou hierarchii XML značek. Musí začínat xml
hlavičkou, musí mít jednu xml značku zapouzdřující celý dokument za hlavičkou.
Tato značka se musí v dokumentu vyskytovat právě jednou, všechny ostatní značky
se musí nacházet o úroveň níže a mohou se libovolně opakovat. Nebudu vás
zatěžovat teorií, na téma XML byla napsána kvanta samostatných článků a knih.
Jenom stručně:
K dobře formovanému XML dokumentu existuje další dokument,
který popisuje význam jednotlivých značek, aby jim cílová aplikace mohla
rozumět a správně je interpretovat. Tento dokument se jmenuje DTD (Document
Type Description) a má jednu nectnost - jazyk DTD sám totiž nedodržuje pravidla
XML. V poslední době je proto tento dokument nahrazován jiným XML schématem.
XML schéma opět, stejně jako DTD, popisuje XML značky použité v XML dokumentu,
ale používá důsledně XML sám o sobě.
K tomu, abyste vytvořili XML projekci libovolné
datové třídy, stačí málo. Celé kouzlo spočívá v přidání třídy %XML.Adaptor do seznamu nadtříd, od nichž je vaše
třída odvozena.
Tedy k tomu, aby z naší třídy Osoba byla třída ovládající XML, je nutno k třídě %Library.Persistent přidat třídu %XML.Adaptor a vše je hotovo.
Obr. 1
Pozn.: Protože Osoba
obsahuje vnořenou třídu Adresa, musíme i této
třídě přidat %XML.Adaptor do seznamu nadtříd.
Nyní můžeme, podobně jako u SQL projekce, upravovat
přednastavené chování XML projekce pomocí parametrů vlastností. Každá vlastnost
může být vystavena v XML dokumentu pod libovolným jménem odlišným od názvu
vlastnosti. Dále může být vystavena buď jako samostatná xml značka, nebo jako
atribut xml značky označující celý objekt. Následující obrázek ukazuje několik
vlastností s různým způsobem projekce. Opět máme volbu, zda projekci popíšeme
slovně, či použijeme okno Inspektora a zadáme příslušný parametr zde.
Obr .2.
Vidíte, že je možno též danou vlastnost z XML projekce
vyloučit.
Dobře, už umíme definovat projekci třídy do XML dokumentu.
Jak ale data do XML dokumentu dostaneme? Lehce, není to nic složitého. Třída %XML.Adaptor, a tudíž i každá třída od ní
odvozená, má k dispozici mj. metodu XMLExport,
která automaticky vystaví data dané instance (odborně řečeno provede
serializaci), jak ukazuje následující obrázek:
Obr. 3
Obrázek ukazuje nejjednodušší způsob vyvolání metody XMLExport, a to pomocí Caché konzoly. Metoda XMLExport má několik nepovinných vstupních parametrů,
jimiž lze modifikovat vrácený výstup. Tato metoda zapisuje do aktuálně
otevřeného zařízení.
Podobně jako lze data vystavit do XML dokumentu pomocí
metody XMLExport, je lze načíst z XML dokumentu
do databáze (provést deserializaci) pomocí metody XMLImport.
Pro vygenerování DTD nebo XML schématu lze použít metody XMLDTD nebo XMLSchema.
Pro práci s mnoha instancemi objektů pomocí XML rozhraní
můžeme s výhodou využít XML Resultsetu, což je analogie SQL Resultsetu. Jak již
sám název napovídá, XML Resultset vrací záznamy ve formě XML. V Caché se třída
poskytující XML Resultset jmenuje %XML.DataSet.
Příklad jejího použití je na následujících obrázcích:
Obr. 4 (zdrojový kód)
Obr. 5 (výsledek)
XML projekce je použita díky svým vlastnostem
i v samotném vývojářském studiu Caché od verze 5. XML je základem pro
export a import jak celých projektů, tak jejich jednotlivých částí. XML je
implementována pomocí knihoven SAX parseru a je k dispozici na všech
platformách, které SAX podporují.
XML je také základem online dokumentace k verzi 5.
Dokumentace vychází z normy DOCBOOK.
Webové služby jsou novou, prudce se rozvíjející kategorií
softwarových komponent. Jejich primární funkcí je zprostředkovávat komunikaci
mezi různými aplikacemi. Lze v nich hledat analogii k technologiím typu COM
(spíše DCOM), ovšem založenou na protokolu HTTP. Jedním z možných způsobů, jak
se webových služeb dotazovat a zpět od nich získávat výsledky, je použití XML.
Ovšem aby bylo možno pracovat s veřejnými službami, bylo nutno nejdříve
vyvinout vhodný protokol pro zadávání dotazů a přenos výsledků zpět ke
klientovi. Samotné XML nestačí, s tím lze operovat maximálně v uzavřených vnitrofiremních
prostředích, kde může být naopak žádoucí, aby protokol byl nesrozumitelný pro
vnější svět.
Proto vznikl protokol SOAP, jež se stal jednotícím
protokolem pro přístup k webovým službám. Kromě tohoto protokolu ovšem existují
i jiné protokoly, jež jsou specifické pro ten který druh činnosti (např. HIPAA,
…..)
SOAP není mýdlo, jak by mohl název napovídat, ale zkratka Simple Object Access Protocol. Ovšem i tato zkratka je
zavádějící. SOAP protokol sice jednoduše vypadá, ale jakmile se pokusíte pomocí
SOAP napsat jakoukoliv aplikaci, zjistíte, že se zdaleka nejedná o jednoduchou
záležitost.
K vytvoření webové služby nabízí Caché interaktivní
šablonu, která provádí programátora jednotlivými kroky. K vytvoření nové web
service je nutno v položce File
vybrat New->WebService.
Po zadání názvů balíčku, služby a jednotlivých metod se
automaticky vytvoří kostra webové služby. Těla metod musíte samozřejmě napsat
sami.
Obr 6.
Obrázek ukazuje šablonu pro definici webové služby v
Caché. (Jen na okraj, tato šablona je vytvořena pomocí technologie Caché Server
Pages, které bude věnován některý z příštích dílů seriálu).
Po napsání těl metod můžeme naši službu otestovat. K tomu
slouží vestavěný web services server.
Při kompilaci hotové webové služby Caché automaticky
vytvoří kořen služby (třídy obsahující popis služby) a pro každou metodu služby
založí novou třídu s implementací těla metody.
Námi vytvořená webová služba nabízí 3 metody. Metoda Info vrací obsah instance třídy Osoba na základě zadaného ID. Metoda Vytvor vytváří novou instanci osoby na základě
několika vstupních parametrů (vlastností třídy) a konečně metoda Pocet vrací počet existujících instancí osob.
Chceme-li si prověřit funkci jednotlivých metod služby,
stačí jen ve studiu vybrat z menu položku View->Web
Page a otevře se nám jednoduchý klient s rozhraním a s návodem
k použití.
Obr. 7
Vyvoláme např. metodu Vytvor,
její stránka bude vypadat takto:
Obr. 8
Vyplněním jednotlivých položek formuláře a stiskem
tlačítka Invoke se provede metoda
služby a služba nám vrátí buď status OK (1), nebo chybové hlášení pokud
například zadáme datum ve špatném tvaru, obojí ve formátu SOAP.
K tomu, abyste mohli libovolnou webovou službu
zavolat ve své aplikaci, musíte znát její rozhraní. To je popsáno pomocí jazyka
WSDL (Web Service Definition Language), který ve formě SOAP
protokolu popisuje všechny parametry a vstupy a výstupy dané služby. Jednotlivé
nástroje pro tvorbu SOAP klientů umožňují v různém stupni dokonalosti samy
načíst WSDL soubor dané služby a poskytují pak komfortní prostředí na vysoké
úrovni (např. MS SOAP Toolkit) nebo si musíte strukturu služby přečíst ze
souboru WSDL sami.
Caché automaticky WSDL generuje a můžete si jej
prohlédnout například kliknutím na odkaz vpravo nahoře na hlavní stránce webové
služby (viz. obr. 7)
Závěrem si ukážeme volání webové služby a metody Pocet pomocí
Javy.
V obou případech je důležité zadat správnou cestu ke
službě, která zde není statickou URL, ale volá se jako třída Caché s příponou
.cls.
Obr. 9
Obrázek znázorňuje část IDE JBuilderu s fragmentem
kódu a výstupem na konzole.
Výsledek dotazu je následující: (zachycen pomocí nástroje
Trace z MS SOAP Toolkitu)
Obr. 10
Příště se budeme věnovat Caché ObjectScript a též se lehce
dotkneme Caché Basicu.
Poznámka: zdrojové kódy příkladů obsahují také volání metody Pocet služby pomocí MS SOAP Toolkitu ve Visual Basicu.