Seriál Caché Studio

"Krok za krokem k dokonalosti."

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

XML

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.

Trocha historie nikoho nezabije

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.

 

Práce s “čistým” XML

 

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

 

Definice XML projekce třídy

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.

Vystavení dat v XML

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.

XML Resultset

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)

Použití XML v Caché 5

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.

Web Services

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

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.

Vytvoření Web Service

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.

Caché jako Web Services Server

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.

WSDL

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.