Jaspersoft Studio 5.6.1

advertisement
www.regouniversity.com
Clarity Educational Community
A Deep Dive into Jaspersoft
Getting Started with
Jaspersoft Studio
2
Clarity Educational Community
Jaspersoft Studio Installation
• Your official Jaspersoft Studio install and license file can be
found within your CA Support Download Center, named:
Jaspersoft Studio 5.6.1
• For the purposes of this session, if needed, you can download
the Commercial Trial version of the TIBCO Jaspersoft Studio
version 5.6.1 here:
– http://jaspersoft.regoconsulting.com
– Download the appropriate version for your desktop
platform
• The trial version should remain licensed for 30 days, after
which, you’ll need to install the CA provided version from your
CA Support Download Center
3
Clarity Educational Community
Jaspersoft Studio Installation – Cont’d
•
The Studio installation should progress like any software install for your platform,
and the defaults can be used for the base installation:
4
Clarity Educational Community
Jaspersoft Studio Interface
•
•
•
After completion of the Studio software, launch the application
The Studio software is built on top of the Eclipse platform, those with experience should feel
right at home
There are 7 panels in which you’ll spend most of your report development time:
–
–
–
–
–
–
–
Repository Explorer
Project Explorer
Outline
Palette
Properties
Report Design
Report State
5
Clarity Educational Community
Jaspersoft Studio Interface – Cont’d
•
•
•
•
•
•
•
Repository Explorer
– Used to view and create Data Adapters, connect to and browse Jaspersoft Servers, as
well as various “create” functions, which will be covered later
Project Explorer
– This is your project folder structure, where you will create, and maintain your various
reporting projects
Report Design
– The design view will be used for development, and initial testing of your reports
Outline
– This view will give you a hierarchical view of your report, providing a easy to read
structural view of your report
Palette
– Drag and Drop components that can be included within your report
Properties
– Much time will be spent here tweaking individual settings of various reporting
components
Report State
– During development, this view will provide error reports used for debugging
6
Clarity Educational Community
Jaspersoft Studio – Data Adapter
•
•
•
•
•
•
•
•
•
Step one will be to create a new Data Adapter, which we will connect to an existing Clarity
14.2 Oracle instance
From the “Repository Explorer” right-click on Data Adapters, and select “Create Data
Adapter”, then select “Database JDBC Connection”
Give it a meaningful Name, then select “tibcosoftware.jdbc.oracle.OracleDriver” for the JDBC
Driver
Use the following information for the Url, Username and Password:
Url: jdbc:tibcosoftware:oracle://54.215.219.228:1521;SID=clarity
Username: ro_clarity
Password: ro_user
Verify using “Test”
Click “Finish”
7
Clarity Educational Community
Jaspersoft Server– Security
•
Security within the Jaspersoft Server can be separated into two sections:
– Jaspersoft Server Authentication/Authorization
– CA PPM Authentication/Authorization
Jaspersoft Server Authentication/Authorization:
• A default user within Jaspersoft Server is given a role of “ROLE_USER”, which gives them basic
rights to view reports that allow the “ROLE_USER” role, which is the default
• To develop and deploy reports to the server, a user account with a role of
“REPORT_DESIGNER”, for the given tenant
• Other roles, which are self explanatory, include:
– ROLE_DOMAIN_DESIGNER
– ROLE_ADHOC_DESIGNER
– ROLE_DASHBOARD_DESIGNER
– ROLE_DATASOURCE_DESIGNER
– ROLE_ADMINISTRATOR
– ROLE_SUPERUSER
8
Clarity Educational Community
Jaspersoft Server– Security – Cont’d
CA PPM Authentication/Authorization:
• CA PPM 14.2 Installation and Configuration will create several roles within Jaspersoft Server,
which correlate to roles within CA PPM, which include:
– CSK_ROLE_ADMINISTRATION, CSK_ROLE_ALL_REPORTS_DOMAINS,
CSK_ROLE_APPLICATION_MANAGEMENT, CSK_ROLE_CUSTOM_MASTER_OBJECTS,
CSK_ROLE_FINANCIAL_MANAGEMENT, CSK_ROLE_IDEA_MANAGEMENT,
CSK_ROLE_INVESTMENT_MANAGEMENT, CSK_ROLE_PROGRAM_MANAGEMENT,
CSK_ROLE_PROJECT_MANAGEMENT, CSK_ROLE_RESOURCE_MANAGEMENT, and
CSK_ROLE_TIME_MANAGEMENT.
• These roles will be covered more in depth in later sessions
• As an administrator, additional roles can be created within the Jaspersoft Server, which will
allow a more fine-grained control of which reports, etc. that a user has access to
9
Clarity Educational Community
Jaspersoft Server– Connectivity
•
•
•
•
At this stage, having connected a Data Adapter to a Clarity Database, one can begin
development locally
To validate your locally developed report against the Jaspersoft Server, you must first connect
your Studio environment to a Jaspersoft Server
Within the “Repository Explorer” right-click on “Servers” and select “Create JasperReports
Server Connection” and name the connection appropriately
For this session, we’ll use the following information to connect to Rego development server:
– URL: http://clarity09.dev.regoconsulting.net:8089/reportservice/
– Organization: LEAVE BLANK
– Username: regou
– Password: Clarity123
10
Clarity Educational Community
Creating Your First
Jaspersoft Report
11
Clarity Educational Community
Reporting Requirements
•
Management has requested a “Project Status Report”, and has given you the
following high level requirements to include in the report:
– Project Description
– Project Start & End Dates
– Project Status
– Project Stage
– Total Budget (Cap/Ex)
– Total Forecast (Cap/Ex)
– Total Budget Differential
•
A simple grid report could be created, however, the version we’ll be developing will
be taking some visual liberties based on the requirements to create an easy to read
report for our management
At the end of this session, we’ll have a version of the report above created
•
12
Clarity Educational Community
Creating The Project
•
•
•
•
You should now have an installation of Jaspersoft Studio, a Data Adapter connected
to a Clarity PPM database, and a Jaspersoft Server connection for deployment
We are ready to begin!
We’ll start by creating a new Project, within the “Project Explorer” tab, by clicking
on “File -> New -> Other”, then select “JasperReports Project” and click “Next”
Name your project appropriately, such as “Project Status Report”
13
Clarity Educational Community
Creating The Report
•
•
•
You should now have an empty project folder within your “Project Explorer” tab
and are ready to create the beginning of our report
Right-click on your project folder, then select “New” -> “Jasper Report”
In the wizard that opens, select “Blank A4 Landscape”, click “Next”, and change the
filename to “YOURNAME_ProjectStatusReport.jrxml” then click “Next”
14
Clarity Educational Community
Creating The Report – Cont’d
•
•
On this next screen, select the “RegoUniversityLocal” Data Adapter that we created
earlier, and then click “Finish”
You should now have a blank landscape report in our main design window:
15
Clarity Educational Community
Setup the Dataset Query
•
•
Before we get started in building the UI from the report, we must first setup the
SQL query that the report will use
In the “Outline” tab, right-click on the report name, and select “Dataset and
Query” – The dataset and query dialog will appear
16
Clarity Educational Community
Setup the Dataset Query – Cont’d
•
•
For this tutorial, you can download the query directly from the following location:
– http://jaspersoft.regoconsulting.com/RegoUJaspersoftDeepDiveQuery.txt
Paste the text from that query directly into the dialog, and click “Read Fields”
17
Clarity Educational Community
Setup the Dataset Query – Cont’d
•
After clicking “Ok”, you should now have a set of available “Fields” within your
report “Outline”, which will be used to develop the report:
18
Clarity Educational Community
Report Title
•
•
Our first step to build the UI of the report is to populate the “Title” band
From the “Palette” tab, drag two separate “Static Text” fields into the “Title” band
and format accordingly, using the “Properties” tab for field settings:
19
Clarity Educational Community
Report Title – Cont’d
•
•
•
•
Next, drag a “Rectangle” into the Title, which we’ll use to form a title bar across the
report
Within the new Title bar, try a “Text Field” into the Title
The “Text Field” differs from the Static Text component, in that you can use
Jaspersoft’s “Expression Editor” to dynamically change the output of the Text Field
Format the new Text Field to your liking, using the “Properties” tab, changing the
text size, color, alignment, etc.
20
Clarity Educational Community
Report Title – Cont’d
•
Finally, open the “Expression Editor” for the Text Field
•
In the dialog that opens, enter the following to print out the current data, along
with a static title: "Report Date: "+DATEFORMAT(NOW(), "M/d/yy")
21
Clarity Educational Community
Report Title – Cont’d
•
Save your expression, and then click on the “Preview” option of your design view,
to see a preview of your report:
22
Clarity Educational Community
Detail Band
•
•
•
•
Now we’ll work on populating the main content of the report, within the “Detail”
band
First, delete the “Page Header” and “Column Header” bands from the outline,
which we’ll not be using
Drag another “Rectangle” into the Detail band, which we’ll use as a data element
header – Format according to your liking
Next, drag the following three “Fields” into your Detail band: SCHEDULE_FINISH,
NAME and CODE – This will place a static text header and field for each item on
your report – Delete the headers:
23
Clarity Educational Community
Detail Band – Cont’d
•
Next, move and format your fields into the header bar that we created
•
If you “Preview” your report at this point, you should see a header on your report
for each project being returned
Rather than the full datetime for the scheduled finish, we’ll now format the field
using a pattern – Select the schedule_finish field and open the properties tab
Click on the “…” to the right of the “Pattern”, which opens the Pattern dialog
•
•
24
Clarity Educational Community
Detail Band – Cont’d
•
•
•
For this report header, set the pattern to be: yyyy The “-” will be used to separate the Name of the project:
You may need to preview your report several times as you adjust the report to get
this end result:
25
Clarity Educational Community
Detail Band – Cont’d
•
•
Next, click and drag the “DESCRIPTION” field below the header we just created
This time, keep the header, and format such that the header is left justified, and
the description field is to the right, spanning the width of the report, with a height
of roughly one row:
26
Clarity Educational Community
Detail Band – Cont’d
•
•
•
•
•
At this point we have some design decisions that need to be made – The
DESCRIPTION field could return varying length of text, which could overflow the
current layout
Jaspersoft Studio provides the following option for such a case: “Stretch With
Overflow” – Enabling this on our DESCRIPTION Field, will allow it to expand, but
sets no maximum limit on the expansion
We can, however, limit the length using the Expression Editor, albeit not as clean as
a built-in function would have been - To achieve this, open the Expression Editor
for the DESCRIPTION field, and enter the following:
– ($F{DESCRIPTION}.length() > 300 ?
$F{DESCRIPTION}.substring(0,297).replaceAll("\\r\\n|\\r|\\n","")+"..." :
$F{DESCRIPTION}.replaceAll("\\r\\n|\\r|\\n",""))
The above strips all newline characters, and grabs the first 297 characters, then
appending “…” to signify there was more data (Further adjust can be made to fine
tune)
Additionally, change the font to a monospaced font such as Courier New to ensure
equal spacing
27
Clarity Educational Community
Detail Band – Cont’d
•
While not a perfect solution, being able to use Java functions within the Expression
Editor gives us the ability to overcome some Studio limitations:
•
For a production implementation, I’d suggest using the same font throughout the
report for consistency – Multiple monospaced fonts exist that could be selected
28
Clarity Educational Community
Detail Band – Cont’d
•
•
•
Lastly, click and drag the following Fields into the Detail band below the
Description: FULL_NAME, SCHEDULE_START, SCHEDULE_FINISH and
STATUS_INDICATOR
Arrange them left justified below the Description as follows, and modify the Static
Text Fields to accurately depict the data:
A quick preview of the report will allow you to see the new formatting
29
Clarity Educational Community
Detail Band – Cont’d
•
Scrolling through the preview data, you should notice a formatting challenge, one
that appears when the DESCRIPTION field stretches with longer results:
•
•
This is an easy fix, but one that can be easily missed without proper report testing
For each of the Static Text Fields, and Text Fields below the DESCRIPTION Field,
modify the “Position Type” to “Float”
A quick preview will validate the fix
•
30
Clarity Educational Community
Page Footer
•
•
To complete this initial report, delete the “Column Footer” and “Summary” bands
Open the “Palette” tab, and drag the “Page X of Y” component from the Tools
section – Format to your liking:
•
CONGRATULATIONS! Our first revision is done!
31
Clarity Educational Community
Sorting, Grouping, Dynamic
Headers and Images
32
Clarity Educational Community
Images
•
•
•
•
•
Now that we have a basic report, we’ll spend some time enhancing it’s visual
appeal and readability
First, we need to load some images into our local development environment that
we can use in the report
We’ll create these images in a hierarchy that is outside of our report, such that they
can be reused across multiple reports, if needed
Right-click on the project folder in the Project Explorer view and select “New” ->
“Folder” and create a folder called “Images”
Underneath that folder create another folder called “RegoUniversity”
33
Clarity Educational Community
Images – Cont’d
•
•
•
Now that we have the folder structure in place, download the following zip file to
your local PC and extract them to a temporary location:
– http://jaspersoft.regoconsulting.com/RegoUJaspersoftDeepDiveImages.zip
Back in your Project Explorer, Right-click on the “RegoUniversity” folder and then
select “Import” – Select “File System” under the “General” section
Next, use the Browse button to locate the extracted images, and select the
“RegoUniversity” folder:
34
Clarity Educational Community
Images – Cont’d
•
•
In the right pane, select all 7 images using the checkboxes
Select “Finish” to import the files into the project
35
Clarity Educational Community
Status Legend
•
•
•
Now that we have the images loaded, we’ll create a Status Legend, which we’ll use
to denote the appropriate meaning of the status images
Start by expanding the height of the Title band, so we can include the legend at the
top of the report (This can be done by dragging the band, if easily selectable, or by
right-clicking the band properties and adjusting the height manually)
Copy the project header rectangle we created earlier to place in the Title band and
size approprately:
36
Clarity Educational Community
Status Legend – Cont’d
•
•
•
•
•
Create a “Static Text” title left justified
Drag each of the following images into the expanded Title band: nostatus, green,
yellow and red PNG files
Select each image and adjust the size to be 20px x 20px
Add a “Static Text” description to the right of each image, and format
appropriately:
Preview your report to ensure proper formatting
37
Clarity Educational Community
Dynamic Status Image
•
•
•
We now have the legend setup, and are ready to replace our current status with
dynamic image set
To start, delete the Status Field from the report
Copy and Paste each of the status images from our new legend, into the Detail
Band
38
Clarity Educational Community
Dynamic Status Image – Cont’d
•
•
•
•
We previously used the “Expression Editor” to dynamically change the value of a
Text Field – Another feature in Jaspersoft Studio is the “Print When Expression
Editor”
For each of the images in the Detail Band, go to “Properties” and then open the
“Print When Expression Editor”
Use the following expressions for each of the images:
– Green: $F{STATUS_INDICATOR}.toString().equals("1")
– Yellow: $F{STATUS_INDICATOR}.toString().equals("2")
– Red: $F{STATUS_INDICATOR}.toString().equals("3")
– NoStatus: $F{STATUS_INDICATOR} == null
If the expression is true, the image will now be displayed:
39
Clarity Educational Community
Dynamic Status Image – Cont’d
•
•
•
Before adjusting the image locations, Preview your report and watch as the images
dynamically appear for the appropriate status of each project
Once validated, move each of the images directly on top of one another, and place
the group to the right of the Project Status label
Don’t forget to change the “Position Type” to “Float”!!
40
Clarity Educational Community
Dynamic Group Header
•
•
•
The next step in enhancing our report is to implement a group by “STAGE_CODE”,
with some additional dynamic images in the header
Right-click on the report within the “Outline” tab, and select “Create Group” –
Select “STAGE_CODE” and name the Group appropriately
After clicking “Next”, uncheck “Add the Group Footer”, which we will not use – Click
“Finish”
41
Clarity Educational Community
Dynamic Group Header – Cont’d
•
In our report design view, we now have a new Group Head band
42
Clarity Educational Community
Dynamic Group Header – Cont’d
•
To build our dynamic group headers, we’ll start by placing a new Rectangle across
the middle of the group header like so:
43
Clarity Educational Community
Dynamic Group Header – Cont’d
•
To build our dynamic group headers, we’ll start by placing a new Rectangle across
the middle of the group header like so:
44
Clarity Educational Community
Dynamic Group Header – Cont’d
•
•
•
•
•
To now build the dynamic group header images, drag one of each onto the group
header band: blue_bar, green_bar and a new Static Text Field
Adjust the images to be roughly 250px x 30px – Under the image properties,
modify the “Scale Image” to “Fill Frame” to have the images fill the box size
Arrange the images on top of each, similar to what was done with our Status icons
Modify the Static Text to read: “Planning”
For the “Print When Expression” for the Blue and Green Bars – Adjust accordingly:
– Green: $F{STAGE_CODE_NUMBER}.equals( “1” )
– Blue: !$F{STAGE_CODE_NUMBER}.equals( “1” )
45
Clarity Educational Community
Dynamic Group Header – Cont’d
•
•
•
Repeat for the middle header section – Use the label “Initiation”
For the middle header section “Print When Expression” for two Blue and Green
Bars – Adjust accordingly:
– Green: $F{STAGE_CODE_NUMBER}.equals( “2” )
– Blue: !$F{STAGE_CODE_NUMBER}.equals( “2” )
For the right header section “Print When Expression” for the two Blue and Green
Bars – Adjust accordingly:
– Green: $F{STAGE_CODE_NUMBER}.equals( ”3” )
– Blue: !$F{STAGE_CODE_NUMBER}.equals( ”3” )
46
Clarity Educational Community
Dynamic Group Header – Cont’d
•
•
Next, adjust the Group Header components to minimize the vertical space used, to
help with report formatting – Resize the band appropriately
Additionally, Right-click on the Group Header in the Outline view to view the
properties – Check the following items: Start New Page, Reprint Header On Each
Page, Keep Together
47
Clarity Educational Community
Dynamic Group Header – Cont’d
•
•
•
•
•
Now that the header is dynamically updating, and displaying appropriately at the
header of each page, we need to adjust the “Sorting” of the Dataset
Right-click on the Report within the Outline view and select “Dataset and Query”
In the lower pane in the dialog, select the “Sorting” tab
Click “Add” – Select “STAGE_CODE_NUMBER” – Click “Finish”
Repeat – Select “FULL_NAME” – Click “Finish”
48
Clarity Educational Community
Dynamic Group Header – Cont’d
•
A quick preview of our report should now show the report, sorted and grouped just
the way we want it!
49
Clarity Educational Community
Add a Logo
Create a Template
50
Clarity Educational Community
Adding a Logo
•
•
•
Let’s now add a company logo to our report, in order to ensure proper branding
First, expand the Title band in order to allow for a larger logo
Click and Drag the acme_logo image file into the Title band – Preview to validate
51
Clarity Educational Community
Creating A Template
•
•
•
Should we desire, we can now create a template from our base report
Select the project in your Outline view, and then click “File” –> “Export as Report
Template”
Select a Destination Folder (Create a reusable Template Folder)
52
Clarity Educational Community
Creating A Template – Cont’d
•
•
•
Click “Next”
The next dialog allows you to select which category(s) the report template will fall
under
Select the project in your Outline view, and then click “File” –> “Export as Report
Template” – Select “Format Landscape” – Click “Next” – Then “Finish”
53
Clarity Educational Community
Creating A Template – Cont’d
•
•
•
To use the new Template, we must add the location we saved it to, as a “Template
Location”
Within Jaspersoft Studio, select “Window” -> “Preferences”
Expand the “Jaspersoft Studio” – Select “Template Locations”
54
Clarity Educational Community
Creating A Template – Cont’d
•
•
In the right pane, click “New” – Browse to your Template location and click “OK”
Click “OK”
55
Clarity Educational Community
Creating A Template – Cont’d
•
•
•
•
We can now execute a test to see if our new template works
In your “Project Explorer” – Select “File” -> “New Jasper Report”
Select the “Format Landscape” category, and you should now see your Project
Status Report template
From here, you could continue with your current report as a base
56
Clarity Educational Community
Add Budget Info
Add Style
57
Clarity Educational Community
Budget Information
•
•
Our original query already contains the budget information needed, so now we’ll
add some data to our report
Create six new Static Text Fields, formatted like so:
58
Clarity Educational Community
Budget Information – Cont’d
•
•
•
Next, we’ll add a currency symbol left justified for each of the static text fields
using a “Text Field” component
Rather than hardcode a “$”, we’ll use a Java Expression to grab the currency
symbol:
– NumberFormat.getCurrencyInstance().getCurrency().getSymbol()
Don’t forget to “Float” the position of all the new elements!
59
Clarity Educational Community
Budget Information – Cont’d
•
•
•
Lastly, we need to add the budgetary information to the report
Create a new Text Field for reach line item, and use the following Expressions:
Total Budget: ($F{TOTAL_BUDGETED_COST} != null ? new
DecimalFormat("#,###.##;(#,###.##)").format($F{TOTAL_BUDGETED_COST}) : new
DecimalFormat("#,###.##;(#,###.##)").format(0))
– Capital: ($F{BUDGETED_CAPITAL_COST} != null ? new
DecimalFormat("#,###.##;(#,###.##)").format($F{BUDGETED_CAPITAL_COST}) : new
DecimalFormat("#,###.##;(#,###.##)").format(0))
– Expense: ($F{BUDGETED_EXPENSE_COST} != null ? new
DecimalFormat("#,###.##;(#,###.##)").format($F{BUDGETED_EXPENSE_COST}) : new
DecimalFormat("#,###.##;(#,###.##)").format(0))
•
•
Total Forecast:
– Capital:
– Expense:
Difference:
60
Clarity Educational Community
Budget Information – Cont’d
•
•
Additional Budget Text Field information:
Total Forecast: ($F{TOTAL_FORECASTED_COST} != null ? new
DecimalFormat("#,###.##;(#,###.##)").format($F{TOTAL_FORECASTED_COST}) : new
DecimalFormat("#,###.##;(#,###.##)").format(0))
– Capital: ($F{FORECASTED_CAPITAL_COST} != null ? new
DecimalFormat("#,###.##;(#,###.##)").format($F{FORECASTED_CAPITAL_COST}) : new
DecimalFormat("#,###.##;(#,###.##)").format(0))
– Expense: ($F{FORECASTED_EXPENSE_COST} != null ? new
DecimalFormat("#,###.##;(#,###.##)").format($F{FORECASTED_EXPENSE_COST}) : new
DecimalFormat("#,###.##;(#,###.##)").format(0))
•
Difference: new
DecimalFormat("#,###.##;(#,###.##)").format($F{TOTAL_BUDGETED_COST}.subtract($F{TOTAL_FORECASTE
D_COST}))
61
Clarity Educational Community
Budget Information – Cont’d
•
At this stage, we should have a Text Field for each Budgetary line item:
62
Clarity Educational Community
Style
•
•
To complete the Budget information section, we’ll create a Style on the
“Difference” to print red, in the event of a negative result
Right-click on “Styles” in the Outline view, and “Create Style” – Name the new Style
“Difference”
63
Clarity Educational Community
Style – Cont’d
•
•
Now, we need to create a “Conditional Style” by Right-clicking on the Difference
Style, and selecting “Create Conditional Style”
Next, set the Forecolor to red for this new conditional style
64
Clarity Educational Community
Style – Cont’d
•
•
On the “Style” tab of this new condition, open the “Conditional Expression Editor”
Use the following expression:
–
•
•
new
Boolean($F{TOTAL_BUDGETED_COST}.subtract($F{TOTAL_FORECASTED_COST}).intValue
() < 0)
The above condition, if true, will cause the Forecolor to be red for any element that
this Style is applied to
In the properties of the Difference Text Field, modify the Style to use this new Style
65
Clarity Educational Community
Style – Cont’d
•
A final Preview of our report, with the new style, validates the conditional style:
66
Clarity Educational Community
Input Controls & Parameters
Report Deployment
67
Clarity Educational Community
Input Controls & Parameters
•
•
•
•
•
Now that we have a fully functional and dynamic report, we’ll focus on allowing the
user to filter by Project Manager
This is a multi-step process, which can be confusing if not done in the proper order
Our first step, will be to create a “Parameter”, which will be used to filter the
dataset
Right-click on “Parameters” in the Outline tab, and select “Create Parameter”
In the Properties tab, name the Parameter “projectManager”, and de-select the “Is
For Prompting” checkbox – Leave the Class as “java.lang.String”
68
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
•
•
Next, we’ll create a “Filter Expression” on the Dataset and Query
Open the Dataset and Query dialog from the Outline tab, and select the “Filter
Expression” tab in the lower pane
Here we can use Java expressions that return a Boolean response on whether each
row should be filtered
Use the following expression to filter on our new Parameter:
–
($P{projectManager} != null ?
$F{UNIQUE_NAME}.toString().equals($P{projectManager}) : true)
69
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
•
Now that we have the Parameter created, and being filtered on, we need to create
an “Input Control” to provide input to the Parameter
However, to do this in the easiest manner, we must first deploy our report to the
Jaspersoft Server
First, save your report – Next click on the server icon, with the blue checkmark to
open the deployment dialog:
70
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
In the Publishing Wizard dialog, expand the RegoUniversityServer that we created
earlier – Then expand the following folders:
– Organizations – Rego Consulting – RegoUniversity
– Select the RegoUniversity folder
Ensure “Create Report Unit” is checked – Ensure the “Report Unit Label and Name”
are unique – Click “Next”
71
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
•
This next step is important – The images already exist on the server, in the correct
location, deselect each checkbox to change the deploy value to “false”
Additionally, the deploy wizard ignores directories in your local report, and will
deploy the images to the root of your report, thus breaking any referenced links in
your report on the server
Click “Next”
72
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
•
This next screen in the wizard is used to select the Data Source to be used – Click
the “…” button and then search for “clarity”
Select the Data Source named “clarity” and then click “Finish”
Click “Finish” once more – You should be prompted with a “Success” dialog
73
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
To validate the deployment, and prepare for the next step, open the Repository
Explorer tab, and then expand the server and folder structure like so
You should see your report deployed into a subfolder of the same name:
74
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
•
The last step for our filter, is to create the “Input Control” on the server, within our
report folder
Right-click on the folder of your report and select “New”
Next, select “Input Control” and click “Next”
75
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
•
This next step is key – the “Name” is what the user will see for the Filter, while the
“ID” MUST match the Parameter we created earlier
Name them “Project Manager” and “projectManager” respectively
Click “Next”
76
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
On this next screen, we’ll change the “Type” to be “Single Select Query”
For the “Query Resource”, select “Select from Repository” and then click “…” to
select the repository query
77
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
•
You should now see a search dialog, to search the repository for a query
Enter “project” to search for the query that CA provided with CA PPM 14.2
Select the “projectManager” query and click “Finish”
78
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
•
The last step in the studio, select “Value & Visible Columns”
We must now provide the “Value” and “Visible” columns that will be shown to the
user
The CA provided query provides “resource_id” and “resource_name”, which we will
place into the values like so – Click “Finish”
79
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
We can now validate via the Repository Explorer, that the Input Control is deployed
into the folder directory
80
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
•
•
The last step needs to be performed on the Clarity PPM instance itself, within the
Advanced Reporting portion of the application
Log into Clarity PPM – Browse to “Advanced Reporting”
Within Advanced Reporting, select View -> Repository
Select the “RegoUniversity” folder – Then Select your report
81
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
•
•
•
Now that we have our report selected, click “Edit”
In the Edit dialog, select “Controls & Resources”
You should see your Project Manager input control
Change Display Mode to “In Page” and uncheck “Always Prompt”
Click “Submit”
82
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
•
•
Let run our report!
You should be back in the Repository view within Advanced Reporting
Click on your report to run it!
Notice our Filter on the left
83
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
•
•
Let run our report!
You should be back in the Repository view within Advanced Reporting
Click on your report to run it!
Notice our Filter on the left
84
Clarity Educational Community
Input Controls & Parameters – Cont’d
•
•
We can now test our Filter, and select a project manager to filter on
Voilà!
85
Clarity Educational Community
Advanced:
Multi-Select Input Control
86
Clarity Educational Community
Multi-Select Input Control
•
•
Switching from a Single-Select Query Input Control, is a simple three-step process,
which we’ll now outline
Step One:
– Open the properties for your Parameter “projectManager”
– Modify the “Class” to be “java.util.Collection”, which allows the Parameter to
receive a collection of values
87
Clarity Educational Community
Multi-Select Input Control – Cont’d
•
•
Now that the Parameter is ready to accept multiple values, let’s update our query
to do the same
Step Two:
– Open the Dataset and Query dialog for the report – Navigate to the “Filter
Expression”
– Modify the Filter Expression to filter on all those values contained in the new
Parameter of type java.util.Collection
– ($P{projectManager} == null || $P{projectManager}.size() == 0 ? true :
$P{projectManager}.contains( $F{UNIQUE_NAME} ))
88
Clarity Educational Community
Multi-Select Input Control – Cont’d
•
•
The next step is to update our Input Control, using the Repository Explorer
Step Three:
– After opening the Repository Explorer, navigate to your Project Manager Input
Control
– Right-click and open the “Properties” for the Input Control
– Modify the “Type” to be “Multi Select Query”
– Leave all the remaining settings the same as when it was a Single Select Query
89
Clarity Educational Community
Multi-Select Input Control – Cont’d
•
•
The next step is to update our Input Control, using the Repository Explorer
Step Three:
– After opening the Repository Explorer, navigate to your Project Manager Input
Control
– Right-click and open the “Properties” for the Input Control
– Modify the “Type” to be “Multi Select Query”
– Leave all the remaining settings the same as when it was a Single Select Query
90
Clarity Educational Community
Multi-Select Input Control – Cont’d
•
•
Re-deploy your report to the Jaspersoft Server
Validate the multi-select capabilities!
91
Clarity Educational Community
Advanced:
Sub-Reports
92
Clarity Educational Community
Sub-Reports
•
•
•
Next, we’ll focus on adding a sub-report, which pulls in the risks and issues for each
project
To start, we’ll add a second detail band – Right-click the existing Detail band, in the
outline view, click “Add Band”
A second Detail band will be available in the outline view, and on the report design
view
93
Clarity Educational Community
Sub-Reports – Cont’d
•
•
•
A pre-developed report has been made available at the following location –
Download this to your PC:
– http://jaspersoft.regoconsulting.com/RegoU_Jaspersoft_Deep_Dive_Risks_Iss
ues.jrxml
Right-click on your project folder within the Project Explorer View and click
“Import”
Next, select “File System” under “General” – Click Next
94
Clarity Educational Community
Sub-Reports – Cont’d
•
•
•
•
Click “Browse” and then browse and select the location of the downloaded jrxml
file
Next, in the right pane, check the box for the jrxml file
Then, click “Finish”
The jrxml file should now be imported to your project
95
Clarity Educational Community
Sub-Reports – Cont’d
•
•
•
•
Before we can add the new Report as a subreport, we must “Build” the new report
– Click “Project” from the main navigation – Click “Build All”
Now, we’ll add the subreport to the second Detail band – Drag the Subreport
component from the Palette view, into the new Detail band
On the next window, click “Select a report file…”
Next, select the Risks and Issues report file, and click “Ok” – Click “Finish”
96
Clarity Educational Community
Sub-Reports – Cont’d
•
•
Resize the subreport object to the full width of the report, and 20px in height
Then, resize the band height to fit
97
Clarity Educational Community
Sub-Reports – Cont’d
•
•
•
•
The provided Subreport expects a parameter “investmentID”, which we’ll now
focus on
Select the Subreport in the design view, then, in Properties open the “Subreport”
sub-menu – Click “Parameters”
On the Parameters screen, click “Add”
Change the “Name” to “investmentID”
98
Clarity Educational Community
Sub-Reports – Cont’d
•
•
•
•
•
Next, click on the “…” for the Expression Editor
We’ll be passing the “ID” field, so double-click the “ID” in the “Fields” menu
Click “Finish”
As you can see, we’re now passing “$F{ID}” as “investmentID” to the Subreport
Click “Finish”
99
Clarity Educational Community
Sub-Reports – Cont’d
•
A quick Preview of the report should now result in Risks and Issues pulled into
those projects that contain them:
100
Clarity Educational Community
Sub-Reports – Cont’d
•
•
One final modification we’ll make, is to suppress the second detail band, when
there is no data received
On the Properties view of the selected Subreport, check the “Remove Line When
Blank” option, which will suppress the subreport from taking any whitespace when
no results are given
•
Once changed, preview your report to validate the suppression
101
Clarity Educational Community
Advanced:
Charts & Linked Reports
102
Clarity Educational Community
Charts & Linked Reports
•
•
•
•
•
Now that we have embedded a Subreport, we’ll next focus on linking to another
report, outside of the existing report
Linking can only occur on components that have an Expression Editor. E.g. A Static
Text Field cannot be used to link
For this demo, we’ll be linking from the Total Budget text, to open a Pie Chart with
a breakdown of financial information by transaction class
We’ll have two parts to this demo – 1) Create the Pie Chart Report – 2) Link to the
Pie Chart Report
First, we must convert our Static Text “Total Budget:” field to a Text Field – This is
easily achieved by right-clicking the field, and select “Convert to Text Field”
103
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
•
•
•
First, we’ll create our Pie Chart Report
Right-click on your Project Folder in the Project Explorer – Select New Jasper
Report
Select “Blank A4” – Click “Next”
Rename the jrxml file to something Unique – Click “Finish”
104
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
•
•
Next, prep the report for our chart – Remove all bands except for the Summary
Band – Charts are best placed in the Summary Band due to the order in which data
is processed
Maximize the Band Height – Right-click in the band and select “Maximize Band
Height”
We now have enough room to work on our chart
105
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
•
•
From the Palette, drag a new HTML5 Chart component into the Summary Band
From the Wizard that opens, select “Pie” and click “Ok”
Next, resize the Pie Chart to 400px width x 350px height – Resize the Summary
Band
106
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
•
•
•
•
Now we’ll create a new Dataset specifically for this chart
Right-click on the Report in the Outline view and select “Create Dataset”
Name the Dataset and leave the default selection to use a connection or data
source – Click “Next”
Select the appropriate Database JDBC DataSource
Paste this query into the SQL window:
•
http://jaspersoft.regoconsulting.com/RegoUJaspersoftDeepDiveQuery_FinancialPie.txt
•
Click “Finish”
107
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
•
•
•
•
Next we’ll create the Parameter needed for the Dataset that was just created
Right-click on Parameters (From within the new Dataset)
Select “Create Parameter”
Name the Parameter “investmentID” – “Set Class to java.math.BigDecimal”
– **Be sure to leave “Is For Prompting” enabled
**REPEAT and create the same Parameter for the Report in the Outline View
108
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
•
•
•
•
Now we need to link the passed in Parameter, to the Dataset Parameter
Edit the Chart Properties – Open the Chart Data tab
Select the “Parameters” sub-tab – Click “Add”
Select “investmentID” for the Dataset parameter name
Enter “$P{investmentID}” for the Value Expression – Click “Ok”
109
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
•
•
•
We now have a Dataset, and a Parameter to be passed
Next, Right-click on the chart and edit the chart properties
On the Chart Data tab, select our new Dataset from the “Sub Dataset” menu
Next, Select “Use a Connection expression”, which should default to the report
connection: $P{REPORT_CONNECTION}
110
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
•
•
•
•
•
•
Next, we will configure the chart to display the data from the query
On the Chart Data tab, open the “Configuration” sub-tab
Select the “Level1” category – Click “Modify”
Change Name to “Cost Type”
Change Expression to $F{DESCRIPTION}
Leave Value Class Name “java.lang.String”
Click “Ok”
111
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
•
•
•
•
•
•
Back in the Configuration tab, adjust the Value:
Change Name to “Cost”
Change Label Expression to “Cost” (With quotes)
Change Calculation to “Nothing”
Change Value Expression to $F{COST}
Leave Value Class Name “java.math.BigDecimal”
Click “Ok”
112
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
•
Preview your report to validate
**If no data is received, it may be a result of odd behavior we have seen from
Jaspersoft Studio
– In this case, edit the Dataset and Query of the main report – Paste the query
into the SQL editor, and read in the fields
– Preview your report to validate you have data – If resolved, modify the report
query to “select 1 from dual” to maintain the connection
113
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
•
•
•
Let’s quickly add a Chart Title
In Chart Properties, open the “Title” sub-menu
Change the Title to “Total Cost By Type”
Click “Ok”
114
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
•
•
•
Deploy the report to the Repository to:
– /Organizations/Rego Consulting/RegoUniversity/
When selecting resources to deploy, leave “true” for the deployment of the
investmentID resource – This will create the Input Control the Chart needs to
receive the passed Parameter
Select the appropriate datasource from the Repository
Click “Finish”
115
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
•
•
•
•
•
Now we can link this report from our status report
Open the Project Status Report
Select our converted Text Field of “Total Budget”
In the Properties tab – Select “Hyperlink”
Modify Link Target to “Blank” (Open the link in a new window)
Modify Link Type to “ReportExecution”
116
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
•
•
•
With ReportExecution select, additional options become available
We’ll focus on the Parameters, which is the only required change needed
Click “…” on Parameters
Create a Parameter called “_report”
– The value will be the relative URL from the organization on the Repository
with the ID of the Financial Pie report we deployed
– This can be found by hovering over the report in the Repository Explorer
– In this case: “/RegoUniversity/Financial_Pie”
• Relative to “/Organizations/Rego_Consulting”
•
Create a Parameter called “investmentID” – Value: “$F{ID}”
117
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
•
Re-deploy your Project Status Report to the JasperServer
Be sure to deploy the SubReport as well
118
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
Execute your deployed report, from Advanced Reporting in Clarity
•
As you can see, The Total Budget is now a clickable link
119
Clarity Educational Community
Charts & Linked Reports – Cont’d
•
Clicking on the Total Budget link now opens a new window with the appropriately
filtered Chart data
120
Clarity Educational Community
Advanced:
Linking to Clarity
121
Clarity Educational Community
Linking to Clarity
•
•
•
•
Now that we have a working Pie Chart, let’s link it back to the Project Cost Plan
within Clarity
To start, we need to get the appropriate Clarity PPM URL – Open a new window –
Navigate to Clarity, and the appropriate sub page
Copy the URI (Everything after the domain name), which is provided for you below:
– /niku/nu#action:revmgr.costplanList.project&id=<INVESMENTID>&ui.page.spa
ce=mainnav.work&object_code=project
Next, open the Chart Properties, then open the “Hyperlink” tab
122
Clarity Educational Community
Linking to Clarity
•
•
•
•
Open the Expression Editor
Now we’ll paste the URI that we retrieved in the previous step, with a few
modifications:
The Expression Editor output should be the String URI that we’d like to link to:
– "/niku/nu#action:revmgr.costplanList.project&id="+$P{investmentID}+"&ui.pa
ge.space=mainnav.work&object_code=project"
The above will concatenate the investmentID Parameter that we have available in
the chart, allowing us to link back to Clarity
123
Clarity Educational Community
Linking to Clarity
•
The Preview will not allow you to click the link, therefore, deploy your report to the
server to validate the link is working:
124
Clarity Educational Community
Advanced:
Base64 Images
125
Clarity Educational Community
Base64 Images
•
•
•
•
•
As was noted during the basic report development, reusing images is made easier
if they exist outside of the currently developed report
There is another way, which allows images even greater flexibility – Base64
Encoding
By using the Base64 code of an image within the Image Expression, we can build
the entire report without adding any additional “files” to the project
This carries several benefits:
– Base64 code could be retrieved dynamically from a DB
– Expressions could be built to dynamically represent multiple image outputs
with one Image Expression component
– Avoids server side management of images
This carries few disadvantages:
– Initial learning curve for developers
– Additional effort converting images
126
Clarity Educational Community
Base64 Images – Cont’d
•
•
•
•
The process of deploying a Base64 image is fairly straight forward:
Step 1)
Get the Base64 code for the image file
– There are multiple ways to do this, one free service:
– http://www.askapache.com/online-tools/base64-image-converter/
Select the image, in this case green.png
•
Click Encode/Decode
127
Clarity Educational Community
Base64 Images – Cont’d
•
•
The RAW output will begin with “data:image/<filetype>;base64,”
With this tool, what follows after the “,” is the Base64 code from the image:
128
Clarity Educational Community
Base64 Images – Cont’d
•
•
•
Step 2)
Import the appropriate java class to handle the Base64 encoding
In the “Source” view of your report, add the following line below the “<property>”
tags:
– <import value="org.apache.commons.codec.binary.Base64"/>
129
Clarity Educational Community
Base64 Images – Cont’d
•
•
•
•
Step 3)
Next, we create a Parameter, which can hold the Base64 code that we retrieved
from Step 1
From the Outline view, create a new Parameter, named appropriately, E.g
“img_green” – The Class of this parameter should be java.lang.String
Open the “Default Value Expression”, and paste the Base64 code, surrounded by “”
to signify a String value
130
Clarity Educational Community
Base64 Images – Cont’d
•
•
•
•
•
Step 4)
The final step, places the image into the report – Place a new Image from the
Palette in your report as normal
In the Properties for the image – Open the Image Expression Editor
Place the following code into the Expression Editor:
– new ByteArrayInputStream(new
Base64().decodeBase64($P{img_red}.getBytes("UTF-8")))
Once completed, preview your report, and adjust the image size accordingly
131
Clarity Educational Community
Advanced:
Properties Configuration
132
Clarity Educational Community
Configuration Properties
• Most reporting elements (text fields, charts, bands, etc.) have
additional configuration properties that are not available
through the studio the same way as most common
configuration options are available.
• As a general rule, properties offer “fine tuning.”
– Options that are calculated against the dataset at run time
for better control of report display
– Options for a specific export type (pdf, xml, xls)
• A reference of these additional configuration properties can
be found here:
http://jasperreports.sourceforge.net/config.reference.html
133
Clarity Educational Community
Configuration Properties (Continued)
Example:
• Earlier in the Jasper Reporting session we learned how to
truncate a field to a certain number of characters and append
an ellipsis (…). This was performed by using an expression in
the text field element with a ternary operation to count
characters and either truncate the full string and concatenate
an ellipsis or leave shorter strings alone.
• A similar type of functionality can be achieved with a property.
Both approaches have pros and cons.
134
Clarity Educational Community
Configuration Properties (Continued)
Example (Continued):
• Place the description field on the report and size its height at
the maximum number of rows it should display.
• Unlike the previous example, do not configure the field to
“Stretch With Overflow.”
135
Clarity Educational Community
Configuration Properties (Continued)
Example (Continued):
• With the text field selected navigate to the “Advanced” sub-page of its
properties.
• This sub-page may be “hidden” if studio doesn’t have enough horizontal
space to display it. In this case, click on the “>>” to display it.
136
Clarity Educational Community
Configuration Properties (Continued)
Example (Continued):
• Under the “Misc” section can be found a property called “Property
Expressions”
• Clicking the ellipsis button in the value of this this property brings up a
editing dialogue box.
137
Clarity Educational Community
Configuration Properties (Continued)
Example (Continued):
• Click “Add”
138
Clarity Educational Community
Configuration Properties (Continued)
Example (Continued):
• Input “net.sf.jasperreports.text.truncate.suffix” as the property name.
• Input “…” as the value.
• Click “OK”.
139
Clarity Educational Community
Configuration Properties (Continued)
Example (Continued):
• When the report is rendered any description that would overflow the
bounds of the box is truncated and “…” (the value of the property) is
concatenated to the end of the description.
• Descriptions that don’t overflow the bounds of the box are left
unmodified.
140
Clarity Educational Community
Advanced:
Scriptlets
141
Clarity Educational Community
Scriptlets
• One of multiple ways to add custom development into reports
• Scriptlets are sequences of Java code that are executed when
a report event occurs.
• A scriptlet has a name for itself and a reference to a Java class.
– The Java class must extend one of the following two classes:
• net.sf.jasperreports.engine.JRAbstractScriptlet – This class contains
a number of abstract methods that Jasper will call.
• net.sf.jasperreports.engine.JRDefaultScript – This class contains
empty implementations of every method in JRAbstractScriptlet.
The developer can override the methods he/she requires.
• Additional methods can be written that can be called directly from
reports.
142
Clarity Educational Community
Scriptlets – Cont’d
• List of abstract methods from JRAbstractScriptlet
public void beforeReportInit()
Called before report initialization.
public void afterReportInit()
Called after report initialization.
public void beforePageInit()
Called before each page is initialized.
public void afterPageInit()
Called after each page is initialized.
public void beforeColumnInit()
Called before each column is initialized.
public void afterColumnInit()
Called after each column is initialized.
public void beforeGroupInit(String groupName)
Called before the group specified in the parameter
is initialized.
public void afterGroupInit(String groupName)
Called after the group specified in the parameter is
initialized.
public void beforeDetailEval()
Called before each record in the detail section of
the report is evaluated.
public void afterDetailEval()
Called after each record in the detail section of the
report is evaluated.
143
Clarity Educational Community
Scriptlets – Cont’d
• A report can have any number of scriptlets.
• If no scriptlet is specified in a report the engine still creates a
single JRDefaultScriptlet instance and registers it with the
built-in REPORT_SCRIPTLET parameter.
• You can either add a class to the default scriptlet or specify a
new scriptlet with your class.
• Each scriptlet added to a report automatically creates a
parameter in the report in the following format:
– “<Sriptlet Name>” + “_SCRIPTLET”
144
Clarity Educational Community
Creating Scriptlets
• Right click the “MyReports” folder in your workspace and go
to New -> Project.
145
Clarity Educational Community
Creating Scriptlets – Cont’d
• If you haven’t created a Java project a checkbox to “Show All Wizards” will
be present.
146
Clarity Educational Community
Creating Scriptlets – Cont’d
• Once the checkbox is set you have the ability to create a new “Java
Project.”
147
Clarity Educational Community
Creating Scriptlets – Cont’d
• Create the new project with all of the default settings.
• When Jaspersoft Studio Professional (Eclipse) asks you if you want to open
the Java perspective say yes.
• In the new project a directory for source code was created if you followed
the default settings for project creation.
148
Clarity Educational Community
Creating Scriptlets – Cont’d
• Right click the “src” (source) directory and choose New -> Class.
149
Clarity Educational Community
Creating Scriptlets – Cont’d
• Right click the “src” (source) directory and choose New -> Class.
150
Clarity Educational Community
Creating Scriptlets – Cont’d
• A package may be specified
• A class name must be
specified. In this example
we will use the name
ColorHelper.
151
Clarity Educational Community
Creating Scriptlets – Cont’d
• Fill the class with the following code:
package com.regoconsulting.scriptlets;
import java.awt.Color;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.util.Random;
import net.sf.jasperreports.engine.JRDefaultScriptlet;
public class ColorHelper extends JRDefaultScriptlet
{
/**
* Creates an image filled with a random color
*
* @return an image with a random color
*/
public Image discoMode()
{
BufferedImage image = null;
try
{
152
Clarity Educational Community
Creating Scriptlets – Cont’d
Random r = new Random();
Color c = new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256));
image = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
for (int i = image.getWidth() - 1; i > -1; i--)
{
for (int j = image.getHeight() - 1; j > -1; j--)
{
image.setRGB(i, j, c.getRGB());
}
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
return image;
}
}
153
Clarity Educational Community
Creating Scriptlets – Cont’d
• From the report outline right click “Scriptlets” and click “Create Scriptlet”.
154
Clarity Educational Community
Creating Scriptlets – Cont’d
• Any value can be chosen for the name but this value will be used to create
a parameter so this name is important.
• For the class specify the package and class you created in the previous
steps.
• HINT – I have often noticed that the parameter is not created until I click
on the source tab of the report and then save the report.
155
Clarity Educational Community
Creating Scriptlets – Cont’d
• Drag an image into any section of the report. In this example, the report
has a query that will return 3 results so three different image colors are
possible if using the detail band.
• When the image is created choose “No image.” We will be modifying the
image expression.
156
Clarity Educational Community
Creating Scriptlets – Cont’d
• In the image properties modify the expression to point to the new scriptlet
and method. In this example, since the scriptlet’s name is ColorHelper a
parameter was created with the name of ColorHelper_SCRIPTLET.
• Set the “Scale Image” property to “Fill Frame.”
• HINT – For this type of styling to be effective the image must be set to fill
the entire detail band and must be pushed to the back of all elements.
157
Clarity Educational Community
Creating Scriptlets – Cont’d
• When the report is viewed the image color will be randomized giving each
detail band a random color. Here is the report ran twice.
158
Clarity Educational Community
Deploying Scriptlets
• To deploy a scriptlet a jar file must be created. This is done by right clicking
the scriptlet project and choosing Export.
• The export destination will be a JAR file.
159
Clarity Educational Community
Deploying Scriptlets – Cont’d
•
In this example we will export the
jar file back to the reports project
into a directory called “libs” for
reuse.
•
You may have other packages
and/or classes to deploy and they
can be contained in the same jar if
desired.
160
Clarity Educational Community
Deploying Scriptlets – Cont’d
• The report will run correctly as long as this jar is in its build path. There are
two ways of accomplishing this.
• If access to the jasperserver is available then the jar can be added to
path. This method won’t be available to on-demand clients.
• A file resource can be created on the jasperserver. This is done
through the repository and (we believe) will be the only option to ondemand clarity users.
161
Clarity Educational Community
Deploying Scriptlets – Cont’d
• From the repository of the server create a new folder called “Libraries”. Do
this by navigating down to the organization and right clicking. Then choose
“Add Folder.”
162
Clarity Educational Community
Deploying Scriptlets – Cont’d
• To create the file resource, right click the Libraries folder you just added
and navigate to Add Resource -> File -> JAR.
163
Clarity Educational Community
Deploying Scriptlets – Cont’d
• To create the file resource, right click the Libraries folder you just added
and navigate to Add Resource -> File -> JAR.
164
Clarity Educational Community
Deploying Scriptlets – Cont’d
• In “Path to File” choose the jar file you exported previously. Then click
“Submit.”
165
Clarity Educational Community
Deploying Scriptlets – Cont’d
• Now that the file resource exists it must be placed in the build path of the
report. This is done by adding a link to the file resource to the report.
• Right click the report from the repository and choose “Edit.”
166
Clarity Educational Community
Deploying Scriptlets – Cont’d
• In the “Controls & Resources” section click on the “Add Resource” link.
167
Clarity Educational Community
Deploying Scriptlets – Cont’d
• Choose to add a resource from the repository. Browse to the
ColorHelper.jar resource we just uploaded.
• Click “Next.”
168
Clarity Educational Community
Deploying Scriptlets – Cont’d
• Any name and ID can be given to the resource link. This name and
resource will appear in the local directory of the report as a link to the jar
file in the “Libraries” folder of the repository.
• HINT - Be sure to click “Submit” after the resource is added.
169
Clarity Educational Community
Questions
We hope that you found this session
informative and worthwhile. Our
primary goal was to increase your
understanding of the topic and CA
PPM in general.
There were many concepts covered
during the session, if you would like to
contact any presenter with questions,
please reach out to us.
Phone
888.813.0444
Email
info@regouniversity.com
Website
Thank you for attending
regoUniversity 2015!
www.regouniversity.com
170
Clarity Educational Community
Appendix
171
Clarity Educational Community
Items of Interest
•
•
•
•
•
•
•
Use free layout to avoid Jaspersoft Studio reformatting your report
Use a standard parameter and variable naming conventions
Maintain the same folder structures locally when developing for easy report
migration
Create multiple detail bands if you have multiple charts
Frequently build and clean the cache of the project in Studio to avoid
inconsistencies and issues
Maintain a centralized location for report resources such as images, sub-reports,
queries, input controls with the JasperServer repository to promote reusability
Ensure the data warehouse is refreshed regularly, as OOTB Jaspersoft components
like reports and input controls are heavily dependent on it
172
Clarity Educational Community
Download