Я немного новичок 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.
вы можете изменить вопрос, чтобы показать вывод, который вы хотели бы видеть? –