目标:BI Publisher
在 SOAP 请求中向其RunReport()
方法提供用于报告的 XML 数据。
环境:
Oracle BI Publisher 11.1.1.7.0(内部版本:20130303.1415)
客户端 - 使用 http_util 的 SoapUI 5.0.0.0 或自定义 PL/SQL 代码(Oracle 数据库 11g 企业版 11.2.0.3.0 版 - 64 位生产)调用服务,通过传递参数可与同一 BI Publisher 服务器上的其他报表一起正常工作parameterNameValues
节点。
研究:
花了好几个小时才在OTN上找到这个主题(需要注册),其中解释了如何使用reportRawData
参数。我尝试使用此建议,但没有成功。
问题:
是否可以在调用时直接在 SOAP 请求中提供 XML 数据,而RunReport()
无需上传/创建临时文件且不使用 JDBC 数据源?
我很可能错过了一些明显的东西,所以请查看下面的示例设置和 SOAP 请求的结构。
在我的情况下,我已经知道至少一种可能的解决方法(例如,组织临时 JDBC 数据源以从中获取数据),但想知道是否有任何明确且可行的方法来实现此任务。
示例设置:
1. 创建示例 XML 数据文件test_ds_example.xml
:
`<?xml version="1.0" encoding="utf-8"?>`
`<test> <field_val>AAAAA</field_val></test>`
创建数据源 test_ds
添加
test_ds
XML 文件数据集并test_ds_example.xml
作为本地文件提供:
测试数据并将其保存为样本:
根据以下内容创建报告
test_ds
:
使用短语“Field Val:”创建一个基本模板,并从
/test/field_val
BI Publisher GUI 中的测试报告并获得文本“Field Val: AAAAA”
将字段值更改为 SOAP 请求
B-B-B-B-B
:
数据:
`<?xml version="1.0" encoding="utf-8"?>`
`<test> <field_val>B-B-B-B-B</field_val></test>`
请求reportRawData
节点中的数据:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pub="http://xmlns.oracle.com/oxp/service/PublicReportService">
<soapenv:Header/>
<soapenv:Body>
<pub:runReport>
<pub:reportRequest>
<pub:attributeFormat>html</pub:attributeFormat>
<pub:attributeTemplate>claimnotification_xml</pub:attributeTemplate>
<pub:byPassCache>True</pub:byPassCache>
<pub:dynamicDataSource>
<pub:fileDataSource>
<pub:dynamicDataSourcePath/>
<pub:temporaryDataSource>True</pub:temporaryDataSource>
</pub:fileDataSource>
</pub:dynamicDataSource>
<pub:parameterNameValues/>
<pub:reportAbsolutePath>/a_test/test_xml_report.xdo</pub:reportAbsolutePath>
<pub:sizeOfDataChunkDownload>-1</pub:sizeOfDataChunkDownload>
</pub:reportRequest>
<pub:saveDataOption>False</pub:saveDataOption>
<pub:reportRawData><?xml version="1.0" encoding="utf-8"?><test> <field_val>B-B-B-B-B</field_val></test></pub:reportRawData>
<pub:userID>weblogic_user</pub:userID>
<pub:password>weblogic_user_password</pub:password>
</pub:runReport>
</soapenv:Body>
</soapenv:Envelope>
- 执行请求,但它返回“Field Val:AAAAA”而不是预期的“Field Val:BBBBB”:(