Skip to main content
Jump to: navigation, search

Difference between revisions of "BIRT/FAQ/Report Layout"

(No difference)

Revision as of 11:48, 10 July 2006

Back to BIRT FAQ Index

Report Object Model (ROM)

Q: What is the ROM?

ROM stands for "Report Object Model." It is the model (or specification) behind BIRT report elements. Just as HTML, CSS and SOAP are standards separate from an implementation, so ROM is a model separate from the BIRT implementation.

ROM is the model behind the palette items, property dialogs, methods and so on. ROM consists of a set of core elements, and rules for adding extended elements.

Elements can have properties. Properties have a type. Property types include simple ones such a string, number, dimension and so or. Property types also include complex ones such as structures, lists, and lists of structures. For example, static text is defined as a structure with text and a resource key for internationalization.

Elements can fit together using "slots". Each element has named slots. For example, the report element has slots for the layout (body), for styles, and so on.

Elements can have methods & expressions (code). These are specialized forms of properties.

In a later release, elements will be able to inherit from another element. This will allow reuse. For example, you can define a data source in a library, and use it in multiple report designs.

ROM provides styles and style properties. ROM's style system is based on CSS, extended for use within a report. Users can create their own styles, or can use many predefined styles. Predefined styles in ROM select specific report items. For example, the "report" style sets defaults for the entire report. As in CSS, styles cascade. Style information set on a container element cascades to its contents.

To learn more about ROM, read the ROM Specifications located in the reference area of this web site.

Q: What is the XML design file?

BIRT stores your report design in a "design file." This file is in XML format and has a ".rptdesign" suffix. The XML design file is created by the BIRT designer and directly executed by the BIRT engine; there is no compilation step.

Q: What is the ROM schema?

The BIRT XML design file is defined by an XML schema. At present, the schema is located in the BIRT source code in the project in the src\org\eclipse\birt\report\model\parser\design.xsd file. Eventually, it will move to a well-defined location on the Eclipse web site.

The schema is designed to allow extensions. The schema defines syntax that allows extensions to be added to BIRT without making changes to the actual schema. For example, an extended item uses the following tag:

<extended-item name="extension">

Properties are in a generic form:

<property name="propName">value</property>.

In this sense, the schema describes a syntax for representing report elements in general. The schema does not list the properties, for example; that is defined in a separate rom.def file that is derived from the ROM specification.

Q: What is rom.def?

The ROM schema defines the syntax for the XML design file. The specific set of ROM-defined elements, their slots, and their properties are defined by a separate internal metadata file called rom.def. This file is in the BIRT source code in the in the src\org\eclipse\birt\report\model\elements\rom.def file.

Rom.def contains the information that drives the generic property sheet by defining properties and property types. It also describes JavaScript objects defined by BIRT and other meta-data.

The metadata subsystem of the BIRT model provides a Java API to access this information. Data Display

Q: How do I display page numbers in HTML or PDF?

BIRT uses Apache FOP to convert a report to PDF. FOP does pagination and assigns page numbers. As a result, there is no JavaScript expression you can use to get the current page number. Instead, BIRT will add a new "page number" element. It will include a special marker string that tells BIRT or FO where to insert the page number. BIRT will interpret the string when converting to HTML, and will convert the marker to the required FO syntax when converting to PDF using FOP.

The element will allow you to say something like:

Page $page of $count

At runtime, this will be replaced by:

Page 1 of 5

Release 1.0M2 Note: The page number element has not yet been released. Syntax is still subject to change.

Q: How do I display today's Date?

Add a data item. For the expression, enter:

new Date( );

Then, in the Format page of the Property Editor, choose the date format you prefer, such as Medium Date for a display of Apr 15, 2005.

Q: How do I display the row number?

Suppose you want to display a list of items, along with the row number of each. BIRT provides the row variable that gives data for the current data row. row[0] provides the 0-based row index. You can display a 1-based count as follows:

row[0] + 1;

Back to the top