370 likes | 679 Views
BIRT Exchange. Integrating BIRT within your Applications. Jason Weathersby BIRT Evangelist. Agenda. BIRT Overview BIRT Scripting BIRT Engine(s) Overview Deploying BIRT Deploying the BIRT Viewer Deploying a custom Servlet, which calls the BIRT APIs RCP Deployment.
E N D
BIRT Exchange Integrating BIRT within your Applications Jason Weathersby BIRT Evangelist
Agenda BIRT Overview BIRT Scripting BIRT Engine(s) Overview Deploying BIRT Deploying the BIRT Viewer Deploying a custom Servlet, which calls the BIRT APIs RCP Deployment
High Level BIRT Architecture Produces XML Report, Templates, and Library Designs DE API Design Engine Runs Reports and produces output – PDF, HTML, Doc, XLS, PS, PPT Etc RE API Report Engine Consume Chart EMF model and produces Chart Output. Supports 13 Main types and many sub types. Ouputs to PNG, JPG, BMP, SVG, PDF, SWT, and SWING CE API Chart Engine Can be ran outside of OSGi Core BIRT Open Source Products Report Designer Chart Builder Example Viewer Can be ran outside of BIRT
High Level BIRT Architecture: APIs BIRT Report Designer Custom Report Designer UI EclipseReportDesigner Eclipse DTP, WTP,… Chart Designer Chart UI API Report Design Engine Design Engine API XMLReportDesign Report Engine API BIRT Report Engine ReportDocument Generation Services Charting Engine Scripting API Chart Engine API HTML PDF Excel Word PowerPoint PostScript … Data Data Services Presentation Services Emitter API Open Data Access Data
BIRT Pipeline with respect to the APIs BIRT Report Designer Chart Builder Report Design Engine Charting Engine BIRT Report Engine HTML PDF CSV WORD XLS PS PPT RptDesign XML Design File Optional Java Events JavaScript Events Generation Phase Presentation Phase RptDocument Report Document
Agenda BIRT Scripting
Scripting BIRT JavaScript Based on Mozilla Rhino- This is Server Side Scripting not Browser Based Scripting Two types of Scripting Expression Scripts - Scripts that return a data value. Available in the Expression Builder. Element Scripts – JavaScript methods that are called on events. Customize the behavior of the Report. Available in the Script view. Context of when the event occurs is important. Can also be implemented in Java. Element Scripts are Provided for Charts as well, but these scripts run at render time, not generation time. Java/JavaScripts Can be debugged within the designer
Expression Scripting – Example Locations Creating the display value for a report item Creating a computed field in Data Explorer Specifying a filter condition Specifying a data series for a chart Specifying a map condition Specifying a highlight condition Specifying a group key Specifying a hyperlink Specifying the URI for an image Specifying dynamic data in a text control
Report Scripting Optional Java Events JavaScript Events Generation Phase Presentation Phase Report Level initialize beforeFactory afterFactory onPageStart onPageEnd Data Source/Set beforeOpen afterOpen onFetch beforeClose afterClose Report Level initialize beforeRender afterRender Report Element onRender Chart Events onRender .. Report Element onPrepare onCreate onPageBreak Master Page onPageStart onPageEnd
Element Event Handlers using Java A set of Adapters are supplied that allow most event handlers to be built in Java. The class is a property of the element. Can be debugged with JDT using the BIRT Report Configuration. BIRT 2.5 adds new instance setting
BIRT Scripting Demo DEMO See Hidden Slides for Event Orders
Agenda BIRT Engine(s) Overview
Report Engine Used to Generate Report Documents. Used to Generate Report Output (PDF, HTML, Paginated HTML,WORD, XLS, Postscript) Engine Creates task to implement operations. One or Two Phase operation (Run Task then Render Task or RunAndRenderTask) DataExtraction Task for retrieving Data from a report document. ParameterDetails Task for retrieving Parameter information, including dynamic and cascading information.
Report Engine Task RptDesign XML Design File RptDocument Report Document RptDesign XML Design File RptDocument Report Document RptDesign XML Design File RptDocument Report Document Set configuration variables such as Engine Home and Log configuration EngineConfig Open Report Design and Documents. Create Engine Task. ReportEngine Generate one or more tasks GetParameterDefinitionTask Retrieve Parameters and their properties Does not support Pagination, TOC, Bookmarks. RunAndRenderTask DataExtractionTask Extract Data from Report Document Generate Paginated HTML, XLS, PDF Document, Postscript, XLS RunTask RenderTask Retrieve TOC and Bookmarks
Design Engine Used to Generate/Modify Report Designs, Templates and Libraries. Can be used in conjunction with the RE API to modify designs on the fly. Can be used within BIRT Script to modify designs on the fly. Create and delete report elements. Put report elements into slots. Get and set parameter values. Retrieve metadata from report elements, properties and slots. Undo/Redo Semantic Checks on report designs.
Chart Engine - Two different Chart APIs Optional Prepare Method. Called before Bind Data. In BIRT this sets up the Run Time Context 24
Chart Engine Flow – ChartEngine Generator class Chart Engine 1. prepare Chart Model 2. bind data 3. build • dv.SWT • dv.PNG • dv.JPG • dv.PDF • dv.SVG • dv.SWING • dv.BMP 4. render Device Renderer 25
BIRT OSGi Startup Platform Class Used to startup required BIRT Plugins. Uses OSGi. Needed by DE API, CE API and the RE API Uses a PlatformConfig class to configure the startup. DesignConfig and EngineConfig extend the PlatformConfig. PlatformContext Class Determines location of Plugins. Factory used to create DesignEngine or ReportEngine
Platform Startup Platform Used to startup OSGi and create Factory Objects. Static methods. Startup Start the Platform Shutdown Stop the Platform createFactoryObject Launch a plugin that implements the FactoryService Extension DesignEngineFactory Design Engine API ReportEngineFactory Report Engine API Optionally implement your own IPlatformContext OSGILauncher Startup IPlatformContext setPlatformContext String Location=getPlatform() PlaformConfig: EngineConfig/DesignConfig PlatformFileContext PlatformServletContext • Default PlatformContext • Looks for Plugins in BIRT_HOME • Looks for javax.servlet.context.tempdir • Creates platform directory in tempdir • Uses getResourcePaths for /WEB-INF/platform to locate plugins • Copies plugins and configuration to the tempdir/platform directory
Platform Startup Code for DE, CE and RE API Design Engine Sample IDesignEngine engine = null; DesignConfig config = new DesignConfig( ); config.setBIRTHome("C:/birt/birt-runtime-2_5_1/ReportEngine"); try{ Platform.startup( config ); IDesignEngineFactory factory = (IDesignEngineFactory) Platform .createFactoryObject( IDesignEngineFactory.EXTENSION_DESIGN_ENGINE_FACTORY ); engine = factory.createDesignEngine( config ); Report Engine Sample IReportEngine engine=null; EngineConfig config = new EngineConfig(); config.setBIRTHome("C:/birt/birt-runtime-2_5_1/ReportEngine"); try{ Platform.startup( config ); IReportEngineFactory factory = (IReportEngineFactory) Platform .createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY ); engine = factory.createReportEngine( config ); Chart Engine Sample PlatformConfig pf = new PlatformConfig(); pf.setBIRTHome("C:/birt/birt-runtime-2_5_1/birt-runtime-2_5_1/ReportEngine"); ChartEngine ce = ChartEngine.instance(pf); //non OSGi startup of CE PlatformConfig pf = new PlatformConfig(); pf.setProperty("STANDALONE", true); ChartEngine ce = ChartEngine.instance(pf); Notes: If you are using the APIs in an application that is already using OSGi and the BIRT plugins are deployed, alter the code like: Confing.setBIRTHome(“”); and do not do a Platform.startup(); Only startup the platform once for the lifetime of your application.
Engine Extras Using a supplied connection JNDI Connection Profiles Driver Bridge ODA App Context config.getAppContext().put("OdaJDBCDriverClassPath", "c:/birt/mysql/mysql-connector-java-5.0.4-bin.jar"); task.getAppContext().put("OdaJDBCDriverPassInConnection", this.getConnection()); ClassPath Management Set the Parent Class loader config.getAppContext().put(EngineConstants.APPCONTEXT_CLASSLOADER_KEY, yourclass.class.getClassLoader()); Add to the class path config.getAppContext().put(EngineConstants.WEBAPP_CLASSPATH_KEY, "c:/jars/mjo.jar");
Calling the DE API from the RE API/Report Script RE API Code IReportRunnable design = null; //Open the report design design = engine.openReportDesign("Reports/TopNPercent.rptdesign"); ReportDesignHandle report = (ReportDesignHandle) design.getDesignHandle( ); report.findElement(“table1”).drop(); beforeFactory Script reportContext.getDesignHandle(). findElement("table1").drop(); Simple DE API exist for use in script as well. See example.
BIRT Engine Demo DEMO
Agenda BIRT Deployment
BIRT Deployment Scenarios APIs (DE API, CE API, RE API) BIRT Tag Libs Custom Servlet Web Viewer Web Viewer Plugin Chart Tag Libs J2EE AS RCP Application Standalone Application Paginated HTML, PDF, XLS, WORD, PostScript, TOC, Bookmarks, CSV
Main Web Viewer Servlet Mappings Web Viewer Servlet Mappings Use this mapping to launch the complete AJAX based report viewer. Contains toolbar, navbar and table of contents features. Run and Render task are separated. This option will also create a rptdocument file. frameset Use this mapping to launch the viewer without the navbar, toolbar or table of contents. This mapping uses the RunAndRender task to create the output and does not support pagination and does not create a rptdocument. This mapping does use the AJAX framework to allow cancelling a report. run This mapping is used to RunAndRender a report directly to an output format, or to render an existing rptdocument directly to an output format. It does not use the AJAX framework, but will launch a parameter entry dialog. preview
BIRT WebViewer Structure WebViewerExample The default location for BIRT logs. logs Location for class files used in a Scripted Data Source. scriptlib Default location of Report Designs report webcontent birt JavaScript files used with the Viewer ajax JSP Fragments used to build the Viewer pages Images used by the Viewer images CSS files used by the Viewer styles WEB-INF lib Location for BIRT required Jars. platform BIRT required runtime plug-ins. plugins Location for OSGi configuration files. configuration
Custom Servlet Deployment Use Singleton to launch Design or Report Engine. Start Platform on Servlet Startup and shutdown Platform on Servlet destroy. YourServletExample The default location for BIRT logs. logs Default location of Report Designs report images Default location for report images WEB-INF lib Location for BIRT required Jars. Copy from Runtime. platform BIRT required runtime plug-ins. Copy from runtime. plugins Location for OSGi configuration files. Copy from runtime. configuration
RCP Deployment Using the BIRT Plugins in Eclipse based applications
WebViewer Utility Class see RCPViewer Example WebViewer.display() See Example for Options. Used with external browser or SWT Browser Widget. Use the BIRT Runtime download and add the plugins to your project – See example target
Using the RE/DE API Plugins in an RCP application Do not set BIRT Home, Do not startup the Platform, and use engines as normal. See RCPEngine Example. Uses SWT Browser Widget. Use the BIRT Runtime download and add the plugins to your project – See example target
BIRT Extensions Points BIRT is not just a tool but a framework. Predominant Extension Points. Emitter – Used to create additional output formats. ODA – DTP – Used to add customized Data Source Drivers Report Item – Used to extend the Palette with additional items. Chart Types – Used to add or extend chart types
ResourcesBIRT Exchange Community Site • Centralized hub for BIRT developers • Access demos, tutorials, tips and techniques, documentation… • Enables developers to be more productive and build applications faster • Marketplace for applications • Explore • Search/sort • Rate, comment • Forums • Download • Documentation • Software • Examples • Contribute • BIRT designs, code • Technical tips • Applications www.birt-exchange.com