BIRT报告列表清单

时间:2013-05-29 12:04:25

标签: 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会做我需要的,但我是新手,我很惊讶我已经尽我所能了!

此问题不具体,因为我们可能需要获取列表列表。

如果已经涵盖了我的道歉。我看过,但可能会列在我不熟悉的术语下。

非常感谢。

皮特。

1 个答案:

答案 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