Plug In 2 BIRT Contest - Spring 2013 Ends Soon
Posted by
mwilliams
, 26 April 2013 - 08:33 AM
Any eligible entry is in the running to win an iPad®. We'll be giving three away, so there are multiple chances to win! Good luck! We look forward to seeing your entry!
Creating Derived Cube Measures and More with BIRT and ActuateOne
Posted by
mwilliams
, 14 March 2013 - 05:46 AM
Gone are the days when BIRT Data Analyzer users and BIRT report authors are forced to define derived measures on their own. In Actuate 11 SP4, the data cube author can define the needed derived measures based on other measures from the cube, allowing the cube consumer to use them as if they are normal, non-derived measures. They won't be able to notice a difference.
On top of that, the new derived measures don't increase the size or generation time of the cube. Unlike a normal cube measure, derived measures are only computed when they are used, allowing you to save some processing time, when a measure is not used. The learning curve on this is very small, as well. The only difference between creating a standard cube measure and a derived cube measure is that the "Is Derived Measure" checkbox must be checked, as seen in the image below.
Have you ever filtered a table or crosstab, but then wanted to do a calculation based on the entire result set? For example, say you had a table with sales by country, but wanted to only show the top 10, so you put a filter on the table. Now, you want to figure out the percent of total sales for each of these countries. In past versions, with the filter, you could no longer do a calculation like this, over the entire, original result set. Well, now you can.
In 11 SP4, BIRT Designer Pro table and crosstab filter dialogs now allow for totals to not be recalculated to exclude the filtered values. In BIRT Data Analyzer, the filter dialogs also have the option to control whether the totals should be recalculated or not, when a crosstab is filtered.
Another enhancement made is to the expression builder for creating new computed columns in both the Interactive Viewer and BIRT Data Analyzer. The provided functions are now categorized into different groups, like Math, Financial, Text, etc. Additional functions have also been added to both products. Some of the new functions included are:
- %OF - calculates the percentage for the selected column value in the scope of the selected base group. For the selected column value, the base group can be other column values, Aggregations like Group Total, Grand Total etc.
- %OF DIFFERENCE - calculates the percentage of the difference between values in two numbers
- RUNNINGSUM - Calculates the running total for the selected Column at the specified base group level
- RANK - Calculates the rank for the Column value at the specified level and in specified direction

Creating filters in BIRT Studio also gets easier. The BIRT Studio Table Builder Wizard adds functionality to help users the option to easily define complex, composite filters. Related to this is a performance enhancement for BIRT Studio. Filters defined in the Table Builder Wizard are pushed to the underlying database, in all possible cases, allowing for data to be more efficiently filtered at the source.
With Actuate 11 SP4, BIRT Designer Pro also adds the capability to define which table groups start expanded or collapsed, depending on the granularity needed by creating a Named Expression called “__ac_group_collapse_level” on the containing table. The value is a comma separated list of the groups that are to start collapsed. 1 is starting value for the most outer group. The expand/collapse operations are also more efficient than ever, as they are handled completely on the client side, now, with no calls to the server.
Last, but not least, report authors using BDPro can now use aggregation fields in a table's sort key expression.
Thanks for reading. Next time, I'll talk about the feature upgrades for data connectivity and the iHub. In the meantime, download a free trial version of Actuate BIRT iServer and BIRT Designer Pro, to check it out for yourself.
Drop Elements Depending on Output Format
Posted by
mwilliams
, 08 March 2013 - 06:34 PM
if(reportContext.getOutputFormat() == "xls"){
reportContext.getDesignHandle().findElement("elementName").drop();
}
This works as you would expect, for most outputs. However, when you try this for pdf, while it does drop the correct element when you run the report in pdf, it also drops the element when you run the report in the web viewer. This is because getOutputFormat returns pdf when you run your report with the web viewer.
Luckily, there is a way around this. You also have access to the HttpServletRequest, so if you use a script like the following, in your beforeFactory, the correct format will be returned.
if(reportContext.getHttpServletRequest().getAttribute("attributeBean").format == "pdf"){
reportContext.getDesignHandle().findElement("elementName").drop();
}
With this method, we now see that the web viewer is actually HTML and the correct element is dropped from the report.
This solution will only work in open-source BIRT, as the HttpServletRequest is not available in the commercial version. The sample report used in this post can be downloaded here.
Solving a TOC Bookmark Issue by Using Multiple Fields in a Single Group Expression
Posted by
mwilliams
, 15 February 2013 - 09:51 PM
The question that inspired the blog post was actually about an issue with the table of contents (TOC). In the designer, when you group your table, a TOC entry is automatically created, if you simply select a field from the drop down. When you run your report to the web viewer or to PDF, there will be a bookmark link in the TOC to allow you to jump right to your grouping. The image below shows the group editor TOC expression and the corresponding TOC entries in the PDF.
But what if you don't want a TOC entry for a group, like our question poster? A bug fix back in BIRT 2.2.0 created a solution for this issue. If you leave the TOC entry expression blank, the group won't appear in the TOC. In this example, we'll remove the TOC expression shown above and you'll see that the orders bookmark no longer appears in the PDF output.
That's great. So, problem solved, right? Hold on, just a minute. In the question asked, the poster wanted to hide the middle group, but show the grouping below that one. If we go back to our example and re-add the orders TOC expression and remove the expression for the customer group, instead, all of a sudden we have an issue. The TOC show's the grouping, but just doesn't have a value next to it. You can see what I'm talking about in the image below.
This probably isn't going to be acceptable for hiding the TOC entry. So, what do we do now. Well, one possible solution to get around this is to join the group you're wanting to hide, with the group below it. In our example, we'll delete the orders group and write a group expression that uses both fields in the customers group.
row["CUSTOMERNAME"] + "-" + row["ORDERNUMBER"];
Now, for the TOC expression, we can simply use the inner grouping field, since we're not wanting to see the customer group. You can see the values I entered in the image below.
After accepting the changes to the group, we only have a couple cosmetic issues to take care of to get the exact same report look as before. I added a second row for the group and moved the order info into it, like it was before. I also changed the styling of this row to match the way it was before.
Also, now that we don't have a separate group for the customername, it will repeat for each order. To fix this, we write a little script to only show the customer name when the value changes. Now, when we preview the report, we have what we were wanting.
Being able to write expressions for different things within BIRT allows you to work around many of the issues you encounter. There are many of them around that come in very handy when customizing your report designs.
Thanks for reading. The example used in this blog can be found in the devShare. If you have any questions, feel free to ask them in the comment section, below.
Visualizing the Impact of Database Changes with BIRT and ActuateOne
Posted by
mwilliams
, 17 January 2013 - 12:50 PM
To help soften the blow, Actuate 11SP4 introduces new Impact and Dependency Analysis capabilities. This allows the developer to identify what applications and content must be updated with the change to the database schema, giving a much clearer picture on the cost and resources needed to complete the update, before it even begins. Additionally, such analysis allows the development team to easily identify which BIRT designs depend upon certain libraries, Information Objects, or Data Object, to easily assess the impact of updating or removing these resources.
The Database Search also allows BIRT developers to easily identify files that use and are dependent on the selected database component. With a couple clicks of the mouse, a BIRT developer can access a diagram, showing the dependency tree, for the project. The diagram also highlights the dependency path from the selected BIRT item, to all other items that would be affected by a change to this element.
The dependency Impact Analysis view can also be invoked by clicking on any file in the Outline view of the BIRT designer, such as a BIRT design, a Data Object, an Information Object, BIRT Library, etc. This gives the developer another way to access the dependency analysis information for a given file, before making any changes.

Another new feature, in Actuate 11SP4, is the ability to create and preview Information Objects within BIRT Designer Pro, rather than having to deploy them to a BIRT iServer as part of the authoring process. BIRT developers will still have the familiar experience they're used to, when creating the Information Object, they just no longer have to specify an iServer, though, Information Objects published to an iServer will still be available when creating designs, just like in the past. Also, to make things easier on the developer, report designs and Information Objects no longer have to be created in separate projects, allowing the BIRT developer to create Information Objects and the designs that consume them, at the same time, as part of the same project.
Publishing to your BIRT iServer, in Actuate 11SP4, has also been made easier, providing a single BIRT Designer Pro dialog for publishing your designs and resources. The dialog allows BIRT developers to choose the files they'd like to publish and also choose whether or not they should overwrite the previous version, if it exists, already, on the server. Publishing to the iServer isn't the only thing that's gotten simpler. BIRT Designer Pro also provides a new download dialog to download published or user created content, for re-use or enhancement.
Next time, I'll show how Actuate 11SP4 enhances the usability of the BIRT product line. In the meantime, download a free trial version of Actuate BIRT iServer and BIRT Designer Pro, to check it out for yourself.
Actuate's 11SP4 Release Provides Many Powerful New Capabilities, Including HTML5 Charts and more!
Posted by
mwilliams
, 30 October 2012 - 05:15 PM
- HTML5 charts to enable consistent user experience and enhanced interactivity across conventional and mobile platforms
- New data source types, such as, Hadoop and Salesforce.com
- Impact and dependency analysis to ease develpment and management of applications
- Simplified publishing to the BIRT iServer
- Performance Optimization in BIRT Studio and Information Objects
- Relative time period support, enabling more powerful and dynamic comparisons across time
- and more...
One of the more major enhancements, of the bunch, is that all commonly used BIRT chart types now support HTML5 output format, along with the existing formats, SVG, JPG, PNG, and BMP. Catching your user's attention will be easier than ever with the out-of-the-box animation effects and new levels of interactivity. Custom animation effects and interactivity can also be defined, through scripting, making being forced to rely on pre-determined visualizations, a thing of the past.
Adding an HTML5 chart to your report is easy. Simply drag a chart from the palette, into your report layout, as you've always done. Only, choose HTML5 from the dropdown, instead of one of the other supported formats. Upgrading charts to HTML5, from one of the existing formats can be done by changing this same setting.
Making this change exposes the HTML5 chart specific properties, allowing you to preview the chart animation effects in the preview window of the chart builder. A script tab is now present in the chart builder, where custom animations, for HTML5 charts, are scripted. This script tab is also available with the other formats, for convenience of seeing everything in one place. Starting in 11SP4, theme functionality is available for all chart-specific formatting properties, like legend formatting, chart title formatting, etc. These themes can be used across all charts to give a common look/feel to your BIRT visualizations. The themes can also be exported to a library for reusability.
Next time, I'll detail how developer productivity will get a boost with Actuate 11SP4. In the meantime, download a free trial version of Actuate BIRT iServer and BIRT Designer Pro, to check it out for yourself.
Getting a Marker in the Middle of a Gantt Chart Bar, Multi-Level HTML List Numbering, and more...
Posted by
mwilliams
, 24 September 2012 - 07:11 PM
The first post, for this week, is about placing a marker in the middle of a gantt series bar. The poster wanted to be able to have a marker in the middle of a gantt chart bar, that was not at the beginning or the end. A gantt chart only has the option to have a marker at the beginning or end of a series. An example is provided that shows how two series can be used to make it appear as if there is a marker in the middle of the bar.
The next post, for this week, is about getting multi-level numbering in html lists. The poster wanted to be able to take an HTML list like:
<ul class="numericbullets">
<li>Cats</li>
<li>Dogs
<ul>
<li>Birds</li>
<li>Rats
<ul>
<li>Birds</li>
<li>Rats</li>
<li>Rats</li>
<li>Rats</li>
</ul>
</li>
</ul>
</li>
<li>Rabbits</li>
<li>Ants
<ul>
<li>Lions</li>
<li>Rats</li>
<li>Rats</li>
<li>Rats</li>
</ul>
</li>
<li>Ducks</li>
</ul>
and make it look like:
1. Cats
2. Dogs
2.1 Birds
2.2 Rats
2.2.1 Birds
2.2.2 Rats
2.2.3 Rats
2.3.4 Rats
3. Rabbits
4. Ants
4.1 Lions
4.2 Rats
4.3 Rats
4.4 Rats
5. Ducks
The needed CSS styles to make this happen were failing to upload into the design. The solution that was found to work was to take the css styles:
ul.numericbullets { counter-reset:section; list-style-type:none; }
ul.numericbullets li { list-style-type:none; }
ul.numericbullets li ul { counter-reset:subsection; }
ul.numericbullets li ul li ul{ counter-reset:subsubsection; }
ul.numericbullets li:before{
counter-increment:section;
content:counter(section) ". ";
}
ul.numericbullets li ul li:before {
counter-increment:subsection;
content:counter(section) "." counter(subsection) " ";
}
ul.numericbullets li ul li ul li:before {
counter-increment:subsubsection;
content:counter(section) "." counter(subsection) "." counter(subsubsection) " ";
}
and place them in style.css in webcontet -> birt -> styles. This style sheet is used in run and frameset. It won't work with preview, so don't be worried if you don't see this in any output that uses the preview option.
Here are a few more :
- Invalid Design file
- dataset parameters disappear
- Create Global Function
- Calculate between rows
- Named parameters in DataSet Query
Here are a few unanswered posts, from last week:
- How to connecting to database during param validation
- Cross Tab -data not to sort alphabetically
- Can I flip the origin of bar chart?
- Flat file on iServer
- Exporting report with 'https' images
If you have a suggestion or solution for any of these, please post in the thread!
Thanks for reading this weeks blog! Again, this is just a small sample of what went through the forums this past week. For more questions and answers that have been posted, check out the forums. As always, if you have a question, feel free to ask it, and if you see a question you know the answer to or have a similar experience to, feel free to post an answer or comment.
Switch to a Default Table if no Values Returned in Query, Parameterize the From Portion of an SQL Query, and more...
Posted by
mwilliams
, 17 September 2012 - 06:45 PM
The first post, for this week, is about showing a default result set if the main one is empty. The poster wanted to be able to show a default table if the parameter entered by the user returned no results. An example is posted in the thread that shows how to set the visibility of the two tables based on a variable that is set in the onFetch of the parameterized dataSet.
The next post, for this week, is about how to parameterize the from portion of an SQL query. The poster wanted to be able to use a parameter value to choose which table to use in the from portion of an SQL query. The solution provided was to use the report parameter in the beforeOpen of the dataSet, like:
this.queryText = "select * from " + params["myparameter"];
Here are a few more :
- Why so many date-time datapoints on chart?
- how to get a chart svg output as an object
- Dynamic Report Based on User Selection
- Cant Startup the OSGI Framework in BIRT
- Serial number for newspaper columns
Here are a few unanswered posts, from last week:
If you have a suggestion or solution for any of these, please post in the thread!
Thanks for reading this weeks blog! Again, this is just a small sample of what went through the forums this past week. For more questions and answers that have been posted, check out the forums. As always, if you have a question, feel free to ask it, and if you see a question you know the answer to or have a similar experience to, feel free to post an answer or comment.
Adding Text to an Image, Using Table Data for a Crosstab's Data, and more...
Posted by
mwilliams
, 10 September 2012 - 05:42 PM
The first post, for this week, is about adding text to an image. The poster wanted to be able to add text to an image, within BIRT. One option could be to use the image as a background image on a grid or text element. The poster wasn't able to use this method, because background images don't export to Excel. Another solution that adds the text to the image, in script, using the image data, is attached in the forum thread.
The next post, for this week, is about using a table's output as input to a crosstab. The poster wanted to be able to feed the final results of their table to a crosstab. An example is posted in the thread that shows how to grab the table data and use it in a scripted dataSet that is used to build the cube.
Here are a few more :
- Optional grouping breaking pie chart
- onclick on a image
- Need "get started" for birt charting api
- Exception java.lang.NoSuchMethodError
- [chart]Mixing stacked and unstacked bars
Here are a few unanswered posts, from last week:
- How to use jquery or other javascript frame work in BIRT for client side scripting
- Stored procedure not returning expected data
- Birt chart overriding Birt report style
- Using ReportEngine in a Java Applet
If you have a suggestion or solution for any of these, please post in the thread!
Thanks for reading this weeks blog! Again, this is just a small sample of what went through the forums this past week. For more questions and answers that have been posted, check out the forums. As always, if you have a question, feel free to ask it, and if you see a question you know the answer to or have a similar experience to, feel free to post an answer or comment.
Only Highlight Bars of a Certain Series in a Chart, Reordering a Table's Columns, and more...
Posted by
mwilliams
, 03 September 2012 - 05:16 PM
The first post, for this week, is about highlighting bars in a single series of a chart, only. The poster was using script in the beforeDrawDataPoint to color their data point. The problem is that they were highlighting all series, not just the one they wanted. The solution to this is to check the series with dph.getSeriesDisplayValue() before setting the color.
The next post, for this week, is about reordering columns in a table. The poster has a table already in their design, but they'd like to reorder the columns based on a condition. An example is provided in the forum thread with beforeFactory code that switches the order of columns in a table based on a parameter.
Here are a few more :
- Alternating row background color in Crosstab
- Using numeric values from a data set in a global Variable
- How to Sort a chart on Dates
- Integrating Maximo reports into Birt Viewer
Here are a few unanswered posts, from last week:
If you have a suggestion or solution for any of these, please post in the thread!
Thanks for reading this weeks blog! Again, this is just a small sample of what went through the forums this past week. For more questions and answers that have been posted, check out the forums. As always, if you have a question, feel free to ask it, and if you see a question you know the answer to or have a similar experience to, feel free to post an answer or comment.
Recent Entries
Creating Derived Cube Measures and More with BIRT and ActuateOne
Drop Elements Depending on Output Format
Solving a TOC Bookmark Issue by Using Multiple Fields in a Single Group Expression
Visualizing the Impact of Database Changes with BIRT and ActuateOne
Actuate's 11SP4 Release Provides Many Powerful New Capabilities, Including HTML5 Charts and more!
Getting a Marker in the Middle of a Gantt Chart Bar, Multi-Level HTML List Numbering, and more...
Switch to a Default Table if no Values Returned in Query, Parameterize the From Portion of an SQL Query, and more...
Adding Text to an Image, Using Table Data for a Crosstab's Data, and more...
Only Highlight Bars of a Certain Series in a Chart, Reordering a Table's Columns, and more...
My Blog Links
Recent Comments
- mwilliams on Drop Elements Depending on Output Format
- donino on Drop Elements Depending on Output Format
- mwilliams on Creating a BIRT report as a calendar view
- lnallamalli on Creating a BIRT report as a calendar view
- For Birt on Last Week in the Forums: BIRT and R Statistical Language, Specified Sort Order for a Table, and more...
- Bhanwar on Last Week in the Forums: Filtering Blank Spaces from Distinct Count Aggregation, Adding a Line at 0 in a Chart with Negative Values, and more...
- Srividya Sharma on Sorting a Crosstab by a Field Not Displayed in the Crosstab
- mwilliams on Last Week in the Forums: Using the Concatenate Aggregate, Hiding a Column When There is No Data, and more...
- java032 on Last Week in the Forums: Using the Concatenate Aggregate, Hiding a Column When There is No Data, and more...
- java032 on Last Week in the Forums: Using the Concatenate Aggregate, Hiding a Column When There is No Data, and more...
0 user(s) viewing
0 member(s)
0 anonymous member(s)
Categories
- .rptdocument
- 11 SP4
- Actuate
- ActuateJavaComponent
- ActuateOne
- aggregating data
- aggregation
- alignment issues
- Alternating Highlight
- archived BIRT versions
- area chart
- axis label
- barcodes
- batch file
- BDPro
- BIRT
- BIRT Exchange
- BIRT functions
- BIRT Studio
- BIRT-Exchange
- bookmarks
- border
- border color
- bursting
- calendar
- cascading parameter
- CEAPI
- cell border
- chart
- charting
- charts
- color
- color codes
- command line
- computed column
- connection profile
- contest
- crosstab
- CSS
- CSV
- CSV export
- custom group
- custom sort
- Data Analyzer
- data cube
- Data Object
- data point label spacing
- data row security
- data set filter
- data set parameters
- dataset parameters
- Date Format
- deapi
- deploy
- devShare
- display name
- drop
- drop series
- dynamic chart
- dynamic chart labels
- dynamic chart marker
- dynamic chart scale
- dynamic chart title
- dynamic column sort
- Dynamic Column Visibility
- dynamic data set
- dynamic grid content
- dynamic grouping
- dynamic labels
- dynamic min/max
- dynamic scale
- Dynamic Text
- Dynamic Width
- Eclipse
- elapsed time format
- embedded grid
- empty csv error
- Event Handlers
- exception handling
- export data
- expression builder
- filter
- Firefox
- flash map
- Forum
- Forums
- fragmented schema
- gantt
- gantt chart
- global function
- GMT date
- grids
- group numbering
- grouping
- hide label
- hide measure detail
- hide series
- Hierarchy
- hierarchy report
- highlight
- highlight negative numbers
- HTML
- HTML listbox
- html lists
- HTML select form
- HTML Table
- HTML5
- https
- hyperlink
- image
- Impact Analysis
- Import Elements
- Ineractive Viewer
- Information Objects
- Interactive Viewer
- invalid dates
- iServer
- JAX-WS
- joint data set
- jquery
- jsapi
- JSF
- JSP
- legend
- legend color
- Library
- line height
- locale
- localization
- marker range color
- master page
- masterpage
- Maximo
- merge data
- multi-line text
- multi-select parameter
- multi-select parameters
- multi-value parameter
- multiple series
- NetWeaver
- newspaper
- newspaper layout
- optional y-series grouping
- osgi
- overlaying elements
- page break
- parameter
- parameters
- parameters in query
- PDF Complete
- Perl
- Pie Chart
- plug-in
- postgresql encoding issue
- progress bar
- property file
- R Statistical Language
- refresh report
- relative path
- reorder table
- report engine
- report viewer title
- reporting
- Reports
- Rolling Sum
- rotated text
- rptdesign
- rptlibrary
- runtime
- scatter plot
- script
- scripted dataset
- scroll bars
- Seam
- secure connection
- series color
- series name
- session variable
- sort
- Sort Order
- SP4
- special characters
- SQL
- SQL injection
- stacked bar
- stored procedure
- Styles
- Sub Report
- summing values from two different elements
- SVG
- table
- table footer
- Themes
- TOC
- TOC with page numbers
- tomcat
- Tooltip
- transient report cache
- truncated text
- user parameters
- Vaadin
- value-of format
- version features
- Viewer
- viewer title
- visibility
- Web Service
- web viewer
- Webshpere
- Word
- xls
- XML data source


