Pokročilé techniky tvorby sestav v Caché ZENové Reporty
Úvodem Jednoduché sestavy Pokročilé sestavy Ladění
Historie ZEN reporty sdílejí podobný princip definování obsahu jako ZENové stránky Byly uvedeny v první, funkčně poměrně jednoduché verzi spolu s technologií ZEN Ale žijí svým vlastním životem! Tedy nejsou na ostatních prvcích ZEN frameworku závislé Pokud se ovšem nepustíte do sestav s grafy
Technologický přehled Základem sestavy je třída %ZEN.Report.reportPage Ve Studiu je k dispozici šablona Class ClassName Extends %ZEN.Report.reportPage { } XData ReportDefinition {} XData ReportDisplay {}
Jak sestava vzniká Vývojář nadefinuje obsah třídy sestavy Implementuje část obsahovou A část stylovou V okamžiku spuštění sestavy se provede transformace vstupních dat pomocí stylů Někdy se navíc provede další transformace externím nástrojem Výsledek se zobrazí v některém ze zvolených formátů
Data Podkladová data sestavy Snažíme se data uspořádat do XML stromu tak, aby bylo jasné, co k čemu patří, co se podle čeho bude slučovat atd
Úvodem Jednoduché sestavy Pokročilé sestavy Ladění
Report Definition kontejner Popisuje způsob formátování dat (zpravidla resultset) do XML
XML Značky definice sestavy report definuje zdroj dat, reprezentujue kořen XML sql, queryname,queryclass,oncreateresultset Musí obsahovat alespoň jeden prvek group group definuje logickou strukturu reportu (data, která tvoří záznam nebo samostatný dotaz) Sql, breakon. Společné značky pro report i group Element, attribute, aggregate parameter
Vnořené značky Group může se vnořovat, každá skupina pak prezentuje data, která jsou součástí vyššího celku V praxi lze vnoření provést dvěma způsoby: Definovat jeden dotaz na vyšší úrovni, a data na nižší úrovni rozebírat pro každou hodnotu daného sloupce Nebo definovat na každé úrovni vnoření skupinu samostatný dotaz!skupina přistupuje k datům dotazu v nadřízené skupině!
ReportDisplay kontejner Popisuje způsob zobrazení dat
XML značky definice zobrazení report kořenový kontejner dokumentu, jeho atribut name musí mít stejnou hodnotu jako atribut name u prvku report v sekci ReportDefinition document definuje základní charakteristiky vzhledu velikost stránky pro tisk do PDF body tělo stránky, obsahuje elementy pageheader volitelné záhlaví group skupina dat XML zdroje, může se vnořovat pagefooter volitelné zápatí
sekce Group definuje logickou sekci stránky, atribut name ukazuje hodnotou na element group v XML datech se stejným názvem Obsahuje značky formátující výstup, mix HTML a XML p, hr, header, table, footer
tabulky Table obsahuje formátovanou tabulku Orient definuje orientaci tabulky na sloupcový tisk či řádkový Item definuje obsah buňky
Práce se styly Styly jsou definovány pomocí CSS Se styly je možno pracovat vícerým způsobem Výchozí styly Vnořené značky u jednotlivých prvků Např. htmlstyle, selectstylecond, selectstylelist, style, atd... Definováním <class> a <att> v elementu <document> Externí CSS dokumenty <cssinclude> v elementu <document>
Úvodem Jednoduché sestavy Pokročilé sestavy Ladění
Co dělat, když nám nestačí výchozí schopnosti XSL transformace?
DATASOURCE parametr Určuje původ zdroje XML dat (externí soubor) POZN: mnohé parametry lze zadat i v URL za běhu sestavy, ve tvaru $[názevparametru] DATASOURCE vs $DATASOURCE!DEFAULTMODE vs $MODE
Atribut OrderBy Umožňuje za běhu měnit třídění záznamů v sestavě, aniž by bylo nutno modifikovat definici sestavy Platí určitá omezení
Parametry ovlivňující generování kódu Způsob vykreslení sestavy lze ovlivnit různými parametry XSLTMODE server / client EMBEDXSL 1 / 0 XSLTVERSION 1.0 / 2.0
Pokročilé formátování HTMLSTYELSHEET URL externího souboru s XSL transformací pro HTML výstup XSLFOSTYLESHEET URL externího souboru s XSL transformací pro PDF výstup
XSLT extensible StyleSheet Language Transformations XSLT je základem tvorby externích transformací Spolu s ním použijete určitě i XPATH XMP Path Language pro adresování XML dokumentů s daty pro sestavu XQUERY- XML dotazovací a manipulovací jazyk
XSLT XSLT má některé nepříjemné rysy, např. nemá přímou podporu cyklů
Grafika v reportech Do sestav lze vložit následující SVG prvky linechart, piechart, barchart Platí jistá omezení
PDF výstupy V poslední době stále populárnější způsob formátování dokumentů Caché neobsahuje přímou podporu PDF, ale podporuje 2 externí nástroje Fop (Apache) XEP (RenderX)
Konfigurace PDF Změna výchozího konfiguračního souboru: ^%SYS("zenreport","transformerconfig )= název a cesta k.xconf souboru Přímý tisk prostřednictvím Adobe Readeru: ^%SYS("zenreport","adobepath")=cesta k souboru AcroRd32.exe včetně Transformace pomocí XSL 2.0 ^%SYS("zenreport","saxjar")=cesta k saxon9.jar včetně
Tisk z aplikace Princip: Otevřít buď %CSP.Request nebo obecnější %Net.HttpRequest pro získání dat či XSL transformace Instancovat třídu s reportem Zavolat GenerateReport(názevsouboru,typtransformace) Nebo neinstancovat ale rovnou volat GenerateToFile()
Výstup na terminál Tohle není moc dobrý nápad! Nicméně, je to možné, pokud uděláte XSL transformaci s použitím <xsl:text> elementů a zavoláte metodu GenerateReportToStream Musíte použít %CSP.Request a proměnnou %request Stream můžete zachytit a zobrazit Pozor na čestinu! set tiodevice=##class(%sys.nls.device).%new() set tiot=tiodevice.xlttable set tiodevice.xlttable="raw"
Když něco nefunguje Vyhledejte v online dokumentaci Caché slova troubleshooting zen reports Typické problémy Prohlížeč (zejména MSIE) PDF Nezobrazí transformovanou stránku ale XSL transformaci České znaky se nezobrazí správně Neprovede se vygenerování výstupu České znaky se nezobrazí
Když něco nefunguje $LOG = 1 Místo sestavy vygeneruje log $NODELETE = 1 Set ^CacheTemp.ZEN( DebugZen, NoDelete )=1 $USETEMPFILES = 1 Uchovává dočasné soubory v [cachesys]\mgr\temp $REPORTNAME $MODE = tohtml / toxslfo / xslfo
Když něco nefunguje V závislosti na verzi Caché mohou zlobit reporty s externími transformacemi Nutno definovat separátní nezabezpečenou csp aplikaci (2008.x) Čeština v PDF Fop 0.93 nutno sestavit vlastní metriky pro TrueType fonty použité v reportech Fop 0.95 obsahuje podporu pro automatické prohledání TT fontů, musí se ovšem zapnout
Pokročilé techniky tvorby sestav v Caché Sympozium Mariánské Lázně 2010