2013-05-29 196 views
1

我是一個BIRT新手,我真的可以用一隻手做。BIRT報告列表清單

一些背景資料:

我正在開發一些軟件,讓顯示屏和1層連接的簡單建模數據中心。

這是基於Java的,使用BIRT報告在Tomcat上運行。 BIRT從我們實現的通用Web服務中提取數據,將數據提供爲XML,BIRT使用SOAP提取數據。

我正在處理的報告當前正在查詢我們的系統以找出設備上特定端口上的電路蹤跡。

這個簡單的報告工作正常。它爲資產提供了祖先路徑,然後提供了具體的資產和端口。

例如,資產ID 49345,端口1將導致報告看起來(有點)像這樣...

Organization >> Comms Room >> Comms Room Cabinet 02 Rack 01 >> Comms Room C02 R01 Telephone Patch Panel  P1 - B1 
Organization >> Comms Room >> Comms Room Cabinet 02 Rack 01 >> Comms Room C02 R01 Patch Panel 02    P2 - B2 
Organization >> Client/Server development >> U1 ClntSvr FB 02 >> U1 ClntSvr FB 02 I4       P2 - B2 

此說,電話配線架背面轉到正面,通過跳線到另一個面板,到該面板的背面,到地板盒的背面。

這份報告的工作相當開心。

一位顧客想要更多!

他們希望BIT報告中的Excel導出是可過濾的,即不是具有分隔的祖先路徑,而是以列表形式需要它,所以當它導出到Excel時,每個條目都在不同的列上。

我修改了我的查詢來返回一個祖先元素數組而不是單個字符串,並且以它自己的方式,這也適用。

該新查詢的SOAP響應低於(用於信息 - 它可以幫助)

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Header/> 
    <SOAP-ENV:Body> 
     <FindCircuitByAssetAndPortResponse> 
     <CircuitDetail> 
      <FoundByAsset>Comms Room C02 R01 Telephone Patch Panel (id: 49345)</FoundByAsset> 
      <FoundByPort>P1</FoundByPort> 
      <CircuitAssetDetail> 
       <AssetId>49345</AssetId> 
       <AncestryPath>Organization >> Comms Room >> Comms Room Cabinet 02 Rack 01 >> Comms Room C02 R01 Telephone Patch Panel</AncestryPath> 
       <AncestryPathList> 
        <AncestryPathElement>Organization</AncestryPathElement> 
        <AncestryPathElement>Comms Room</AncestryPathElement> 
        <AncestryPathElement>Comms Room Cabinet 02 Rack 01</AncestryPathElement> 
        <AncestryPathElement>Comms Room C02 R01 Telephone Patch Panel</AncestryPathElement> 
       </AncestryPathList> 
       <AssetTypeName>Patch Panel</AssetTypeName> 
       <InPort>B1</InPort> 
       <OutPort>P1</OutPort> 
      </CircuitAssetDetail> 
      <CircuitAssetDetail> 
       <AssetId>49339</AssetId> 
       <AncestryPath>Organization >> Comms Room >> Comms Room Cabinet 02 Rack 01 >> Comms Room C02 R01 Patch Panel 02</AncestryPath> 
       <AncestryPathList> 
        <AncestryPathElement>Organization</AncestryPathElement> 
        <AncestryPathElement>Comms Room</AncestryPathElement> 
        <AncestryPathElement>Comms Room Cabinet 02 Rack 01</AncestryPathElement> 
        <AncestryPathElement>Comms Room C02 R01 Patch Panel 02</AncestryPathElement> 
       </AncestryPathList> 
       <AssetTypeName>Patch Panel</AssetTypeName> 
       <InPort>P2</InPort> 
       <OutPort>B2</OutPort> 
      </CircuitAssetDetail> 
      <CircuitAssetDetail> 
       <AssetId>48634</AssetId> 
       <AncestryPath>Organization >> Client/Server development >> U1 ClntSvr FB 02 >> U1 ClntSvr FB 02 I4</AncestryPath> 
       <AncestryPathList> 
        <AncestryPathElement>Organization</AncestryPathElement> 
        <AncestryPathElement>Client/Server development</AncestryPathElement> 
        <AncestryPathElement>U1 ClntSvr FB 02</AncestryPathElement> 
        <AncestryPathElement>U1 ClntSvr FB 02 I4</AncestryPathElement> 
       </AncestryPathList> 
       <AssetTypeName>Module</AssetTypeName> 
       <InPort>P2</InPort> 
       <OutPort>B2</OutPort> 
      </CircuitAssetDetail> 
     </CircuitDetail> 
     </FindCircuitByAssetAndPortResponse> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

報告數據集使用最深的層,即祖先元素。

雖然顯示數據,但有重複的數據。例如,上面的數據現在顯示爲...

Organization        B1 - P1 
Comms Room        B1 - P1 
Comms Room Cabinet 02 Rack 01   B1 - P1 
Comms Room C02 R01 Telephone Patch Panel B1 - P1 
Organization        P2 - B2 
Comms Room        P2 - B2 
Comms Room Cabinet 02 Rack 01   P2 - B2 
Comms Room C02 R01 Patch Panel 02  P2 - B2 
Organization        P2 - B2 
Client/Server development    P2 - B2 
U1 ClntSvr FB 02       P2 - B2 
U1 ClntSvr FB 02 I4      P2 - B2 

這是「正確的」,因爲我們通過XML取回了12個「行」。列映射表示元素是「當前」數據,端口(P1 & B1)在「上」一級,依此類推。

如果我獲取有關祖先路徑列表的數據,我們不會得到重複的數據,但是在這一點上,祖先路徑列表不會被視爲一個列表,所以根本不顯示任何內容,或者剛剛從列表中的第一個元素反覆,導致...

Organization B1 - P1 
Organization 
Organization 
Organization 
Organization P2 - B2 
Organization 
Organization 
Organization 
Organization P2 - B2 
Organization 
Organization 
Organization 

我99%肯定會BIRT做什麼,我需要,但我是一個初來乍到吧,我很驚訝我」我已經得到了!

這個問題是非特定的,因爲我們有其他的情況,我們可能需要獲取列表清單。

如果已經涵蓋此內容,我表示歉意。我看過,但可能會列在我不熟悉的術語下。

非常感謝。

皮特。

+0

您可以編輯的問題,以顯示你想看到的輸出? –

回答

0

如果你想這樣

Organization        B1 - P1 
Comms Room        
Comms Room Cabinet 02 Rack 01   
Comms Room C02 R01 Telephone Patch Panel 
Organization        P2 - B2 
Comms Room        
Comms Room Cabinet 02 Rack 01    
Comms Room C02 R01 Patch Panel 02   
Organization        
Client/Server development     
U1 ClntSvr FB 02       
U1 ClntSvr FB 02 I4 

在BIRT輸出是有這個,你需要做的叫GROUP選項
選擇表,你將有屬性對話框在那裏你將有group options並在選項時,它會列出您的查詢的列名,你可以選擇自己的列組
view this tutorial for grouping