BIRT in Enterprise Architekturen - OIO · BIRT - Business Intelligence Reporting Tools • BIRT:...
Transcript of BIRT in Enterprise Architekturen - OIO · BIRT - Business Intelligence Reporting Tools • BIRT:...
1
BIRT in Enterprise Architekturen
Orientation in Objects GmbH
Weinheimer Str. 6868309 Mannheim
Tobias Kieninger
Java, XML und Open Source seit 1998
) Competence Center)) Object Rangers )
• Schulungen, Coaching, • Unterstützung laufender• Schlüsselfertige RealisierungJ S f
) Software Factory )
© 2009 Orientation in Objects GmbH
2
BIRT in Enterprise Architekturen
Weiterbildungsberatung, Train & Solve-Programme
• Methoden, Standards und Tools für die Entwicklung von offenen, unternehmens-weiten Systemen
Java Projekte
• Perfect Match• Rent-a-team• Coaching on the project• Inhouse Outsourcing
von Java Software
• Individualsoftware• Pilot- und Migrationsprojekte• Sanierung von Software• Software Wartung
2
Tobias Kieninger
Beratung
Projekte
Im a pogramar
Iam a programer
I'm a programor
I write code
© 2009 Orientation in Objects GmbH
3
BIRT in Enterprise Architekturen
Training
Gliederung
• Jump in! • Web(frameworks)• Application Server• Application Server
© 2009 Orientation in Objects GmbH
4
BIRT in Enterprise Architekturen
3
Reporting im Alltag - Gestern und Heute
© 2009 Orientation in Objects GmbH
5
BIRT in Enterprise Architekturen
BIRT - Business Intelligence Reporting Tools
• BIRT: Business Intelligence and Reporting Tools– Toplevel Eclipse Projekt– Initiale Sourcen von ActuateInitiale Sourcen von Actuate
• Homepage: http://www.eclipse.org/birt
• Version– 1.0 Juni 2005
© 2009 Orientation in Objects GmbH
6
BIRT in Enterprise Architekturen
6
– 2.1.2 Februar 2007– 2.2.2 März 2008– 2.3.2 Februar 2009
4
BIRT Designer
© 2009 Orientation in Objects GmbH
7
BIRT in Enterprise Architekturen
Eclipse Report Designer
BIRT API Übersicht
Report Engine
Data
Generation Presentation
Report Design Engine
ReportD t
HTMLPDFPrintXML…
Transform ChartingEclipseDTPODA
ChartDesigner
EclipseWTP
© 2009 Orientation in Objects GmbH
8
BIRT in Enterprise Architekturen
DataXMLReportDesign
Document
5
• Birt Runtime als eigener Download• Enthält
ReportEngine
Birt Engine API
– ReportEngine– birt.war– WebViewerExample– ...
Report Engine
© 2009 Orientation in Objects GmbH
9
BIRT in Enterprise Architekturen
BIRT als OSGi Container
• Läuft in Eclipse Umgebung– OSGi framework– Ohne UI KomponentenOhne UI Komponenten
• Configuration• Libraries• Plugins
© 2009 Orientation in Objects GmbH
10
BIRT in Enterprise Architekturen
6
Technologien auf der Birt Reise (Auswahl)
Webapppp
Rich Client
JEE
Spring
RCP
Swing
Standalone
SpringMVC
GWT JSF
EJB
© 2009 Orientation in Objects GmbH
11
BIRT in Enterprise Architekturen
RelationaleDB
WebservicesXML
EJB
Webapp
JEE Architekturen
HTML PDF Excel Word Powerpnt
Rich Client Standalone
XML ...
...Webapp
Spring
JEE...
Rich Client Standalone
Spring
Standalone
Spring
© 2009 Orientation in Objects GmbH
12
BIRT in Enterprise Architekturen
Relational Webservices XML ...
7
BIRT Web Integration
HTML PDF Excel Word Powerpnt XML ...
Webapp Webapp
Webviewer
Webapp
BirtServlet +Taglibs
ContainerReport Engine
Webapp
ReportService
© 2009 Orientation in Objects GmbH
13
BIRT in Enterprise Architekturen
Datasource
Report Engine
BIRT Rich Client Integration
HTML PDF Excel Word Powerpnt XML ...
Swing App Swing AppRCP App Swing App
Report Engine
Report Engine
Swing App
ReportService
Container
RCP App
WebviewerPlugIn
© 2009 Orientation in Objects GmbH
14
BIRT in Enterprise Architekturen
Datasource
Report Engine
8
Gliederung
• Jump in!• Web(frameworks)• Application Server
• Webviewer• Frameworks
• Application Server
Webviewer
© 2009 Orientation in Objects GmbH
15
BIRT in Enterprise Architekturen
BIRT Web Viewer
• Generierung des Reports in verschiedenen Ausgabeformaten• Export zu CSV• Rendert auch Bilder und Charts• Rendert auch Bilder und Charts• Inhaltsverzeichnis• Parameter
© 2009 Orientation in Objects GmbH
16
BIRT in Enterprise Architekturen
16
9
Deployment des Web Viewers
• Simples Deployment– birt.war in ServletEngine deployen– Reports und Resourcen hineinkopierenReports und Resourcen hineinkopieren– Datenbanktreiber nicht vergessen
• Bemerkenswerte Verzeichnisse– Logging– Scriptlib – webcontent/birt
WEB INF/lib
© 2009 Orientation in Objects GmbH
17
BIRT in Enterprise Architekturen
17
– WEB-INF/lib– WEB-INF/platform
Konfiguration in der WEB.XML
• Auszug Konfigurationsvariablen– BIRT_VIEWER_WORKING_FOLDER– BIRT VIEWER IMAGE DIRBIRT_VIEWER_IMAGE_DIR– BIRT_VIEWER_LOG_DIR – BIRT_VIEWER_LOG_LEVEL– ...
• Vorsicht, möglicher Stolperstein
...<context param>
© 2009 Orientation in Objects GmbH
18
BIRT in Enterprise Architekturen
18
<context-param><param-name>BIRT_VIEWER_LOG_DIR</param-name><param-value>logs</param-value>
</context-param>
...
10
Webviewer Servlets
http://server/myapp/frameset?opt1=val1&opt2=val2http://server/myapp/run?option1=value1&option2=value2http://server/myapp/preview?option1=value1&option2=value2p y pp p p p
• Frameset– Vollwertiger Reportviewer– Menue, Inhaltsverzeichnis, Export, ...
• RunB i h h M
© 2009 Orientation in Objects GmbH
19
BIRT in Enterprise Architekturen
– Bericht ohne Menue
• Preview– Rendern von rptdocument Dateien– Kein AJAX
Auswahl möglicher Parameter
http://server/myapp/frameset?__format=html&__report=MyReport.rptdesign&myParam=value1
• __format – Ausgabeformat (html, pdf, ...)• __report – Pfad zu .rptdesign• __document – Pfad .rptdocument• Parametername=Wert• ...
© 2009 Orientation in Objects GmbH
20
BIRT in Enterprise Architekturen
20
11
Gliederung
• Jump in!• Web(frameworks)• Application Server
• Webviewer• Frameworks
• Application Server
WebappBirt Servlet
+Taglib
© 2009 Orientation in Objects GmbH
21
BIRT in Enterprise Architekturen
Integration als Servlet
• Report Engine starten/stoppen ist zeitintensiv• Integration als Singleton während Webanwendungsstart• Konfiguration via web xml• Konfiguration via web.xml
– Servlets und Parameter
© 2009 Orientation in Objects GmbH
22
BIRT in Enterprise Architekturen
MyWebapp
BirtServlet +Taglibs
12
BIRT Taglibs
• <birt:viewer/>– Reportviewer vgl. Webviewer– Menue Inhaltsverzeichnis ExportMenue, Inhaltsverzeichnis, Export, ...– Viel AJAX
• <birt:report/>– Bericht ohne Menue– Ausgabe in <div> oder <iframe>
© 2009 Orientation in Objects GmbH
23
BIRT in Enterprise Architekturen
<birt:report id="r1" reportDesign="report1.rptdesign"format="html" reportContainer="div">
<birt:param name="param1" value="someValue"/></birt:report>
Ein paar Themen nicht vergessen - Security
http://myserver/run?__report=Gehaltsrg.rptdesign&user=tkiening
• ParameterinjectionParameterinjection– Reportparameter – Ausführen beliebiger Reports
• Reportdesign öffentlich– Aktive Suche nach Schwachstellen möglich– DB Kennwort in rptdesign?
© 2009 Orientation in Objects GmbH
24
BIRT in Enterprise Architekturen
• Birt Security ist großes Thema– Report Security– Column Security– Row Security
13
Gliederung
• Jump in!• Web(frameworks)• Application Server• Application Server
Ser ice
© 2009 Orientation in Objects GmbH
25
BIRT in Enterprise Architekturen
Report Engine
ServiceContainer
OSGi Platform
Starten von BIRT via OSGi Platform
OSGi Platform
Startup(config);Shutdown();createFactoryObject(...)
PlugInPlugInPlugInPlugIns
EngineConfig
PlatformContext
© 2009 Orientation in Objects GmbH
26
BIRT in Enterprise Architekturen
14
Config die uns betrifft...
• EngineConfig– Logging: BIRT verwendet java.util.logging– ClasspathClasspath– Resource Home– ... (und mehr)
• IPlatformContext– Default: PlatformFileContext– PlatformServletContext für Webanwendungen
EngineConfig
PlatformContext
© 2009 Orientation in Objects GmbH
27
BIRT in Enterprise Architekturen
EngineConfig config = new EngineConfig( );config.setBIRTHome("c:/birt-runtime/ReportEngine"); config.setLogConfig("c:/temp", Level.FINE);config.setResourcePath("c:/myproject/resources");
...
OSGi Platform
Starten der ReportEngine / DesignEngine
OSGi Platform
ReportEngineFactory
DesignEngineFactory DesignEngine
ReportEngine
PlugInPlugInPlugInPlugIns
© 2009 Orientation in Objects GmbH
28
BIRT in Enterprise Architekturen
15
HelloWorld BIRT ReportEngine
EngineConfig config = new EngineConfig();IReportEngineFactory factory;IReportEngine engine;
config.setBIRTHome("C:/birt-runtime-2_3_1/ReportEngine");
Platform.startup( config );
factory= (IReportEngineFactory) Platform.createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
© 2009 Orientation in Objects GmbH
29
BIRT in Enterprise Architekturen
engine = factory.createReportEngine( config );
Report Engine API
Report Engine
DataPreviewTaskReportDesign File
GetParameterDefinitionTask
RunTask
RunAndRenderTask
Design File
PDF,HTML,
...
© 2009 Orientation in Objects GmbH
30
BIRT in Enterprise Architekturen
DataExtractionTask
RenderTask
ReportDocument
16
Beispiel Report RunTask
IReportRunnable design;IRunTask runTask;
design = engine.openReportDesign("c:/work/report.rptdesign");
runTask = engine.createRunTask(design); runTask.run("c:/work/report.rptdocument");
runTask.close();
© 2009 Orientation in Objects GmbH
31
BIRT in Enterprise Architekturen
Report Engine
RunTaskReport
Design FileReport
Document
Wo sind wir bei Spring?
© 2009 Orientation in Objects GmbH
32
BIRT in Enterprise Architekturen
http://www.flickr.com/photos/chefranden/528886535/
17
Quellen im Netz
• BIRT Support seitens Spring nicht absehbar (laut JIRA)– http://jira.springframework.org/browse/SPR-1220
• Eclipse BIRT in Spring web applications (29.08.2006)– Weblog Silvester Van der Bijl
• http://blog.xebia.com/2006/08/29/reporting-the-eclipse-way/
• Using BIRT as View in Spring (24.11.2006)– Weblog Luca Masini
• http://jroller.com/masini/entry/using_birt_as_view_in
© 2009 Orientation in Objects GmbH
33
BIRT in Enterprise Architekturen
• Integrate BIRT with Spring in a Web application (13.03.2007)– Weblog Jose Noheda
• http://internna.blogspot.com/2007/03/integrating-birt-with-spring-in-web.html
public class MyServiceImpl {
i t St i Att ib
Spring Basics I - Klassen und Objekte
private String someAttrib;
@Autowiredprivate MyDao myDao;
public void setSomeAttrib (String someAttrib) { this.someAttrib = someAttrib; }
}
M S i I l
© 2009 Orientation in Objects GmbH
34
BIRT in Enterprise Architekturen
...}
MyServiceImpl
MyDaoImpl
18
Spring Basics II - Die Konfiguration
<bean id="myService" class="de.oio.fspring.MyService"><property name="someAttrib" value="TextTextText" />...
</bean>
<bean id="myDao" class="de.oio.fspring.MyDaoImpl"><property ... />
</bean>
M S i I l
© 2009 Orientation in Objects GmbH
35
BIRT in Enterprise Architekturen
MyServiceImpl
MyDaoImpl
Spring Advanced - Das Interface FactoryBean
• Komplexes Erzeugen von Beans• Fabrik Muster• Interface• Interface
– Class getObjectType()– Object getObject()– boolean isSingleton()
MyServiceImpl
MyDaoImplMyDaoFactory erstellt
Erhält Referenz von Spring
© 2009 Orientation in Objects GmbH
36
BIRT in Enterprise Architekturen
<bean id="myDao" class="de.oio.fspring.MyDaoFactory"><property ... />
</bean>
19
BirtEngineFactory und Konfiguration
BirtEngineFactoryReportEngine
Service1
Service2 g y
EngineConfig
p gService2
Controller
PDFRenderContext
© 2009 Orientation in Objects GmbH
37
BIRT in Enterprise Architekturen
EngineConfigFactoryHTMLRenderContext
Konfiguration Spring BirtEngineFactory
<bean id="reportEngine" class="de.oio.BirtEngineFactory"init-method="start" destroy-method="shutdown">
<property name="engineConfig" ref="birtConfig" />p p y g g g /</bean>
<bean id="birtConfig" class="de.oio.EngineConfigFactory"><property name="birtHome" value="${birt.home}" /><property name="logdir" value="${birt.logdir}" />...
© 2009 Orientation in Objects GmbH
38
BIRT in Enterprise Architekturen
...</bean>
20
Konfiguration der RenderContext
<bean id="pdfRC" class="org.eclipse.birt.report.engine.api.HTMLRenderContext"><property name="supportedImageFormats"
value="JPG;PNG;BMP;SVG" /></bean>
<bean id="htmlRC" class="org.eclipse.birt.report.engine.api.HTMLRenderContext"><property name="supportedImageFormats"
value="JPG;PNG;BMP" /><property name="imageDirectory"
value="${eclipse.images.dir}" />
© 2009 Orientation in Objects GmbH
39
BIRT in Enterprise Architekturen
...
</bean>
RunAndRender im Service
public class MyReportServiceImpl implements MyReportService {
private IReportEngine reportEngine;private Map renderContext;
public byte[] erstellePdf() {...reportDesign = reportEngine.openReportDesign(inputStream);task = reportEngine.createRunAndRenderTask(reportDesign);...renderOptions.setOutputFormat("pdf");renderOptions.setOutputStream(out);...
© 2009 Orientation in Objects GmbH
40
BIRT in Enterprise Architekturen
...task.setAppContext(renderContext);task.setRenderOption(renderOptions);task.run();
return out.toByteArray();
}
21
BIRT Appserver Integration - Ist nicht einfach
© 2009 Orientation in Objects GmbH
41
BIRT in Enterprise Architekturen
Themen rund um EJB Container
• Aus J2EE– Filehandles sind böse– Eigene Threads sind böseEigene Threads sind böse– Classloadergeschichten sind böse
• Kein standardisierter Weg für OSGi Container
• Appserver auf dem Markt unterscheiden sich stark
© 2009 Orientation in Objects GmbH
42
BIRT in Enterprise Architekturen
22
Birt Anbindung im JavaEE Appserver
• Vorschlag: Eine Report Engine je Container• Möglichkeiten des Containers identifizieren• Start von Birt mit containereigenen Mechanismen• Start von Birt mit containereigenen Mechanismen
– JMX, JNDI, Listener, ...– JBoss Birt Integration als ServiceArchive
• Kapselung des Reporting via Service
Application Server
© 2009 Orientation in Objects GmbH
43
BIRT in Enterprise Architekturen
EJB
Application Server
JMX Wrapper
EJBReport Engine
JMX
JMX
JMX
ReportS
ervice
Fazit / Ausblick
• Webviewer: Schnell und einfach • Webanwendung: Volle Integration mit Servlet, JSP oder mehr• Spring: Nicht intrinsisch aber leicht möglich• Spring: Nicht intrinsisch, aber leicht möglich• EJB: Je Container unterschiedlich
• Einige „neue“ Server basieren auf OSGi– JBoss 5– Glassfish V3
© 2009 Orientation in Objects GmbH
44
BIRT in Enterprise Architekturen
23
Literaturhinweise
• BIRT: A Field Guide to Reporting• Broschiert: 704 Seiten • Addison WesleyAddison Wesley• Erscheinungsdat: 26. Oktober 2006• Sprache: Englisch • ISBN: 0321442598
• Integrating and Extending BIRT• Broschiert: 608 Seiten
© 2009 Orientation in Objects GmbH
45
BIRT in Enterprise Architekturen
• Addison Wesley• Erscheinungsdat: 22. November 2006• Sprache: Englisch • ISBN: 0321443853
Vielen Dank für IhreAufmerksamkeit !
Orientation in Objects GmbH
Weinheimer Str. 6868309 Mannheim
24
? ??? ?
???
Fragen ?
Orientation in Objects GmbH
Weinheimer Str. 6868309 Mannheim
??
Mehr von OIO zum Thema...
• Schulung: Eclipse BIRT– http://www.oio.de/seminar/open-source/eclipse-birt-reporting-schulung.htm
• Vortrag: Reporting mit Eclipse BIRT– http://www.oio.de/m/konf/wjax2006/ReportingMitEclipseBIRT-final.pdf
• Projektreferenz: Vertragszentrierte Unternehmenssteuerung– http://www.oio.de/java-projekt-referenz-spring-eclipse-vertragsmanagement.htm
© 2009 Orientation in Objects GmbH
48
BIRT in Enterprise Architekturen