2009-08-04 77 views
5

我正在考慮將JasperReports嵌入到現有的Web應用程序中進行報告。 Web應用程序位於現有的古老而複雜的數據庫之上,並且不適合報告編寫者用於直接編寫報告。JasperReports和自定義數據源

我想看看的是在我們現有的數據訪問層上編寫某種包裝(,使我們的生活更容易與上述古老而複雜的數據庫對話)。有沒有人有爲JasperResports編寫自定義數據源的經驗,或者做過類似的事情?

更新

我想我可能不是我的問題明確的 - 這可能是因爲我的要求不明確要麼。我想提供一些方法,讓最終用戶可以使用像iReport這樣的東西來創建針對數據庫的報告,然後使用JasperReportServer來安排/查看報告。但是,數據庫真的很骯髒,而且從來沒有爲這種方式使用而設計。我們已經有了一個訪問層,Web應用程序用它來與它交談。我想讓我的最終用戶遠離數據庫,而使用訪問層的自定義數據源的想法似乎是一個不錯的選擇。但是,我發現很少有關於如何做到這一點的文檔。也許這比我想象的要容易得多,我只是想讓一個簡單的事情變得複雜起來。

更新

感謝您的答案。我不認爲我的問題已經解決,但我認爲答案有助於通知需求階段。

回答

3

每個JasperReports模板可以有兩個不同的數據源。一個是使用一些jdbc驅動程序將它直接掛接到數據庫,或者在您的情況下,提供一個java bean(POJO's)集合,通常是列表。

JasperReports模板類似於方法定義。它有一個名稱,即編譯的JR對象和參數(數據源和一些最流行的Java類型的輸入參數列表)。

我的建議是使用iReport工具。打開JasperReports包附帶的一些例子,分析它並調整它。這並不複雜。

UPDATE

讓客戶創作JasperReports的模板,編制並加入到classpath意味着你需要太多的打開你的系統。通常,客戶端提供所需報告的描述,開發者創建數據源並設計模板。 JasperReports可以有參數。如果通過UI公開這些參數,則用戶可以更改運行時報告的行爲。

如果您確實需要更多的靈活性,那麼請使用JasperReports提供的用於創作模板的API。我可以想象一些簡單的DLS讓高級用戶與您的系統進行通信,創建即時報告。

4

Jasper報告允許您使用「JavaBean」數據源。您可以將數據加載到任何Java Bean結構中,並根據該結構生成報告。效果很好。

請參閱「自定義數據源」部分here

+0

謝謝。我已經看到了這一點,它只是一個基本的例子。我想我可以看到如何從報告中提取各種參數。我無法看到的是如何向報告作者呈現可用字段。 – 2009-08-04 11:11:43

+1

我們這樣做的方式是創建一個jar文件,其中包含所有Java Beans的報告。然後,將該jar文件添加到iReport中的類路徑中。我們在上面的鏈接中放置了提供者類,如圖3.5所示。它已經有一段時間了,但我認爲這就是它的工作原理。 – 2009-08-04 13:58:26