<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Technology Bits and Bytes &#187; sheshagiri.sn</title>
	<atom:link href="http://blogs.circlesource.com/author/sheshagirisn/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.circlesource.com</link>
	<description>CircleSource Technical Talent ShowCase</description>
	<lastBuildDate>Thu, 10 Dec 2009 20:01:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Advantage of Reporting Framework</title>
		<link>http://blogs.circlesource.com/2009/01/31/why-reporting-framework-is-required/</link>
		<comments>http://blogs.circlesource.com/2009/01/31/why-reporting-framework-is-required/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 19:07:13 +0000</pubDate>
		<dc:creator>sheshagiri.sn</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[jasper]]></category>
		<category><![CDATA[reporting framework]]></category>
		<category><![CDATA[SQL server reporting service]]></category>
		<category><![CDATA[SSRS]]></category>

		<guid isPermaLink="false">http://blogs.circlesource.com/?p=195</guid>
		<description><![CDATA[Most of the reporting engine libraries or tool (like JasperReports, SQL server reporting services) are bundles with useful apis or utilities to generate the reports based on report design files (like .jrxml files, rdl file). These apis take data source, compiled report file, and other report parameters (i.e export type options like pdf/csv/excel/html, report type [...]]]></description>
			<content:encoded><![CDATA[<p>Most of the reporting engine libraries or tool (like JasperReports, SQL server reporting services) are bundles with useful apis or utilities to generate the reports based on report design files (like .jrxml files, rdl file). These apis take data source, compiled report file, and other report parameters (i.e export type options like pdf/csv/excel/html, report type options like charts/drilldown reports etc). There are useful report designer applications which help us creating report design files. For example, JasperReport reports can be designed using iReport or JasperAssistant; SQL server reporting services provide report builder, report designer tool build with visual studio.<br />
Every report generation basically needs the following information<br />
•	Compiled report design files<br />
•	Data Sources (Type of the data source like xml, resultsets, pojo objects and also datasource creation for each report based on report filters)<br />
•	Report Filters (usually input by the users). This may additionally include sorting, grouping and pagination information<br />
•	Report type (charts/tabular/drilldown etc)<br />
•	Export type (export formats like excel/pdf/csv/html usually selected by the user)<br />
•	Report parameters (usually input by the user or input by system at runtime like report creator name/ timestamp etc). The report parameters also include headers, footers and summary.<br />
Every report relies on data source (dynamically built based on report filters) and report parameters collected from input or system.<br />
Reports are usually launched by the user using report filter screens or reporting feature can be a regular feature in most of the search screens to send the search results as report.  From report launch to report generation, user has to go through complex reporting logic to generate the required report using the reporting engine’s api.<br />
So considering the complex logic of generating the each report, we can design a reporting framework where user will concentrate on important tasks of creating report design files and datasource and rest all other things can be handled by the reporting framework. This reporting framework will be a subset of main application framework and will take advantage of security features from main application framework.<br />
<strong></strong></p>
<p><strong>Advantage for developing against a reporting framework:</strong><br />
<strong></strong></p>
<p><strong>Development Efficiency</strong><br />
Most of the tedious reporting logic is written once and encapsulated in a reusable reporting component. Instead of copying the code from page to page or starting from scratch, we can leverage the reusable component whenever needed. This speeds up the report generation significantly which will help in meeting the project deadlines and keep the project on time and on budget.</p>
<p><strong> Accuracy</strong><br />
As speed increases, accuracy normally decreases. Coding against a framework allows us to create reports faster without adverse effects on accuracy. Because most of the complex reporting logic is encapsulated in reusable component, the errors will be less as we are touching less code.<br />
<strong>Consistency</strong><br />
Using a reporting framework also ensures all the report pages are consistent.  In absence of reporting framework, every user may use different method of creating reports there by creating inconsistency in report generation process and also report content. Consistency is imperative for user experience.<br />
In general, reporting framework will give following features</p>
<ol>
<li> Standard way to collect the input (for both data source and report parameters) for the report in the form of report filters (implemented as bean, data models or datasource).</li>
<li>All these report filters will implement a standard interface or extend from an abstract class. (In case of web applications, we can have a separate report servlet to handle this input collection and forwarding the request.)<br />
Input forms are still specific to each report and they initiate the report generation process in report framework.<br />
User has to give data source implementation for each report based on input filter but this is handled in a consistent way.</li>
<li>User has to specify the report design files for each type of report and export allowed and reporting framework has to dynamically find this based on the report type and export type. These things can be externally configured using property files.</li>
<li>Reporting framework has to set the data source and report parameters (standard one’s like report creator/timestamp/any standard headers/footers/summary and any user supplied report parameters specific to the report being generated.)</li>
<li>The report design files can be compiled each time or cached by the reporting framework.</li>
<li>Finally, the reporting framework has to call the report engine’s api to generate the report and show to the user in the export format requested by the user.</li>
<li>In addition to this, to handle the complex reports, report framework can also include support for handling sub reports in a consistent way.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blogs.circlesource.com/2009/01/31/why-reporting-framework-is-required/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
