我需要在我的一個應用程序中集成BIRT圖表引擎。 Birt可以生成圖表作爲圖表輸出。我的想法是生成這個圖表圖像,然後將其發送到客戶端進行顯示。也許在服務器上的RemoteServiceServlet中。這是做這件事的最好方法嗎?還是有其他技術可以做到這一點?如何將BIRT整合到GWT中?
在此先感謝,
我需要在我的一個應用程序中集成BIRT圖表引擎。 Birt可以生成圖表作爲圖表輸出。我的想法是生成這個圖表圖像,然後將其發送到客戶端進行顯示。也許在服務器上的RemoteServiceServlet中。這是做這件事的最好方法嗎?還是有其他技術可以做到這一點?如何將BIRT整合到GWT中?
在此先感謝,
最可靠的方法來生成「報道,」無論是圖像,PDF,或任何字節序列需要通過瀏覽器的響應下載到用戶操作是讓客戶端的RPC調用立即返回一個URL或令牌,在該令牌中稍後將提供報告的內容。後來,在這種情況下,僅僅意味着需要後續請求來檢索報告的內容,但是該模式可以很好地適用於需要花費不少量時間來創建報告的情況。
Image
小部件,或許使用URL模式http://example.com/getReportImage/<Generated Token>
。該請求可能會阻止,直到報告完成。如果報告標識符的選擇是報告參數的功能,並具有穩定的語義,你可以得到緩存和工作有一點額外的努力去重複。
至於使用data:
網址的選擇,只有在您的用戶使用現代瀏覽器並且圖像尺寸很小時纔有意義。一般情況不適合。
使客戶端發送RPC並讓服務器執行所有BIRT呈現。服務器完成後,將生成的HTML(或圖像)流式傳輸回客戶端。見http://www.birt-exchange.org/org/forum/index.php/topic/15515-build-birt-report-engine-with-gwt/
myServiceImpl.getReport(
"monthlySales",
"2013-02-01",
"includeGST",
new AsyncCallback<String>() {
public void onSuccess(String serverGeneratedBirtHtml) {
myVerticalPanel.add(new HTML(serverGeneratedBirtHtml));
}
}
);
你的想法看起來不錯:我會試試看,讓你知道我的小實驗。 – kaffein
你的想法看起來很棒:我會嘗試一下,讓你知道我的小實驗。實際上,我不需要存儲結果圖表,因爲我即將實施的服務將不得不從數據庫檢索數據以繪製圖表。所以爲了確保數據是最新的,恕我直言,讓它獲取數據並動態生成圖表是很有趣的。 我可能遇到的唯一問題是,我正在使用的屏幕將不得不顯示多個圖表。其實,這是一個有趣的結果頁面,結果按「問題類別」分組... – kaffein
因此,例如,如果其中一個應用用戶已對4個類別做出響應,那麼我將不得不生成4個圖表(每個類別)。我可能會有一些循環做** ServiceCall **:它可能是性能瓶頸嗎? – kaffein