2013-05-29 4 views
1

Я немного новичок BIRT, и я действительно мог сделать с рукой.Отчет BIRT для списков списков

Некоторые фона:

Я разрабатываю некоторые программное обеспечение, которое позволяет отображать и простое моделирование уровня 1 подключения в центре обработки данных.

Это Java, работающая на Tomcat, с использованием отчетов BIRT. BIRT извлекает данные из общего веб-сервиса, который мы реализовали, обслуживая данные как XML, которые BIRT извлекает с использованием SOAP.

Отчет, в котором я сейчас работаю, запрашивает нашу систему, чтобы узнать трассировку схемы на конкретном порту на части оборудования.

Простой отчет для этого отлично работает. Он дает путь предков к активам, а затем конкретный актив и порт.

Например, идентификатор объекта 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 

Это говорит о том, что задняя панель телефона патч выходит на передний план , через патч-корд к другой панели, к задней части этой панели, к задней части ящика для пола.

Настоящий отчет работает довольно успешно.

Один клиент хочет больше!

Они хотят, чтобы экспорт Excel из отчета BIT был фильтруемым, то есть вместо того, чтобы иметь ограниченный путь предка, он нуждается в нем в форме списка, поэтому, когда он экспортируется в 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 

Это «правильный» в том, что мы возвращаемся 12 «строк» ​​с помощью XML. Отображение столбцов говорит, что элемент является «текущими» данными, порты (P1 & B1) «вверх» на один уровень и т. Д.

Если я беру данные в отношении списка путей предков, мы не получаем дублированные данные, но в этот момент список путей предков не рассматривается как список, поэтому либо ничего не отображается, либо только первый элемент из списка несколько раз, в результате чего ...

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

Я 99% уверен, что BIRT будет делать то, что мне нужно, но я новичок в этом, и я удивлен, что я» я получил, насколько я есть!

Эта проблема неспецифична, поскольку у нас есть другие ситуации, когда нам может понадобиться выбор списков списков.

Приносим извинения, если это уже было покрыто. Я посмотрел, но это может быть указано в терминологии, с которой я не знаком.

Большое спасибо.

Pete.

+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