2011-08-25 45 views
0

我需要在我的一個應用程序中集成BIRT圖表引擎。 Birt可以生成圖表作爲圖表輸出。我的想法是生成這個圖表圖像,然後將其發送到客戶端進行顯示。也許在服務器上的RemoteServiceServlet中。這是做這件事的最好方法嗎?還是有其他技術可以做到這一點?如何將BIRT整合到GWT中?

在此先感謝,

回答

0

最可靠的方法來生成「報道,」無論是圖像,PDF,或任何字節序列需要通過瀏覽器的響應下載到用戶操作是讓客戶端的RPC調用立即返回一個URL或令牌,在該令牌中稍後將提供報告的內容。後來,在這種情況下,僅僅意味着需要後續請求來檢索報告的內容,但是該模式可以很好地適用於需要花費不少量時間來創建報告的情況。

  1. 客戶端使用報告的參數向服務器發送RPC請求。
  2. 服務器將這些參數添加到報告隊列中,並用一些可用於稍後檢索報告內容的標記作出響應。
    • 如果報告計算成本很高,報告的內容將在單獨的線程中生成,或者也可能在單獨的計算機上生成。
    • 如果報告只保證一小段時間才能完成,可以立即生成報告,但無論如何,報告內容必須寫入存儲機制以便以後檢索。
  3. (可選)客戶端輪詢一些服務以確定報告是否準備就緒。
  4. 客戶端向用戶呈現報告。
    • 對於您的情況,演示文稿將包含創建一個Image小部件,或許使用URL模式http://example.com/getReportImage/<Generated Token>。該請求可能會阻止,直到報告完成。

如果報告標識符的選擇是報告參數的功能,並具有穩定的語義,你可以得到緩存和工作有一點額外的努力去重複。

至於使用data:網址的選擇,只有在您的用戶使用現代瀏覽器並且圖像尺寸很小時纔有意義。一般情況不適合。

+0

你的想法看起來不錯:我會試試看,讓你知道我的小實驗。 – kaffein

+0

你的想法看起來很棒:我會嘗試一下,讓你知道我的小實驗。實際上,我不需要存儲結果圖表,因爲我即將實施的服務將不得不從數據庫檢索數據以繪製圖表。所以爲了確保數據是最新的,恕我直言,讓它獲取數據並動態生成圖表是很有趣的。 我可能遇到的唯一問題是,我正在使用的屏幕將不得不顯示多個圖表。其實,這是一個有趣的結果頁面,結果按「問題類別」分組... – kaffein

+0

因此,例如,如果其中一個應用用戶已對4個類別做出響應,那麼我將不得不生成4個圖表(每個類別)。我可能會有一些循環做** ServiceCall **:它可能是性能瓶頸嗎? – kaffein