Architecture Pentaho Reporting Thomas Morgner 20th March 2014

Slides:



Advertisements
Similar presentations
Samsung Smart TV is a web-based application running on an application engine installed on digital TVs connected to the Internet.
Advertisements

DOCUMENT TYPES. Digital Documents Converting documents to an electronic format will preserve those documents, but how would such a process be organized?
MAP REDUCE PROGRAMMING Dr G Sudha Sadasivam. Map - reduce sort/merge based distributed processing Best for batch- oriented processing Sort/merge is primitive.
INTRODUCTION TO ASP.NET MVC AND EXAMPLE WALKTHROUGH RAJAT ARYA EFECS - OIM DAWG – 4/21/2009 ASP.NET MVC.
Objective Understand web-based digital media production methods, software, and hardware. Course Weight : 10%
Agenda What is BIRT? BIRT Features and Report Gallery Scripting BIRT
ASP.NET Programming with C# and SQL Server First Edition
Chapter 1 Understanding the Web Design Environment
Tutorial 11: Connecting to External Data
UNIT4 BUSINESS ANALYTICS. page WHAT IS THE PRODUCT? 2 A business intelligence tool kit, specializing in Coporate Performance Management An application.
Collections Management Museums Reporting in KE EMu.
Reporting in EMu Crystal != Reporting or Why is reporting so difficult and can we do anything about it? Bernard Marshall KE Software.
CVSQL 2 The Design. System Overview System Components CVSQL Server –Three network interfaces –Modular data source provider framework –Decoupled SQL parsing.
Written by Liron Blecher
“This presentation is for informational purposes only and may not be incorporated into a contract or agreement.”
SIG WEB January 31, 3PM. What is HTML5? What it is: Allows for better intergration of media consumption. A new open standard Provides new APIs.
CSCI 6962: Server-side Design and Programming Course Introduction and Overview.
SQL Server Reporting Services London Database Developer Forum Anoop Patel.
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
4-1 INTERNET DATABASE CONNECTOR Colorado Technical University IT420 Tim Peterson.
Stimulsoft Reports.Net 20 Problems which Stimulsoft Reports.Net solves
OracleAS Reports Services. Problem Statement To simplify the process of managing, creating and execution of Oracle Reports.
© 2006 IBM Corporation IBM WebSphere Portlet Factory Architecture.
Peoplesoft XML Publisher Integration with PeopleTools -Jayalakshmi S.
10/13/2015 ©2006 Scott Miller, University of Victoria 1 Content Serving Static vs. Dynamic Content Web Servers Server Flow Control Rev. 2.0.
Jan Hatje, DESY CSS ITER March 2009: Technology and Interfaces XFEL The European X-Ray Laser Project X-Ray Free-Electron Laser 1 CSS – Control.
© 2006 by «Author»; made available under the EPL v1.0 | Date | Other Information, if necessary Jason Weathersby BIRT Evangelist, Actuate Corp. Leveraging.
SQL Reporting Services From a Developers Perspective Adam Calderon Principal Engineer Interknowlogy LLC
“This presentation is for informational purposes only and may not be incorporated into a contract or agreement.”
Microsoft Dynamics NAV 2009 and Architecture Overview Name Title Microsoft Corporation.
Rails & Ajax Module 5. Introduction to Rails Overview of Rails Rails is Ruby based “A development framework for Web-based applications” Rails uses the.
Core Java Introduction Byju Veedu Ness Technologies httpdownload.oracle.com/javase/tutorial/getStarted/intro/definition.html.
IS-907 Java EE World Wide Web - Overview. World Wide Web - History Tim Berners-Lee, CERN, 1990 Enable researchers to share information: Remote Access.
Preface IIntroduction Objectives I-2 Course Overview I-3 1Oracle Application Development Framework Objectives 1-2 J2EE Platform 1-3 Benefits of the J2EE.
1 Java Server Pages A Java Server Page is a file consisting of HTML or XML markup into which special tags and code blocks are inserted When the page is.
Introduction – ORM, Helloworld Application
Text TCS INTERNAL Oracle PL/SQL – Introduction. TCS INTERNAL PL SQL Introduction PLSQL means Procedural Language extension of SQL. PLSQL is a database.
APACHE STRUTS ASHISH SINGH TOMAR ast2124. OUTLINE Introduction The Model-View-Controller Design Pattern Struts’ implementation of the MVC Pattern Additional.
Understanding Web-Based Digital Media Production Methods, Software, and Hardware Objective
Hello world !!! ASCII representation of hello.c.
Introduction. Internet Worldwide collection of computers and computer networks that link people to businesses, governmental agencies, educational institutions,
Preface IIntroduction Course Objectives I-2 Course Content I-3 1Introduction to Oracle Reports Developer Objectives 1-2 Business Intelligence 1-3 Enterprise.
Lecture Transforming Data: Using Apache Xalan to apply XSLT transformations Marc Dumontier Blueprint Initiative Samuel Lunenfeld Research Institute.
16 Copyright © 2004, Oracle. All rights reserved. Building ADF UIX View Components.
How HTML responsiveness translates to PDF
Topic 2: Hardware and Software
CSE691 Software Models and Analysis.
Muen Policy & Toolchain
ITM352 PHP and Dynamic Web Pages: Server Side Processing 1.
Working in the Forms Developer Environment
z/Ware 2.0 Technical Overview
© 2016 Pearson Education, Inc., Hoboken, NJ. All rights reserved.
Play Framework: Introduction
The Basics: HTML5, Drawing, and Source Code Organization
PPT By:Gaurav Jaiswal Singsys Pte. Ltd.
In-situ Visualization using VisIt
GeneXus 9.0: Web applications at their higher power
AVOIR -African virtual
Pentaho Reporting – Citrus edition
Action Request System Example Education Console
Lecture 1: Multi-tier Architecture Overview
Objective Understand web-based digital media production methods, software, and hardware. Course Weight : 10%
Exploring the Power of EPDM Tasks - Working with and Developing Tasks in EPDM By: Marc Young XLM Solutions
Chapter 1 Introduction(1.1)
Analysis models and design models
An Introduction to JavaScript
Games Development 2 Tools Programming
SPL – PS1 Introduction to C++.
Plug-In Architecture Pattern
Integrated Statistical Production System WITH GSBPM
Presentation transcript:

Architecture Pentaho Reporting Thomas Morgner 20th March 2014

Today’s To-Do List Family Picture – The Pentaho Reporting Components 5 minute Speed-run: How to process Reports Detailed Report Processing and Modules Designing Reports manually Generating Reports Reporting on the web How to get the code

Pentaho Reporting from above Pentaho BA-Server Interactive Reporting Report Designer Reporting Plugin and Report Viewer Libraries (Base, Fonts, Formula, Loader, Xml, DocBundle) Reporting Engine Design-Time-UI Data-Source Integration Data-Source Modules Server Integration

Pentaho Reporting from above Libraries and Engine Libraries Encapsulate slowly changing code Serve only one purpose per library XML parsing, Resource Loading, Font Management etc Engine Embeddable reporting engine For Desktop and Server Small footprint Extra functions are plugins Defines report structure Layout calculation Parameter

Pentaho Reporting from above Data-Sources and Report Designer Data-Source Split into runtime and designtime modules Runtime: Query, serialize and deserialize as XML Designtime: UI for report-designer Report Designer Swing Fat-Client Aimed at power users Infrastructure for visual editing Plugins Introspection of reports

Speed-Run: Processing a Report Create a report definition Parse PRPT file Build from Scratch Parameterise (optional) Call ReportProcessor: A: Query Data A: Iterate over Data A: Detect groups, calculate values B: Generate Layout Model B: Compute Layout C: Print Content (PDF, XLS etc)

Speed-Run: Processing a Report Engine runs multiple passes over data Data computation Computes global sums Can happen multiple times, for instance when computing averages Average = pre-computed count / pre-computed sum Percentage = current value / pre-computed sum Pagination Compute total number of pages Critical for ‘page-of-pages’ text in footer Used to pre-compute layout and style for table-exports Content Generation Same as pagination, but with final content

Deep Dive into Reporting Acquire a report definition Load a report definition See OEM-SDK Sample-use-full Use LibLoader Load from binary storage Caching and parser Selection Create a report from scratch Use Reporting API for that (No SDK sample yet, use legacy-demo for sample code) Maintenance nightmare Prefer PRPT for all static reports OK for simple unit-tests

Deep Dive into Reporting Grab some data Data processing usually invoked by engine Parameter-processing During Report-run From functions Data-Factory Interface Data-Sources produce Swing-Table-Models for engine Query Selector for engine = String, logical name Actual representation inside data-source is implementation detail Query = Logical Name + parameter dataset Data-Factories extra modules due to large dependencies org.pentaho.reporting.engine.classic.core.DataFactory

Deep Dive into Reporting Parameter processing Input Validate Failed OK Parameter Validation User Report Processor Report hold parameter Info Contains presentation info Validation rules Parameter values are untrusted Data needs validation Beware of SQL injections! Iterative Process Feed-back loop between UI and engine Cascading parameter org.pentaho.reporting.engine.classic.core.parameters.DefaultReportParameterValidator

Deep Dive into Reporting Report Processor and State Machine Report Processing is state machine Stack-level encapsulation of data Divides long process into smaller tasks Interruptible, suspendable States hold minimum of data Allows roll-back on page breaks Widow/Orphans Generate correct header and footer See package org.pentaho.reporting.engine.classic.core.states

Deep Dive into Reporting Layout Calculations Some states can generate content Starts in DefaultOutputFunction Data-Model = (Report Elements + Data) Translate Data-Model into Layout-Model Layout Model based roughly on CSS Box model Boxes are placed on an infinitely large canvas General process Determine box-sizes for contained content X-axis is minor axis: static, mostly pre-defined by user Y-axis is major axis: Position depends on previous content Compute final position of content on paper Shift content across page breaks org.pentaho.reporting.engine.classic.core.layout.output.DefaultOutputFunction Layout code is called from implementation of the org.pentaho.reporting.engine.classic.core.layout.Renderer interface

Deep Dive into Reporting Layout Model into Content When page-finished: Copy content Print Replace final content with empty box of same size Output processor Translates layout-model to output-document Free-form, page oriented: Graphics2D, PDF, Plain-Text Table-based, stream oriented: HTML, CSV, Excel, RTF Special output: Table-XML, Pageable-XML used in Unit-Tests Validate reports against a known good output - org.pentaho.reporting.engine.classic.core.layout.output.OutputProcessor To see how output is handed over to the OutputProcessor see: - org.pentaho.reporting.engine.classic.core.modules.output.pageable.base.PageableRenderer#performPagination

Designing Reports API basics API defines structure of report definition Not pluggable, engine depends on this Main classes: Master-Report, Sub-Report Section – Internal structuring, groups and group-body Band – layout structure for user content Element – base class, styles and attributes, element-type Attributes and styles can be dynamic org.pentaho.reporting.engine.classic.core.MasterReport org.pentaho.reporting.engine.classic.core.Element org.pentaho.reporting.engine.classic.core.Band org.pentaho.reporting.engine.classic.core.Section

Designing Reports Elements, Attributes and Styles Element Type Defines role of element in report Defines data transformation/formatting for content elements Defines meta-data, available styles and attributes Attributes (Namespace,Name) -> Value map Namespaces to separate attributes into groups Attributes define data-processing rules Content used by report-processor Styles (StyleKey) -> Value map Defines look of elements Used by layout calculations org.pentaho.reporting.engine.classic.core.AttributeNames org.pentaho.reporting.engine.classic.core.ReportAttributeMap org.pentaho.reporting.engine.classic.core.style.StyleKey org.pentaho.reporting.engine.classic.core.style.StyleSheet org.pentaho.reporting.engine.classic.core.metadata.ElementType

Designing Reports Report Designer Swing Application Report-Designer Core: Visual editor loop Introspection of Structure Editors for style and attributes Parameter Plugin-Infrastructure Data-Sources as plugins Visual editor is in: org.pentaho.reporting.designer.core.editor.report.RootBandRenderComponent Style and Attributes as tables: org.pentaho.reporting.designer.core.editor.attributes org.pentaho.reporting.designer.core.editor.styles Structure editor: org.pentaho.reporting.designer.core.editor.structuretree

Designing Reports Report Designer Visual Editor Visual Editor provides WYSIWYG interface PRD works on standard MasterReport object Changes trigger design-time report processing Layout computation handled by Reporting Engine Rendering handled by Graphics2D output Extra handling for drawing selections Main class: org.pentaho.reporting.designer.core.editor.report.layouting.ReportLayouter

Get the Code Pentaho Reporting https://github.com/pentaho/pentaho-reporting In-official Reporting SDK https://github.com/tmorgner/pentaho-reporting-oem-sdk Report-Viewer https://github.com/pentaho/pentaho-platform-plugin-reporting

Compile and Run Use IntelliJ Project is defined in Git and ready to use https://www.on-reporting.com/blog/moving-to-git-and-easier-builds/ Don’t forget ‘ant resolve’ Lib split into external and internal External: new dependencies not covered by upstream module Internal: Dependencies provided by other IntelliJ-modules Transparent when used from command line