BIRT Exchange - Arts Partners

tacitmarigoldInternet and Web Development

Jan 25, 2014 (3 years and 6 months ago)

389 views

1

Actuate Corporation © 2007

BIRT Exchange

Integrating BIRT within your
Applications

Jason Weathersby

BIRT Evangelist

2

Actuate Corporation © 2009

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



3

Actuate Corporation © 2009

Design Engine

Report Engine

Chart Engine

Produces XML Report,
Templates, and Library
Designs

Runs Reports and
produces output


PDF,
HTML, Doc, XLS, PS,
PPT Etc

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

DE API

RE API

CE API

Can be ran outside of OSGi


Report Designer


Chart Builder


Example Viewer

Can be ran outside of BIRT

Core BIRT Open Source Products


High Level BIRT Architecture

4

Actuate Corporation © 2009

BIRT Designer

5

Actuate Corporation © 2009

BIRT Report Engine

Presentation

Services

Generation

Services

Data

Services

Charting

Engine


BIRT Report Designer

Report Design Engine

Eclipse

Report

Designer

Chart

Designer

Eclipse

DTP,

WTP,…

High Level BIRT Architecture: APIs

XML

Report

Design

Report

Document

HTML

PDF

Excel

Word

PowerPoint

PostScript



Data

Data

Custom Report
Designer UI

Report Engine API

Open Data Access

Chart Engine API

Emitter API

Chart UI API

Scripting API

Design Engine API

6

Actuate Corporation © 2009

BIRT Report Engine

JavaScript Events


Optional Java Events


Generation Phase

Presentation Phase

HTML

PDF

CSV

WORD

XLS

PS

PPT

RptDocument

Report

Document


BIRT Report Designer


Chart Builder

Report Design Engine

Charting Engine

RptDesign

XML

Design File

BIRT Pipeline with respect to the APIs

7

Actuate Corporation © 2009

Agenda



BIRT Scripting

8

Actuate Corporation © 2009

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


9

Actuate Corporation © 2009

Expression Scripting

10

Actuate Corporation © 2009

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

11

Actuate Corporation © 2009

Report Scripting

JavaScript Events

Generation Phase

Report Level

initialize

beforeFactory

afterFactory

onPageStart

onPageEnd


Data Source/Set

beforeOpen

afterOpen

onFetch

beforeClose

afterClose

Report Element

onPrepare

onCreate

onPageBreak




Report Level

initialize

beforeRender

afterRender



Presentation Phase

Report Element

onRender





Optional Java Events


Chart Events

onRender

..



Master Page

onPageStart

onPageEnd



12

Actuate Corporation © 2009

Element Scripting

13

Actuate Corporation © 2009

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

19

Actuate Corporation © 2009

BIRT Scripting Demo

DEMO

See Hidden Slides for
Event Orders

20

Actuate Corporation © 2009

Agenda



BIRT Engine(s) Overview

21

Actuate Corporation © 2009

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.


22

Actuate Corporation © 2009

Report Engine Task

EngineConfig

Set configuration variables such as
Engine Home and Log configuration

ReportEngine

Generate one or more tasks

Open Report Design and Documents. Create
Engine Task.

RptDesign

XML

Design File

RptDesign

XML

Design File

RptDesign

XML

Design File

RptDocument

Report

Document

RptDocument

Report

Document

RptDocument

Report

Document

DataExtractionTask

GetParameterDefinitionTask

RunTask

RenderTask

RunAndRenderTask

Retrieve Parameters and
their properties

Does not support Pagination, TOC,
Bookmarks.

Generate Paginated
HTML, XLS, PDF
Document, Postscript,
XLS

Retrieve TOC and Bookmarks

Extract Data from Report Document

23

Actuate Corporation © 2009

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.



24

Actuate Corporation © 2009

Chart Engine
-

Two different Chart APIs

24


Create


Edit


Save/Load

1. Model


Bind Data


Build


Render

2. Engine

Optional Prepare Method.
Called before Bind Data. In
BIRT this sets up the Run Time
Context

25

Actuate Corporation © 2009

Chart Engine

Chart Engine Flow


ChartEngine Generator class

25

Chart Model

2. bind data

3. build


4. render

Device
Renderer

1. prepare


dv.SWT

dv.PNG

dv.JPG

dv.PDF

dv.SVG

dv.SWING

dv.BMP


26

Actuate Corporation © 2009

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



27

Actuate Corporation © 2009

IPlatformContext setPlatformContext

String Location=getPlatform()

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

ReportEngineFactory

Report Engine API

DesignEngineFactory

Design Engine API

OSGILauncher

Startup

PlatformServletContext


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

PlatformFileContext


Default PlatformContext


Looks for Plugins in BIRT_HOME


PlaformConfig: EngineConfig/DesignConfig

Optionally
implement your
own
IPlatformContext

Platform Startup

28

Actuate Corporation © 2009

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.

29

Actuate Corporation © 2009

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_CLASSLO
ADER_KEY, yourclass.class.getClassLoader());


Add to the class path

config.getAppContext().put(EngineConstants.WEBAPP_CLASSPATH_K
EY, "c:/jars/mjo.jar");

30

Actuate Corporation © 2009

Calling the DE API from the RE API/Report Script

RE API Code


IReportRunnable design = null;

//Open the report design

design =
engine.openReportDesign("Reports/Top
NPercent.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.

31

Actuate Corporation © 2009

BIRT Engine Demo

DEMO

32

Actuate Corporation © 2009

Agenda



BIRT Deployment

33

Actuate Corporation © 2009

BIRT Deployment Scenarios

APIs (DE API, CE API, RE API)

Web Viewer


J2EE AS

Custom Servlet


BIRT Tag

Libs

RCP Application

Standalone Application

Web Viewer

Plugin


Paginated HTML, PDF, XLS, WORD, PostScript, TOC, Bookmarks, CSV

Chart Tag

Libs

34

Actuate Corporation © 2009

Main Web Viewer Servlet Mappings

Web Viewer Servlet Mappings

frameset

run

preview

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.

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.

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.

35

Actuate Corporation © 2009

WebViewerExample

plugins

logs

scriptlib

WEB
-
INF

lib

BIRT required runtime plug
-
ins.

The default location for BIRT logs.

Location for BIRT required Jars.

platform

configuration

Location for OSGi configuration files.

report

webcontent

birt

ajax

pages

images

styles

Location for class files used in a Scripted Data Source.

Default location of Report Designs

JavaScript files used with the Viewer

JSP Fragments used to build the Viewer

Images used by the Viewer

CSS files used by the Viewer

BIRT WebViewer Structure

36

Actuate Corporation © 2009

YourServletExample

plugins

logs

WEB
-
INF

lib

BIRT required runtime plug
-
ins. Copy from
runtime.

The default location for BIRT logs.

Location for BIRT required Jars. Copy from
Runtime.

platform

configuration

Location for OSGi configuration files. Copy
from runtime.

report

images

Default location of Report Designs

Default location for report images

Custom Servlet Deployment

Use Singleton to launch Design or
Report Engine. Start Platform on
Servlet Startup and shutdown
Platform on Servlet destroy.

37

Actuate Corporation © 2009

RCP Deployment


Using the BIRT Plugins in Eclipse based applications

38

Actuate Corporation © 2009

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

39

Actuate Corporation © 2009

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


40

Actuate Corporation © 2009

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




41

Actuate Corporation © 2009

Resources

BIRT 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