24
Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] BIRT in Enterprise Architekturen Tobias Kieninger 2 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen ) Competence Center) ) Object Rangers ) Java, XML und Open Source seit 1998 Schulungen, Coaching, Weiterbildungsberatung, Train & Solve-Programme Methoden, Standards und Tools für die Entwicklung von offenen, unternehmens- weiten Systemen Unterstützung laufender Java Projekte Perfect Match Rent-a-team Coaching on the project Inhouse Outsourcing Schlüsselfertige Realisierung von Java Software Individualsoftware Pilot- und Migrationsprojekte Sanierung von Software Software Wartung ) Software Factory )

BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

1

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

BIRT in EnterpriseArchitekturen

Tobias Kieninger

2

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

) Competence Center)) Object Rangers )

Java, XML und Open Source seit 1998

• Schulungen, Coaching, Weiterbildungsberatung, Train & Solve-Programme• Methoden, Standards und Tools für die Entwicklung von offenen, unternehmens- weiten Systemen

• Unterstützung laufender Java Projekte

• Perfect Match• Rent-a-team• Coaching on the project• Inhouse Outsourcing

• Schlüsselfertige Realisierung von Java Software

• Individualsoftware• Pilot- und Migrationsprojekte• Sanierung von Software• Software Wartung

) Software Factory )

Page 2: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

2

3

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Tobias Kieninger

Beratung

Projekte

Training

Im a pogramar

Iam a programer

I'm a programor

I write code

4

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Gliederung

• Jump in!• Web(frameworks)• Application Server

Page 3: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

3

5

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Reporting im Alltag - Gestern und Heute

6

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

6

BIRT - Business Intelligence Reporting Tools

• BIRT: Business Intelligence and Reporting Tools– Toplevel Eclipse Projekt– Initiale Sourcen von Actuate

• Homepage: http://www.eclipse.org/birt

• Version– 1.0 Juni 2005– 2.1.2 Februar 2007– 2.2.2 März 2008– 2.3.2 Februar 2009

Page 4: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

4

7

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

BIRT Designer

8

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Eclipse Report Designer

BIRT API Übersicht

Data

Report Engine

Generation Presentation

Report Design Engine

XMLReportDesign

ReportDocument

HTMLPDFPrintXML…

Transform ChartingEclipseDTPODA

ChartDesigner

EclipseWTP

Page 5: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

5

9

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

• Birt Runtime als eigener Download• Enthält

– ReportEngine– birt.war– WebViewerExample– ...

Report Engine

Birt Engine API

10

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

BIRT als OSGi Container

• Läuft in Eclipse Umgebung– OSGi framework– Ohne UI Komponenten

• Configuration• Libraries• Plugins

Page 6: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

6

11

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Technologien auf der Birt Reise (Auswahl)

Webapp

Rich Client

JEE

Spring

RelationaleDB

WebservicesXML

RCP

Swing

Standalone

SpringMVC

GWT JSF

EJB

12

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Webapp

Spring

JEE...

JEE Architekturen

Relational

HTML PDF Excel Word Powerpnt

Rich Client Standalone

Webservices XML

XML ...

...

...

Spring

Standalone

Spring

Page 7: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

7

13

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

BIRT Web Integration

Datasource

HTML PDF Excel Word Powerpnt XML ...

Webviewer

Webapp

BirtServlet +Taglibs

ContainerReport Engine

Webapp

ReportService

14

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Datasource

BIRT Rich Client Integration

HTML PDF Excel Word Powerpnt XML ...

Swing App

Report Engine

Report Engine

Swing App

ReportService

Container

RCP App

WebviewerPlugIn

Page 8: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

8

15

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Gliederung

• Jump in!• Web(frameworks)• Application Server

• Webviewer• Frameworks

Webviewer

16

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

16

BIRT Web Viewer

• Generierung des Reports in verschiedenen Ausgabeformaten• Export zu CSV• Rendert auch Bilder und Charts• Inhaltsverzeichnis• Parameter

Page 9: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

9

17

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

17

Deployment des Web Viewers

• Simples Deployment– birt.war in ServletEngine deployen– Reports und Resourcen hineinkopieren– Datenbanktreiber nicht vergessen

• Bemerkenswerte Verzeichnisse– Logging– Scriptlib– webcontent/birt– WEB-INF/lib– WEB-INF/platform

18

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

18

Konfiguration in der WEB.XML

• Auszug Konfigurationsvariablen– BIRT_VIEWER_WORKING_FOLDER– BIRT_VIEWER_IMAGE_DIR– BIRT_VIEWER_LOG_DIR– BIRT_VIEWER_LOG_LEVEL– ...

• Vorsicht, möglicher Stolperstein

...<context-param>

<param-name>BIRT_VIEWER_LOG_DIR</param-name>

<param-value>logs</param-value></context-param>

...

Page 10: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

10

19

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Webviewer Servlets

http://server/myapp/frameset?opt1=val1&opt2=val2http://server/myapp/run?option1=value1&option2=value2http://server/myapp/preview?option1=value1&option2=value2

• Frameset– Vollwertiger Reportviewer– Menue, Inhaltsverzeichnis, Export, ...

• Run– Bericht ohne Menue

• Preview– Rendern von rptdocument Dateien– Kein AJAX

20

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

20

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

Page 11: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

11

21

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Gliederung

• Jump in!• Web(frameworks)• Application Server

• Webviewer• Frameworks

WebappBirt Servlet

+Taglib

22

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Integration als Servlet

• Report Engine starten/stoppen ist zeitintensiv• Integration als Singleton während Webanwendungsstart• Konfiguration via web.xml

– Servlets und Parameter

MyWebapp

BirtServlet +Taglibs

Page 12: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

12

23

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

BIRT Taglibs

• <birt:viewer/>– Reportviewer vgl. Webviewer– Menue, Inhaltsverzeichnis, Export, ...– Viel AJAX

• <birt:report/>– Bericht ohne Menue– Ausgabe in <div> oder <iframe>

<birt:report id="r1" reportDesign="report1.rptdesign" format="html" reportContainer="div">

<birt:param name="param1" value="someValue"/></birt:report>

24

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Ein paar Themen nicht vergessen - Security

http://myserver/run?__report=Gehaltsrg.rptdesign&user=tkiening

• Parameterinjection– Reportparameter– Ausführen beliebiger Reports

• Reportdesign öffentlich– Aktive Suche nach Schwachstellen möglich– DB Kennwort in rptdesign?

• Birt Security ist großes Thema– Report Security– Column Security– Row Security

Page 13: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

13

25

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Gliederung

• Jump in!• Web(frameworks)• Application Server

Report Engine

ServiceContainer

26

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

OSGi Platform

Startup(config);Shutdown();createFactoryObject(...)

Starten von BIRT via OSGi Platform

PlugInPlugInPlugInPlugIns

EngineConfig

PlatformContext

Page 14: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

14

27

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Config die uns betrifft...

• EngineConfig– Logging: BIRT verwendet java.util.logging– Classpath– Resource Home– ... (und mehr)

• IPlatformContext– Default: PlatformFileContext– PlatformServletContext für Webanwendungen

EngineConfig config = new EngineConfig( );config.setBIRTHome("c:/birt-runtime/ReportEngine");config.setLogConfig("c:/temp", Level.FINE);config.setResourcePath("c:/myproject/resources");

...

EngineConfig

PlatformContext

28

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

OSGi Platform

Starten der ReportEngine / DesignEngine

ReportEngineFactory

DesignEngineFactory DesignEngine

ReportEngine

PlugInPlugInPlugInPlugIns

Page 15: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

15

29

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

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);

engine = factory.createReportEngine( config );

30

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Report Engine API

Report Engine

DataExtractionTask

DataPreviewTask

GetParameterDefinitionTask

RunTask

RenderTask

RunAndRenderTask

ReportDesign File

ReportDocument

PDF,HTML,

...

Page 16: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

16

31

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Report Engine

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();

RunTaskReport

Design FileReport

Document

32

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Wo sind wir bei Spring?

http://www.flickr.com/photos/chefranden/528886535/

Page 17: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

17

33

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

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

• 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

34

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

public class MyServiceImpl {

private String someAttrib;

@Autowired private MyDao myDao;

public void setSomeAttrib (String someAttrib) { this.someAttrib = someAttrib; } }

...}

Spring Basics I - Klassen und Objekte

MyServiceImpl

MyDaoImpl

Page 18: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

18

35

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

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>

MyServiceImpl

MyDaoImpl

36

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Spring Advanced - Das Interface FactoryBean

• Komplexes Erzeugen von Beans• Fabrik Muster• Interface

– Class getObjectType()– Object getObject()– boolean isSingleton()

<bean id="myDao" class="de.oio.fspring.MyDaoFactory"> <property ... /></bean>

MyServiceImpl

MyDaoImplMyDaoFactory erstellt

Erhält Referenz von Spring

Page 19: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

19

37

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

BirtEngineFactory und Konfiguration

BirtEngineFactory

EngineConfig

EngineConfigFactory

ReportEngine

Service1

Service2

Controller

HTMLRenderContext

PDFRenderContext

38

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Konfiguration Spring BirtEngineFactory

<bean id="reportEngine" class="de.oio.BirtEngineFactory" init-method="start" destroy-method="shutdown">

<property name="engineConfig" ref="birtConfig" /></bean>

<bean id="birtConfig" class="de.oio.EngineConfigFactory"> <property name="birtHome" value="${birt.home}" />

<property name="logdir" value="${birt.logdir}" />

...</bean>

Page 20: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

20

39

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

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}" />

...</bean>

40

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

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);

... task.setAppContext(renderContext);

task.setRenderOption(renderOptions);

task.run();

return out.toByteArray();}

Page 21: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

21

41

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

BIRT Appserver Integration - Ist nicht einfach

42

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Themen rund um EJB Container

• Aus J2EE– Filehandles sind böse– Eigene Threads sind böse– Classloadergeschichten sind böse

• Kein standardisierter Weg für OSGi Container

• Appserver auf dem Markt unterscheiden sich stark

Page 22: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

22

43

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Birt Anbindung im JavaEE Appserver

• Vorschlag: Eine Report Engine je Container• Möglichkeiten des Containers identifizieren• Start von Birt mit containereigenen Mechanismen

– JMX, JNDI, Listener, ...– JBoss Birt Integration als ServiceArchive

• Kapselung des Reporting via Service

EJB

Application Server

JMX Wrapper

EJBReport Engine

JMX

JMX

JMX

ReportS

ervice

44

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Fazit / Ausblick

• Webviewer: Schnell und einfach• Webanwendung: Volle Integration mit Servlet, JSP oder mehr• Spring: Nicht intrinsisch, aber leicht möglich• EJB: Je Container unterschiedlich

• Einige „neue“ Server basieren auf OSGi– JBoss 5– Glassfish V3

Page 23: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

23

45

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

Literaturhinweise

• BIRT: A Field Guide to Reporting• Broschiert: 704 Seiten• Addison Wesley• Erscheinungsdat: 26. Oktober 2006• Sprache: Englisch• ISBN: 0321442598

• Integrating and Extending BIRT• Broschiert: 608 Seiten• Addison Wesley• Erscheinungsdat: 22. November 2006• Sprache: Englisch• ISBN: 0321443853

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

Vielen Dank für IhreAufmerksamkeit !

Page 24: BIRT in Enterprise Architekturen - oio.de · 3 5 © 2009 Orientation in Objects GmbH BIRT in Enterprise Architekturen Reporting im Alltag - Gestern und Heute 6 © 2009 Orientation

24

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

? ?

???

Fragen ?

48

© 2009 Orientation in Objects GmbHBIRT in Enterprise Architekturen

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