Download as pdf or txt
Download as pdf or txt
You are on page 1of 27

Customizing and Rebranding the Jasper oft User Interface

Jaspersoft Headquarters: 539 Bryant Street, Suite 100 San Francisco, CA 94107, USA phone: +1 888.399.2199 or +1 415.348.2380 Email: sales@jaspersoft.com Jaspersoft Europe, Middle East, Africa: Digital Court Rainsford Street The Digital Hub Dublin 8, Ireland Phone: +353 (0) 1 875 0144 Email: sales-emea@jaspersoft.com

Customizing and Rebranding the Jaspersoft Pro User Interface

Contents

INTRODUCTION ..................................................................................................................... 3 CHANGE THE APPLICATION NAME AND LOGO........................................................................ 5 BRAND JASPERSERVER WITH YOUR FONTS AND COLORS ....................................................... 6 CHANGE THE PAGE LAYOUT ................................................................................................... 7 LOCALIZE THE USER INTERFACE ........................................................................................... 10 EXTEND A PAGE FLOW ......................................................................................................... 15 SUMMARY .......................................................................................................................... 26

2009 Jaspersoft

Page 2

Customizing and Rebranding the Jaspersoft Pro User Interface

Introduction
Business Intelligence is no longer out of reach, over-priced, or locked up within stand-alone servers. With open and embeddable solutions such as JasperServer, business intelligence can become part of the very fabric business. This white paper shows how JasperSoft is architected and designed with the needs of ISVs, OEMs, software integrators, and enterprises in mind. JasperServer and JasperAnalysis work out of the box to allow you to design, run, and manage business intelligence through a web browser and via Web Services, as well as providing an environment that can be extended, integrated, and customized for your environment, applications, and needs. Some examples of customization include: Making JasperServer have a different look and feel: layout, colors, logos Adding additional functionality into default screens Replacing the default user interface to embed JasperServer into your own application Using report data sources not provided by JasperServer, or extending existing report data sources for custom needs Integration with external authentication mechanisms, like LDAP and Active Directory Configuring JasperServer to work in load balanced or high availability environments Provide a shared (multi-tenant) JasperServer environment for managing multiple customers, as with Application Service Providers (ASP) or Software as a Service (SaaS) Many of these customization topics are covered in detail in free documentation available at JasperForge and in the JasperServer and JasperAnalysis Ultimate Guides, which are available at JasperShop. In this paper, we look at how to customize and extend the default JasperServer and JasperAnalysis web user interface by providing a few practical examples. In this article, you'll learn how to: Change the Application Name and Logo Brand JasperServer with your Fonts and Colors Change the Page Layout Localize the User Interface 2009 Jaspersoft Page 3

Customizing and Rebranding the Jaspersoft Pro User Interface

Extend a Page Flow

Figure 1: In this example, JasperServer with JasperAnalysis was branded, customized, and localized. The examples used in this white paper were generated using JasperServer 2.0, Professional edition. Your environment may be slightly different if you installed: A different software release version (e.g., earlier or later than 2.0) JasperServer without JasperAnalysis, in which case you will not have analysis/OLAP capabilities JasperServer, Open Source edition (available as a free download from JasperForge.org). Though implementation details may differ, the fundamental concepts are the same across editions and versions. In addition, several well-known open source technologies are mentioned in this white paper, such as Open Symphony SiteMesh and Spring Web Flow. You do not need to download these, or even learn about them first. All the files you need are included in JasperSoft Business Intelligence Suite, and this 2009 Jaspersoft Page 4

Customizing and Rebranding the Jaspersoft Pro User Interface

paper provides enough information to get you started. Additional resources are listed to help you further your understanding. With your software running and this white paper in hand, let's begin!

Change the Application Name and Logo


Incorporating your application name and logo is fast and easy. All you need is the location of the logo file and a plain text editor.

Figure 2: Default application header.

Figure 3: Application header with new name. To change: Text: Application name in header (JasperServ er professional ) Link: hyperlink for logo Image: Company logo in header Edit this file: <contextPath>/WEBINF/bundles/pro_nav_m essages.properties Defaults: NAV_020_TITLE=JasperServer NAV_020_FULL_TITLE=JasperS erver Professional NAV_021_TITLE_MODIFIER=pro fessional <contextPath>/WEBINF/decorators/main.j sp <contextPath>/WEBINF/decorators/main.j sp a href="http://www.jaspersof t.com /images/jaspersoftlogo.gif

The <contextPath> refers to the location in your application server where JasperServer application files are stored. In the sample installation shown in

2009 Jaspersoft

Page 5

Customizing and Rebranding the Jaspersoft Pro User Interface

Figure 4, the <contextPath> is /opt/tomcat/webapps/jasperserver-pro. Your contextPath may be different.

Figure 4: JasperServer files are stored in an application server directory.

Brand JasperServer with your Fonts and Colors


Modifying application fonts and colors is another easy way to brand JasperServer for your application.

Figure 5: Styles are managed in cascading style sheets. Changing the fonts and colors is simply a matter of modifying the appropriate styles in a cascading style sheet (CSS). Use a plain text editor to modify the styles stored in <contextPath>/stylesheets/stylesheet.css.

To change: Table style: application name header ("JasperServer") Text style: title ("JasperServer") and modifier ("professional")

Modify this style: headerleftcell headercell ftitle ftitlemodifier

2009 Jaspersoft

Page 6

Customizing and Rebranding the Jaspersoft Pro User Interface

Text style: welcome ("Welcome, 'user'!") Text style: footer (copyright notice)

TD (default) fsmall

Change the Page Layout


JasperServer web interfaces are very flexible and configurable. This can be very important to application providers who want to provide additional information on the screen, such as a view to your application. Below you see the default page layout has been modified to include a sidebar for announcements.

Figure 6: You can change the page layout using SiteMesh decorators. JasperServer uses Open Symphony SiteMesh to apply a consistent and easily modifiable look and feel to web pages. Changing the web page layout requires intermediate web design skills. You do not have to be a programmer, though the ability to read a Java Server Page (JSP) is helpful. Although it's beyond the scope of this document to 2009 Jaspersoft Page 7

Customizing and Rebranding the Jaspersoft Pro User Interface

explain all aspects of SiteMesh, it's worth taking a brief look at how it works with JasperServer. JasperServer application code output is plain HTML. SiteMesh is then responsible for "decorating" the pages that users see. A SiteMesh decorator is simply a Java Server Page (JSP) file that references SiteMesh-defined tags. The primary decorator used in JasperServer is <contextPath>/WEBINF/decorators/main.jsp. <contextPath>/WEB-INF/decorators/main.jsp includes: HTML that defines the default page format and structure, such as the location of logos, tables, navigation links, and text Java code to control menu items and other conditional logic SiteMesh tags: o <decorator:usePage id="thePage" /> o <decorator:head /> o <decorator:body /> o <decorator:title /> SiteMesh works by intercepting and parsing the plain HTML produced by JasperServer. SiteMesh extracts the <title>, <head>, and <body> tagged content from the plain HTML. SiteMesh then inserts the parsed content (e.g., <body>) into a template, where page layout and formatting is defined. The final, decorated page is then delivered to the users web browser.

Figure 7: Plain HTML produced by login.jsp prior to decoration.

2009 Jaspersoft

Page 8

Customizing and Rebranding the Jaspersoft Pro User Interface

Figure 8: Login page after decoration with main.jsp. Separating the application output from the design makes it easy and safe to brand and re-design a site without affecting any application code. The <body> content from the plain HTML (e.g., "login.jsp") file is inserted where the SiteMesh <decorator:body /> tag appears; the <title> and <head> are handled similarly. Below is the modified section of the <contextPath>/WEBINF/decorators/main.jsp decorated that was used to generate the shown in Figure 6 on page 7. Changes to the main.jsp file include: Adding a second column <TD width:25%> to the layout Incorporating new content into the second column (training class announcements) Reducing the width of the main content column that contains the decorator:body <TD width:75%>

2009 Jaspersoft

Page 9

Customizing and Rebranding the Jaspersoft Pro User Interface

<contextPath>/WEB-INF/decorators/main.jsp
... <!-- END CODE FOR HORIZONTAL MENU ITEMS --> <tr> <td> <table width="100%" height="100%"> <tr> <TD id="decoratedBody" class="contentcell" style="verticalalign:top;width:75%; height:100%" > <decorator:body /> </TD> <td class="contentcell" style="vertical-align:middle;width:25%; height:100%"> <p align=center><img src="http://www.jaspersoft.com/images/icon_super_training.jpg" height="76" hspace="14" width="54"></p> <h2>Online Training</h2> <p><a href="training1.html">JasperReports / iReport Training</a><br> $250 4-hour class covers report development, embedding, and integration</p> <p><a href="training2.html">JasperServer Training</a><br> $250 4-hour class covers report deployment and integration with other applications</p> <br> <p align=center><img src="${pageContext.request.contextPath}/images/jaspersoft-logo.gif"; border="0" height="46" hspace="4" width="141"></p> </td> </tr> </table> </td> </tr> ...

To learn more about Open Symphony SiteMesh: Introduction to SiteMesh by Will Iverson Open Symphony SiteMesh web site

Localize the User Interface


As is expected of modern software, JasperServer is fully internationalized. This means that the following elements of JasperServer can be localized and translated for use in any market and language: 2009 Jaspersoft Page 10

Customizing and Rebranding the Jaspersoft Pro User Interface

messages and user interface labels character sets and encoding date and currency formats

From a technology perspective, localization is a straight-forward JasperServer uses standard Java "resource bundles," which consist value pairs. The keys uniquely identify a locale-specific object, such user interface label. The values are the locale-specific text for a user interface label or other object. In Figure 9 and Figure 10, jasper.report.view.hint.report.options is a key and its default value is Report Options.

Figure 9: Translators modify the values in locale-specific properties files.

Figure 10: Application code reference keys, which are replaced at runtime with locale-specific values. Instead of hard-coding messages and labels in application code, developers refer to keys. Keys are dynamically replaced with values that are retrieved from locale-specific resource bundle ".properties" files. (If you follow the example at the end of this article, you will create new key-value pairs.) This allows translators to work with plain-text properties files rather than source code, and it makes it much easier to add, update, and extend translations over time. Incorporating translation files (locale-specific .properties files) into your environment is also easy. In the example that follows, all that is necessary is: 2009 Jaspersoft Page 11

Customizing and Rebranding the Jaspersoft Pro User Interface

copy the translation files (e.g., jasperserver_messages_pt_BR.properties and pro_nav_messages_pt_BR.properties) to <contextPath>/WEB-INF/bundles/ edit <contextPath>/WEB-INF/applicationContext-security.xml to include the locale descriptor (e.g., pt_BR is for Portuguese, Brazil): <value type="java.util.Locale">pt_BR</value>

Figure 11: Add locale descriptors to <contextPath>/WEBINF/applicationContext-security.xml. A single JasperServer installation can support many locales and Notice in Figure 12 and Figure 13 that when the user selected the "Portuguese (Brazil)" locale at login, the default JasperServer web elements displayed in Portuguese.

Figure 12: Users can select a locale during login.

2009 Jaspersoft

Page 12

Customizing and Rebranding the Jaspersoft Pro User Interface

Figure 13: Example of a localized JasperServer with JasperAnalysis application. JasperServer can be configured to automatically detect the user's locale and time zone, rather than requiring users to select their locale during login. All aspects of localization, including how to configure character sets and date, time, and currency formats, are explained step-by-step in the JasperServer Localization Guide. This guide can be downloaded for free from the Documentation section on JasperForge. For more information, see: JasperServer Localization Guide, a free download from the Documentation section on JasperForge The Java EE 5 Tutorial: Internationalizing and Localizing Web Applications

2009 Jaspersoft

Page 13

Customizing and Rebranding the Jaspersoft Pro User Interface

Introducing JasperBabylon: Community-Based Localization JasperSoft Professional edition software is localized for several markets. JasperSoft Open Source edition software is internationalized, but is not packaged for different locales and languages. Why? Simply because localization is a people-intensive process. Localization can be very expensive and time-consuming. To help make business intelligence available to everyone, JasperSoft introduced an innovative translation service called JasperBabylon in early 2007. JasperBabylon allows a world-wide, open source community of JasperSoft users to contribute translationsin whole or in partusing a simple online form. In a very short period of time, community members contributed complete or partial translations of the JasperServer web interface in several languages. Additional translations are underway. What is significant about the JasperBabylon project is that translations are contributed and reviewed by native speakers who are also real users of JasperServer. The result is that translations are easily accessible to the larger community, are high quality, and can be rapidly and incrementally updated for everyone's mutual benefit.

Signing up and contributing translations is easy. JasperBabylon automatically highlights missing strings. It also tracks contributor translations and reviews for quality control and auditing purposes. JasperBabylon is available at JasperForge.org.

2009 Jaspersoft

Page 14

Customizing and Rebranding the Jaspersoft Pro User Interface

Extend a Page Flow


So far we've seen how to brand and localize JasperServer web pages. What if you want to change or extend the page flow, not just the appearance? Consider the following page:

When viewing a report, users can take any of the following actions: Change Report Options to enter different report parameters Close the report (done viewing/return to the repository view) View the report as an Adobe Acrobat Portable Document Format (PDF) file View the report in Microsoft Excel View the report in Microsoft Word Export the report to comma separated value (CSV) format Navigate to another page of the report

Let's suppose you want to add a new user action, such as Get Help. Creating new page content and the link to the new page is straight-forward. The tricky part is maintaining data integrity or remembering where you

2009 Jaspersoft

Page 15

Customizing and Rebranding the Jaspersoft Pro User Interface

came from and what you were doing there. If the user clicks the "Back" button on the browser, for example, a warning appears:

Figure 14: For usability and data integrity, it is important to manage state. In simple cases, clicking OK would return the user to the correct page of the report. More complex flows present real problems, however, both from a data integrity and usability standpoint. Following the example below, you see that the user can "flow" between pages without getting stuck or lost. For usability and to ensure data integrity, the application needs to manage the transition between states.

Figure 15: Users can "flow" between pages without becoming stuck or lost.

2009 Jaspersoft

Page 16

Customizing and Rebranding the Jaspersoft Pro User Interface

This is what Spring Web Flow does for us. Rather than managing transition and state in application code (which is cumbersome and therefore difficult to write, test, and maintain), reusable views, decisions, and transitions between pages are configured as flows in XML files. Reproducing this example takes about twenty minutes. You will need a plain text or HTML editor. (Eclipse with the Veloeclipse editor plugin was used in this example.) Step-by-step instructions with text you can paste into the appropriate files follow.

Summary Step 1: Anchor Create a new input to initiate a flow when navigating away from the anchor page.

Files Needed <contextPath>/WEBINF/jsp/DefaultJasperViewer.jsp (2) <contextPath>/WEBINF/jsp/ViewReport.jsp (3) <contextPath>/scripts/viewreport.js (4) <contextPath>/images/<your image 18x18> (create this new file)
(1) (5)

Step 2: Target Create the new target page; include an input to return to the page flow. Step 3: Define the Web Flow Define and wire the transitions between views. Step 4: Internationalize Create keys-value pairs for localization.

<contextPath>/WEBINF/jsp/ViewReportHelp.jsp (create this new file) <contextPath>/WEBINF/flows/viewReportFlow.xml

(6)

(7)

<contextPath>/WEB-INF/bundles/ jasperserver_messages.properties

Step 1 - Anchor: Though the order in which you make changes is not important, it helps to organize steps in a logical sequence. There are several ways to initiate a web flow. The approach taken with JasperServer Professional is to parse discrete functions into separate files. This allows maximum flexibility and reusability for more complex flows. The screen shots provide context, and you can copy the text from the examples.

2009 Jaspersoft

Page 17

Customizing and Rebranding the Jaspersoft Pro User Interface

To begin, include a new image1 that will appear when viewing a JasperReport. The labels (title, alt text) and functionality (javascript) will be built out in the example. <contextPath>/WEB-INF/jsp/DefaultJasperViewer.jsp
... <td width="1" valign="middle"> <c:if test="${!emptyReport}"> <a href="javascript:helpViewReport();" title="<spring:message code="jasper.report.view.hint.help"/>"> <img border="0" src="${pageContext.request.contextPath}/images/help.gif" alt="<spring:message code="jasper.report.view.hint.help"/>"/> </a></c:if> </td> ...

Figure 16: Page flows can be initiated by user actions. The DefaultJasperViewer.jsp file references ViewReport.jsp, where the eventId action definitions reside. <contextPath>/WEB-INF/jsp/ViewReport.jsp

Use an existing image or create a new one, approximately 18x18 pixels. For example: . 2009 Jaspersoft Page 18

Customizing and Rebranding the Jaspersoft Pro User Interface

... <form name="viewReportForm" action="<c:url value="flow.html"/>" method="post"> <input type="submit" class="fnormal" name="_eventId_export" value="" style="visibility:hidden;"/> <input type="submit" class="fnormal" name="_eventId_back" value="" style="visibility:hidden;"/> <input type="submit" class="fnormal" name="_eventId_close" value="" style="visibility:hidden;"/> <input type="submit" class="fnormal" name="_eventId_help" value="" style="visibility:hidden;"/> <input type="hidden" name="pageIndex" value="${pageIndex}"/> ...

Figure 17: The eventId actions are defined in a form. The JavaScript function, helpViewReport, is defined in a separate .js file, located at <contextPath>/scripts/view-report.js. <contextPath>/scripts/view-report.js
... function helpViewReport()

2009 Jaspersoft

Page 19

Customizing and Rebranding the Jaspersoft Pro User Interface

{ document.viewReportForm._eventId_help.click(); } ...

Figure 18: The href for the Help image on the anchor page references a JavaScript function.

Keep in mind that you're referring to a Spring Flow event identifier (_eventId_help) and a properties key (jasper.report.view.hint.help) that have not yet been configured. You can name the eventId identifier and properties key anything you want, but be sure to use consistent names later in the viewReportFlow.xml and jasperserver_messages.properties files, respectively. (Remember that names are case-sensitive.) When you're done with Step 1, a new button should appear when you view a report.

2009 Jaspersoft

Page 20

Customizing and Rebranding the Jaspersoft Pro User Interface

Figure 19: Alt text before its properties key has been assigned a value. Notes:

Figure 20: Alt text after its properties key has been assigned a value.

The text, "jasper.report.view.hint.help," will be configured in the jasperserver_messages properties file, during the Internationalize step. At this point, the button is inactive until the remaining steps are completed. Some buttons only appear when a test result is true. Notice various tests, such as test=${hasInputControls} and test=${!emptyReport} in Figure 16 on page 18. Step 2 - Target: Create the target page. The easiest way to create this page for our example is to copy "FillParams.jsp" to a new file named "ViewReportHelp.jsp". In ViewReportHelp.jsp, replace the <form> content as shown below. Specifically, remove the code that renders the input parameters, and then insert new content, including the help text and eventId that are referenced in the page flow.

<contextPath>/WEB-INF/jsp/ViewReportHelp.jsp
... <form name="frm" method="post" action="<c:url value="flow.html"/>"> <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}"/> <table width="100%" border="0" cellpadding="20" cellspacing="0"> <tr> <td align="center"> <br/> Help text goes here. </td> </tr> <tr> <td align="center"> <c:if test="${!flowExecutionContext.activeSession.root}"> <input type="submit" name="_eventId_return" value='<spring:message code="flow.button.return"/>' class="fnormal"/> </c:if> </td>

2009 Jaspersoft

Page 21

Customizing and Rebranding the Jaspersoft Pro User Interface

</tr> </table> </form> ...

Figure 21: Create a new target page for this example. As in Step 1, the Spring Web Flow event identifier (_eventId_return) and properties key (flow.button.return) have not yet been configured. You can name the eventId identifier and properties keys anything you want, but again, be sure to use consistent names later in the viewReportFlow.xml and jasperserver_messages.properties files, respectively. Step 3: Define the Web Flow: Nearly done! Rather than coding transitions in application code, all you need to do is configure the viewReportFlow.xml file. Spring Web Flow handles the rest. Remember how you added the "help" and "return" buttons to the anchor (DefaultJasperViewer.jsp) and target (ViewReportHelp.jsp) pages? Those buttons were defined with eventId names. Here you associate those eventIds with page flow states.

2009 Jaspersoft

Page 22

Customizing and Rebranding the Jaspersoft Pro User Interface

In viewReportFlow.xml, scroll to the section that defines the transition criteria for the "viewReport" state. The transition criteria should be familiar: close, back, navigate, and so on. Add a new transition to this section with eventId, "help." (If you changed the eventId names in steps 1 or 2, use those eventId names here; remember they're case-sensitive.) When Spring Web Flow recognizes the help eventId name, it will transfer to a new state you'll create shortly ("viewHelp"). <contextPath>/WEB-INF/flows/viewReportFlow.xml
... <view-state id="viewReport" view="ViewReport"> <entry-actions> <set attribute="prevForm" value="${'viewReport'}" scope="flow"/> <action bean="reportOptionsViewAction" method="prepareReportView"/> </entry-actions> <transition on="navigate" to="navigate"/> <transition on="close" to="done"/> <transition on="back" to="fillParams"/> <transition on="export" to="exportOptions"/> <transition on="drillReport" to="drillReport"/> <transition on="setInputValues" to="setInputValues"/> <transition on="revertToSaved" to="revertToSavedInputs"/> <transition on="selectReportOptions" to="applyReportOptions"/> <transition on="backFromErrorPage" to="viewReport"/> <transition on="help" to="viewHelp"/> </view-state> <view-state id="viewHelp" view="ViewReportHelp"> <transition on="return" to="viewReport"/> </view-state> ...

To complete the flow, define the new viewHelp view-state. The view= value is the name of the target JSP file we created on page 21 (excluding the .jsp file extension), "ViewReportHelp". Finally, define the transition criteria to recognize the "return" eventId; this returns the user to the page flow from where he started.

2009 Jaspersoft

Page 23

Customizing and Rebranding the Jaspersoft Pro User Interface

Figure 22: Spring Web Flow allows you to define and wire transitions.
Notes:

eventId names in viewReportFlow.xml do not use the "_eventId_" prefix eventId names are case-sensitive For example, these files reference the same eventId: o In viewReportFlow.xml: <transition on="help" ... o In DefaultJasperViewer.jsp: input type="submit" name="_eventId_help"

2009 Jaspersoft

Page 24

Customizing and Rebranding the Jaspersoft Pro User Interface

Step 4 - Internationalize: Adding keys for localization is optional, but recommended. It's so easy that it's worth the 30 seconds it takes to finish the job properly. Simply add the keys referenced in the first two steps to the jasperserver_messages.properties file, and provide a default value for each key. <contextPath>/WEB-INF/bundles/jasperserver_messages.properties
... flow.button.help=Help flow.button.return=Return jasper.report.view.hint.help=Help ...

Figure 23: Internationalize the changes you made. Using Spring Web Flow to manage page flow is much more manageable than managing states in the application code. It is also very flexible in that you can include decisions and reuse flows in subflows. 2009 Jaspersoft Page 25

Customizing and Rebranding the Jaspersoft Pro User Interface

To learn more about Spring Web Flow and how you can take advantage of it in your own applications, see: Spring Web Flow Examined by Steven Devijver. This article provides a very good introduction that explains states, views, actions, and decisions. Spring Web Flow, A Practical Introduction by Erwin Vervaet. Spring Web Flow web site JasperSoft Developers Guide, for adding top-level pages to your application. The JasperSoft Developers Guide is available at JasperForge.

Summary
Business Intelligence is no longer locked up within stand-alone servers. With open and embeddable solutions such as JasperServer, business intelligence becomes part of the very fabric of the business. All that's needed are some basic guidelines on how to integrate it into existing business applications. This white paper showed how JasperSoft is architected and designed with the needs of ISVs, OEMs, software integrators, and enterprises in mind. In this paper, we looked at how to customize the web user interface. We also saw how JasperServer uses both familiar and innovative technologies, which are well-documented and well supported by world-wide communities. The following table summarizes what you need and the technologies used: To: Change the Applicatio n Name and Logo Have available: Plain text editor <contextPath>/WEBINF/bundles/jasperserver_messages.prop erties file <contextPath>/WEBINF/decorators/main.jsp Plain text editor <contextPath>/stylesheets/stylesheets.cs s Technologies used: Java resource bundles SiteMesh decorator

Brand the BI Suite with your Fonts and Colors Change the Page Layout

Cascading Style Sheets (CSS)

Plain text or HTML editor <contextPath>/WEB-

HTML Java Server

2009 Jaspersoft

Page 26

Customizing and Rebranding the Jaspersoft Pro User Interface

INF/decorators/main.jsp Localize the User Interface Locale-specific <contextPath>/WEBINF/bundles/*.properties file(s) JasperServer Localization Guide

Page (JSP) Java resource bundles JasperBabylo n Spring Web Flow JavaScript HTML forms

Change the Page Flow

Plain text editor JasperServer Developer Guide (advanced)

Jaspersoft provides the most flexible, cost effective and widely deployed Business Intelligence suite in the world, enabling better decision making through highly interactive, web-based reports, dashboards and analysis. Leveraging a commercial open source business model, Jaspersoft provides end-to-end BI capabilities at a fraction of the cost of other vendors. The BI suite includes pixel-perfect enterprise reporting, ad hoc query, dashboards, OLAP and in-memory analysis, and data integration. Jaspersoft is the only BI vendor that enables companies to adapt to the new, virtualized world by providing a complete spectrum of on-premise, multi-tenant SaaS and cloud-based deployment options for both embedded and standalone business intelligence. More information is available at www.jaspersoft.com or www.jasperforge.org.

Copyright 2009 Jaspersoft Corporation. All rights reserved. Jaspersoft, the Jaspersoft logo, Jaspersoft Business Intelligence Suite, JasperAnalysis, JasperServer, JasperETL, JasperReports, JasperStudio, iReport, Jasper4Salesforce, and Jasper4 products are trademarks and/or registered trademarks of Jaspersoft Corporation in the United States and in jurisdictions throughout the world. All other company and product names are or may be trade names or trademarks of their respective owners.

2009 Jaspersoft

Page 27

You might also like