我有一個使用ReportLibraries中的組件動態組合BIRT ReportDesigns的環境。這些ReportLibraries存儲在數據庫中,不會在文件系統的任何位置找到。將BIRT庫引入InputStream報告(BIRT DEAPI)
我所試圖做的是在一個會話打開一個圖書館,讓圖書館的名稱,(從測試資源的FileInputStream)的InputStream
SessionHandle session = de.newSessionHandle(ULocale.ENGLISH);
LibraryHandle library = session.openLibrary("lib01.rptlibrary", is);
然後,我創建一個ReportDesign和包括庫(由名字?)
ReportDesignHandle reportDesign = session.createDesign();
reportDesign.includeLibrary("lib01.rptlibrary", "lib01");
後來我就在庫中搜索表元素,並嘗試複製到設計:
ElementFactory elementFactory = reportDesign.getElementFactory();
DesignElementHandle deh1 = library.findElement("NewTable");
DesignElementHandle ldeh1 = elementFactory.newElementFrom(deh1, "newTable");
在這一點上,我會得到以下異常:
org.eclipse.birt.report.model.api.command.InvalidParentException: The library for the parent element "Table("NewTable")" is not included.
at org.eclipse.birt.report.model.api.ElementFactoryImpl.newElementFrom(ElementFactoryImpl.java:968)
at org.eclipse.birt.report.model.api.ElementFactory.newElementFrom(ElementFactory.java:1)
好像圖書館被發現,DesignElementHandle確實指向,我想複製到設計中的組成部分,但在庫中打開ReportDesign無法找到該會話。
有什麼辦法可以告訴ReportDesign從非FileSystem資源中包含Library,或者從Session中包含Library,因爲它具有相同的名稱?
我想避免必須將我的FielSystem上的rptlibrary文件不惜一切代價組裝ReportDesign。
我不能回答你的問題,但你的環境的想法聽起來很有趣。有沒有關於它的公開信息? – hvb
@hvb不幸的是,我無法公開比我在這裏寫的更多。有什麼具體的,你想知道這個項目? – mwhs
這只是因爲它聽起來與我有的想法相似,但缺乏實現的資源:讓數據庫應用程序中的高級用戶通過組裝預定義組件創建報告;所有這些都存儲在數據庫中(包括版本控制,權限管理等)。 – hvb