Oracle 使用ReportRawData调用BI Publisher web服务

Oracle 使用ReportRawData调用BI Publisher web服务,oracle,bi-publisher,Oracle,Bi Publisher,目标:在SOAP请求中为BI发布者的report()方法提供XML数据 环境: Oracle BI Publisher 11.1.1.7.0(内部版本:20130303.1415) 客户端-SoapUI 5.0.0.0或自定义PL/SQL代码(Oracle Database 11g Enterprise Edition 11.2.0.3.0-64位生产版)调用服务,使用http_util,通过parameterNameValues节点传递参数,可与同一BI Publisher服务器上的其他报表配

目标:在SOAP请求中为
BI发布者的
report()方法提供XML数据

环境:
Oracle BI Publisher 11.1.1.7.0(内部版本:20130303.1415)

客户端-SoapUI 5.0.0.0或自定义PL/SQL代码(Oracle Database 11g Enterprise Edition 11.2.0.3.0-64位生产版)调用服务,使用http_util,通过
parameterNameValues
节点传递参数,可与同一BI Publisher服务器上的其他报表配合使用

研究:
花了几个小时后,我发现只需要(需要注册)就可以解释如何使用参数。我试图使用这些建议,但没有成功

问题:
调用
RunReport()
时,是否可以在SOAP请求中直接提供XML数据,而无需上传/创建临时文件,也无需使用JDBC数据源?
我很可能遗漏了一些明显的东西,所以请查看下面的示例设置和SOAP请求的结构

在我的情况下,我已经知道至少一种可能的解决方法(例如,组织临时JDBC数据源从中获取数据),但不知道是否有任何清晰有效的方法来实现此任务

设置示例:
1.创建示例XML数据文件
test\ds\u example.XML

  `<?xml version="1.0" encoding="utf-8"?>`  
  `<test> <field_val>AAAAA</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>&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;test&gt; &lt;field_val&gt;B-B-B-B-B&lt;/field_val&gt;&lt;/test&gt;</pub:reportRawData>
         <pub:userID>weblogic_user</pub:userID>
         <pub:password>weblogic_user_password</pub:password>
      </pub:runReport>
   </soapenv:Body>
</soapenv:Envelope>

html
索赔通知xml
符合事实的
符合事实的
/a_test/test_xml_report.xdo
-1
错误的
?xml version=“1.0”encoding=“utf-8”?测试字段
weblogic\u用户
weblogic\u用户\u密码
  • 执行请求,但返回“字段Val:aaaaaa”,而不是预期的“字段Val:B-B-B-B-B”:(

  • 经过大量实验,我决定以base64编码形式通过
    reportData
    标记传递相同的XML数据,所以SOAP请求的最终形式如下所示:

    <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:reportData>PD94bWwgdmVyc21vbj0iMS4wIiB1bmNvZG1uZz0iVVRGLTgiPz48dGVzdD48ZmllbGRfdmFsPkItQi1CLUItQjwvZmllbGRfdmFsPjwvdGVzdD4=</pub:reportData>
             <pub:userID>weblogic_user</pub:userID>
             <pub:password>weblogic_user_password</pub:password>
          </pub:runReport>
       </soapenv:Body>
    </soapenv:Envelope>
    
    
    html
    索赔通知xml
    符合事实的
    符合事实的
    /a_test/test_xml_report.xdo
    -1
    错误的
    PD94BWGDMVYC21VBJ0IMS4WIIB1BMNVZG1UZZZ0IVVRGLTGIPZ48DGVZDD48ZMLBGRFDMFSPKITQI1LUITQJWVZMLBGRFDMFSPJWVDGVZDD4=
    weblogic\u用户
    weblogic\u用户\u密码
    

    此解决方案与初始目标不完全匹配,但允许我在呈现简单文档时避免使用外部数据源。

    这里只有一个错误。reportData标记必须在reportRequest标记范围内。您在它之外提供它。 另外请注意,XML数据必须以base64格式编码

    <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:reportData>PD94bWwgdmVyc21vbj0iMS4wIiB1bmNvZG1uZz0iVVRGLTgiPz48dGVzdD48ZmllbGRfdmFsPkItQi1CLUItQjwvZmllbGRfdmFsPjwvdGVzdD4=</pub:reportData>
             <pub:userID>weblogic_user</pub:userID>
             <pub:password>weblogic_user_password</pub:password>
          </pub:runReport>
       </soapenv:Body>
    </soapenv:Envelope>