Seriál Caché Studio
díl 5
© Daniel Kutáč, InterSystems CZ, 2002

Úvodem
Seriál Caché Studio nabízí
postupný výklad práce se systémem Caché vč. praktických příkladů. 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é - 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. Ke každému dílu jsou
připraveny zdrojové kódy, které vhodně ilustrují příklady z textu.
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í: dokumenty v sekci webových stránek Technologie Caché, tištěné
materiály nebo jednodenní trénink Caché Entrée, který firma pořádá každý
měsíc: http://www.intersystems.cz/.
Vždy můžete své informace
doplnit na amerických stránkách http://www.intersystems.com/ nebo
nás přímo kontaktovat info@intersystems.cz.
Věříme, že se budete ke Caché
Studiu se zájmem vracet.
Úvod do technologie Caché Server Pages
Každý systém pro tvorbu aplikací,
ať je sebelepší, není dnes dobře prodejný, pokud neobsahuje technologie
pro psaní webového rozhraní aplikací. Caché tento obchodní předpoklad
splňuje, jelikož obsahuje mocnou technologii pro psaní dynamických webových
aplikací.
Caché, jakožto serverově
orientovaný systém, neobsahuje grafické prostředí pro tvorbu dokonalých
webových stránek. (tuto funkci necháváme jiným), ale obsahuje veškeré
nástroje pro tvorbu serverové strany aplikační logiky webových stránek.
Technologie, která výše uvedené
nástrojeumožňuje, se nazývá Caché Server Pages, zkráceně CSP.
Jak to vlastně funguje
Caché Server Pages je založena
na podobném principu jako ASP.NET nebo JSP. Jedná se o technologii pro
tvorbu skriptů vykonávaných na aplikačním serveru. Podobně jako výše uvedené
ASP.NET nebo JSP je stránka při prvním dotazu vůbec zkompilována do jazyka
příslušné databázové platformy, v našem případě do Caché ObjectScriptu.
Při dalších dotazech se již volá zkompilovaný a tedy rychlý kód.
Graficky tento proces znázorňuje
následující obrázek.
Obr. 1

Důležitou komponentou v uvedeném schématu je CSP brána. Je to vlastně
komponenta, jenž je zodpovědná za přesměrování dotazu z web serveru na
aplikační server Caché a naopak při zpáteční cestě. CSP brána existuje
buď jako ISAPI/NSAPI/CGI rozhraní, nebo v případě serveru Apache, též
jako modul který je možno zkompilovat do jádra Apache serveru. Všechny
servery podporující některé z těchto rozhraní tedy zároveň podporují Caché
Server Pages.
CSP stránky
CSP stránky jsou v podstatě
klasické webové stránky, rozšířené o sadu speciálních značek a skripty
s vykonáváním kódu na straně serveru.
Pro psaní CSP stránek je
možno použít nástroj Caché Studio, s nímž jsme měli možnost se již v minulých
dílech našeho seriálu alespoň povrchně se seznámit.
Pro vytvoření nové CSP stránky
stačí ve studiu otevřít v menu položku File->New a v zobrazené nabídce
vybrat "Cache Server Pages". Poté se vygeneruje jednoduchá kostra webové
stránky. Nyní je již jen na programátorovi, jak s novou stránkou naloží.
CSP třídy
Existuje ještě jeden způsob
vytváření webových stránek, a to prostřednictvím definování tříd odvozených
od třídy %CSP.Page.
Tento způsob tvorby stránek
poskytuje vývojáři větší volnost při psaní metod stránky. Tato volnost
je ale vykoupena nutností psát kód ručně.
Ostatně i stránky vytvořené
editováním CSP souborů se převádějí při kompilaci do tříd odvozených od
%CSP.Page.
CSP značky
Základem pro tvorby dynamických
CSP stánek je sada předdefinovaných značek (tagů). Tyto značky jsou definovány
pomocí XML a při práci s nimi se chovají jako jakékoliv jiné HTML značky.
Mají název, volitelné atributy.
Caché CSP značky lze rozdělit
do několika skupin podle účelu.
Základní značky
Základními značkami jsou
takové, které propojují HTML stránku s aplikačním (potažmo databázovým)
serverem. Příkladem základních značek jsou např. <csp:object>, <csp:class>. K základním
značkám lze též řadit atribut CSPBIND.
Značka <csp:object> má atribut classname,
který říká, jaká třída je svázána s daným formulářem na stránce, dále
atribut name, který je názvem reference (OREF) na instanci dané třídy
a nakonec atribut objid, který udává způsob získání ID zobrazené instance
třídy.
V případě použití značky
<csp:object> je nutno
použít na stránce formulář <form> a přiřadit mu atribut
cspbind s hodnotou rovnou atributu name značky <csp:object>.
Řídící značky
Řídícími značkami je množina
značek řídích běh programu, zde CSP stránky. Mezi tyto značky patří např.:
<csp:if>, <csp:while>,
<csp:loop>.
Ostatní značky
K ostatním značkám patří
například značky pro vykovávání dotazů do databáze, příkladem takové značky
může být například <csp:query>.
Vlastní značky - pravidla
Pro vývoj komplexních aplikací
zpravidla vývojářům sada předdefinovaných značek nedostačuje a vyvstává
potřeba mít možnost si vytvářet značky vlastní, ať už pro jednodušší práci
s grafickým designem aplikace nebo pro tvorbu vlastní aplikační logiky.
Caché poskytuje možnost definovat
vlastní CSP značky, tzv. pravidla. Základem definice značek je sada XML
značek. Definice CSP pravidla sestává z několika bloků. V prvním se definuje
název pravidla a jeho popis a tvar značky. Následuje úsek deklarace atributů
a dále úsek definující akce, které se mají provést při kompilaci vlastního
pravidla a též uživatelské stránky obsahující dané pravidlo.
Následující obrázek ukazuje
jednoduché pravidlo pro zobrazení zprávy s informací o copyrightu.
Obr. 2

Skriptování
K dynamickému generování
obsahu stránky před jejím zobrazením v prohlížeči je možno použít klasický
kontejner <script>. Například takovýto skript vnořený do těla stránky
zobrazí aktuální datum serveru:

Výrazy Caché ObjectScriptu
V libovolném místě CSP stránky
je možno vyhodnotit jakýkoliv platný výraz Caché ObjectScriptu pomocí
konstrukce #(Výraz Caché ObjectScriptu)#.
Například úsek kódu z předchozí
kapitoly by vypadal takto:

Události
Správná dynamická webová
aplikace musí být schopna reagovat na různé uživatelem vyvolané události.
Programátoři mohou směrovat dynamicky volané události (hyper events) do
Caché pomocí syntaktické konstrukce #server()#
Tuto konstrukci je možno
použít nejen z HTML kódu, ale též v rámci kódu Javaskriptu.
Např.:

Předávaným parametrem je
v tomto případě název Caché třídy a metody, spolu se seznamem parametrů
metody.
Metody mohou být definovány
mimo danou CSP stránku v např. registrovaných Caché třídách, ale též mohou
být součástí CSP stránky samotné.

Takto deklarovaná metoda
se přeloží spolu s CSP stránkou do příslušné třídy a stane se její metodu.
Z metod Caché CSP stránek
je možno volat zpět do javascriptu a vnořovat úseky javascriptu do Caché
ObjectScriptu. Tím se zajistí například dynamické změny obsahu textových
polí aj.
Obr. 3

Správa stavu aplikace
Při psaní rozsáhlých aplikací
sestávajících se z mnoha mezi sebou komunikujících stránek je nutno vyřešit
problém předávání dat mezi těmito stránkami. Na rozdíl od programování
v klasickém prostředí klient/server je totiž prostředí inter/intranetu
bezestavové. Neumožňuje tedy automaticky udržovat informaci o původci
s stavu spojení mezi klientem na straně prohlížeče a serverem.
Tato situace se řeší pomocí
různých cookies a tokenů předávaných spolu s posílanými stránkami. Zajistit,
aby komunikace mezi prohlížečem a serverem byla ochráněna před nežádoucími
útoky, je cílem všech tvůrců aplikací provozovaných na webu.
Caché server pages podporují
automatické generování tokenů a případně cookies pro předávání informací
o stavu připojení a aplikace.
Pro předávání dat mezi stránkami
mohou programátoři používat objekty DOM. Caché implementuje Session, Request
a Response pomocí tříd %CSP.Session, %CSP.Request a %CSP.Response.
Tvůrci aplikací zpravidla
pracují s prvními dvěma třídami, na ně se v CSP aplikacích odkazují pomocí
referencí %session a %request.
Obě třídy mají mj. vícerozměrnou
vlastnost Data, která slouží k nastavování hodnot aplikačních proměnných
a k jejich čtení.
Následující kód demonstruje použití uvedených objektů.
Obr. 4 - dotaz

Obr. 4 - odpověď

Samozřejmostí je možnost
kódování dotazů pomocí označení stránky jako kódované a též jejího znepřístupnění
mimo CSP aplikaci nastavením stránky jako privátní.
Formuláře
Caché nabízí velice účinného
pomocníka při návrhu CSP stránek propojených s persistentními třídami.
Jedná se o průvodce návrhu formulářem, který je k dispozici v menu Insert->Form
Wizard.
Jeho použití je velice jednoduché,
stačí jen vytvořit novou CSP stránku, označit text v kontejneru <body>
a spustit průvodce. Průvodce sám pozná referenční a výběrové atributy
a přizpůsobí jim obsah formuláře. Stejně tak pozná obrázky a sestaví kód
pro načítání jejich obsahu z databáze. V projektu, který je elektronickou
přílohou tohoto dílu, je zahrnuta stránka osoba.csp, která demonstruje
výsledek použití průvodce.
Šablony
Šablony představují další
úroveň ulehčení vývoje CSP1
aplikací. Jedná se vlastně o nadstavbu nad CSP pravidly. Jejich cílem
je jednak ulehčit programátorovi v tom smyslu, že si nemusí pamatovat
přesný tvar značek a jejich atributy, jednak dovolují (u komplexních
pravidel) zautomatizovat tvorbu předdefinovaných celých CSP stránek.
Šablony jsou dvojího druhu;
neinteraktivní a interaktivní, obojí jsou přístupná z menu Tools->Templates
Neinteraktivní šablony sestávají
z jedné CSP stránky a jsou uvozeny značkou <csp:StudioSimpleTemplate> následovanou
na dalších řádkách kódem, který se vykoná při vložení šablony do stránky
Obr. 5

Tato šablona vloží do označeného
místa CSP stránky aktuální datum.
Interaktivní šablony jsou
složitější, sestávají ze dvou CSP stránek. První z nich je uvozena značkou
<csp:StudioInteraktiveTemplate>
a obsahuje formulář se všemi požadovanými vstupními údaji. Tyto vstupní
údaje jsou pak zpracovány druhou CSP stránkou tvořící definici šablony.
Tato stránka je uvozena značkou <csp:StudioGenerateTemplate>
a obsahuje aplikační logiku šablony.
Šablony je dokonce možno
vložit do seznamu položek projektu volaných z menu File->New,
a to přidáním klíčového slova new na konec uvozující csp značky šablony.
WAP & XML a jiné
CSP technologie umožňuje
nejen psát klasické webové stránky a aplikace, podporuje též ostatní standardy
používané v internetové a mobilní komunikaci. Těmi hlavními jsou WAP a
XML.
Rozdíl proti psaní klasických
(D)HTML stránek v CSP a uvedenými spočívá pro vývojáře pouze v tom, že
soubor tvoří pomocí WML značek (pro WAP) nebo libovolných (ale samozřejmě
předem dohodnutých) XML značek.
Pro správnou interpretaci
výsledného kódu musí ještě uvést příslušný MIME typ stránky, například
pomocí značky <csp:content
type="text/xml">. (zde pro XML výstup)
Jak vidíte, je to jednoduché.
Příště se budeme věnovat popisu propojení Caché s technologiemi COM a
.NET.
1 Z minulých
dílů víme, že šablony lze použít i pro tvorbu tříd a rutin.
|