BIRT 怎麼呼叫 Webservice 作為資料來源

xiaohuihui發表於2020-06-21

BIRT雖然提供了訪問基於SOAP的Web Services,可以使用SOAP響應作為生成報表的資料。但總的來說,操作起來還是太麻煩了,靈活性也不夠:

1、配置過程步驟多,過於繁瑣。

2、引入的JAR很多,太重了。

3、API介面多,程式碼寫起來很長,除錯不方便。

4、只能接收簡單結果,沒有二次計算的能力。

比如要處理這麼個場景:根據傳入引數,呼叫外部WebService,返回該地區的天氣情況。URL:

呼叫服務後返回的XML資料格式如下:

<?xml version="1.0" encoding="utf-8"?>

<ArrayOfString xmlns:xsi=" xmlns:xsd=" xmlns="

  <string>Henan (Province).</string>

  <string>Xinyang(City).</string>

  <string>464000</string>

  <string>57297.jpg</string>

  <string>2019/12/20 16:00:31</string>

  <string>0°C/10°C</string>

  <string>December 20 is cloudy to overcast</string>

  <string>East to north is less than category 3</string>

  <string>...</string>

</ArrayOfString>

期望結構化後的效果:

BIRT 怎麼呼叫 Webservice 作為資料來源

建議使用集算器,它將HTTP服務的url串的返回結果封裝成檔案流,實現同樣的演算法只需更少的程式碼,分步執行除錯也方便,且精心設計了一套集合運算領域的函式庫,以應對結構化後的各類運算,不再需要第三方資料庫來協助。最後將計算結果返回給BIRT的DataSet進行直接報表展現,比如上面的問題,只需5行:


A

1

=wsdl=concat("\"("Xinyang","UTF-8"),"\":\"UTF-8\"")

2

=httpfile(${wsdl})

3

=xml(file(A2).read(),"ArrayOfString/string")

4

=create(${A1.(concat("str",#)).concat@c()})

5

>A4.record(A3)

其實還有很多類似的計算問題不太方便,但有集算器SPL的輔助卻很簡單,感興趣可以參考: 、

集算器提供了 JDBC 驅動,可以很方便的與BIRT等報表工具整合, 有使用和獲得它的方法。

關於集算器安裝使用、獲得免費授權和相關技術資料,可以參見 。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2699737/,如需轉載,請註明出處,否則將追究法律責任。

相關文章