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
a v elementu <document> – Externí CSS dokumenty • 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) • Nezobrazí transformovanou stránku ale XSL transformaci • České znaky se nezobrazí správně
– PDF • 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