使用web service访问biee报表数据
来源:互联网 发布:windows 启动管理器 编辑:程序博客网 时间:2024/06/06 07:12
最近有其它系统想通过API的方式来访问biee的报表(分析)数据,由于系统已经做了SSO。通过go url的方式已经不行了。
我们可以调用biee提供的xmlViewService web服务来访问所需分析的数据。不过在对外部系统开放web服务之前,一定要控制好权限。否则会导致数据泄露。
至于biee web服务可以参考之前的文章
BIEE 11g WebService指南
基本过程如下,
1.调用SAWSessionService Service的logon方法 获取一个会话id
2.调用XMLViewService Service的executeXMLQuery() 方法查询数据
3.如果数据有分页还需要能过fetchNext() 来获取下一页
4.最后调用SAWSessionService Service的logoff()方法退出登录。
本文主要介绍XMLViewService Service的executeXMLQuery()方法,因为该方法的参数比较复杂。
直接使用SoapUI 5.2.1新建一个SOAP工程,WSDL如下:
http://xxxx:8303/analytics-ws/saw.dll?WSDL
注意:是analytics-ws而不是analytics。启用了sso之后,只能通过analytics-ws来访问。
点击OK
然后调用SAWSessionService取得一个会话id
点击执行(2)之后,会在右侧的响应中得到一个会话id
复制该id,在后面的方法需要用到它。
展开XmlViewService中的executeXMLQuery方法,双击Request1,在打开的编辑窗口中,修改相应的参数,并将多余的参数删除
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v6="urn://oracle.bi.webservices/v6"> <soapenv:Header/> <soapenv:Body> <v6:executeXMLQuery> <v6:report> <v6:reportPath>/shared/理财/分析/理财明细列表</v6:reportPath> </v6:report> <v6:outputFormat>SAWRowsetSchemaAndData</v6:outputFormat> <v6:executionOptions> <v6:async>FALSE</v6:async> <v6:maxRowsPerPage>30</v6:maxRowsPerPage> <v6:refresh>TRUE</v6:refresh> <v6:presentationInfo>TRUE</v6:presentationInfo> <v6:type>quertest</v6:type> </v6:executionOptions> <v6:reportParams> <!--Zero or more repetitions:--> <v6:filterExpressions><![CDATA[<sawx:expr xsi:type="sawx:logical" op="and"xmlns:saw="com.siebel.analytics.web/report/v1.1"xmlns:sawx="com.siebel.analytics.web/expression/v1.1"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <sawx:expr xsi:type="sawx:list" op="in" promptPrimarySubjectArea=""理财分析"" setVariable="dashboard.variables['p_selected_day']" appliedFromPromptDefault="true"> <sawx:expr xsi:type="sawx:sqlExpression">"理财分析"."日期"."日期"</sawx:expr> <sawx:expr xsi:type="xsd:date">2015-11-06</sawx:expr></sawx:expr> <sawx:expr xsi:type="sawx:list" op="in" promptPrimarySubjectArea=""理财分析"" setVariable="dashboard.variables['p_selected_currency']" appliedFromPromptDefault="true"> <sawx:expr xsi:type="sawx:sqlExpression">"理财分析"."币种"."币种"</sawx:expr> <sawx:expr xsi:type="sawx:untypedLiteral">USD</sawx:expr></sawx:expr></sawx:expr>]]> </v6:filterExpressions> </v6:reportParams> <v6:sessionID>jq3h6dsqvf11kbtdm5gpf27rs02p0acfrh44d736i0mtcu36</v6:sessionID> </v6:executeXMLQuery> </soapenv:Body></soapenv:Envelope>
比较关键的几个参数如下:
sessionID:第一步中取到的会话id
reportPath:分析的路径
outputFormat:输出的格式(SAWRowsetData 只返回数据 SAWRowsetSchema只返回列标题 SAWRowsetSchemaAndData 返回标题和数据)
executionOptions:执行参数,相关子参数含义详见 (XMLQueryExecutionOptions Structure)
注:executionOptions中的async设置为true的时候,分页有效;设置为false的时候分页无效
reportParams:报表参数,主要用于传参,详见(ReportParams Structure)
报表参数中可以对已有的字段传参,还可以对变量赋值,对变量赋值比较简单,比较麻烦的是上文中的filterExpressions的值,是一段xml,格式如下:
<![CDATA[<sawx:expr xsi:type="sawx:logical" op="and"xmlns:saw="com.siebel.analytics.web/report/v1.1"xmlns:sawx="com.siebel.analytics.web/expression/v1.1"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <sawx:expr xsi:type="sawx:list" op="in" promptPrimarySubjectArea=""理财分析"" setVariable="dashboard.variables['p_selected_day']" appliedFromPromptDefault="true"> <sawx:expr xsi:type="sawx:sqlExpression">"理财分析"."日期"."日期"</sawx:expr> <sawx:expr xsi:type="xsd:date">2015-11-06</sawx:expr></sawx:expr> <sawx:expr xsi:type="sawx:list" op="in" promptPrimarySubjectArea=""理财分析"" setVariable="dashboard.variables['p_selected_currency']" appliedFromPromptDefault="true"> <sawx:expr xsi:type="sawx:sqlExpression">"理财分析"."币种"."币种"</sawx:expr> <sawx:expr xsi:type="sawx:untypedLiteral">USD</sawx:expr></sawx:expr></sawx:expr>]]>
生成上面的xml片段最简单的方式,是打开对应分析的高级视图,将其中的xml代码拷出来,找到filter部分的代码复制过来并按照上面的形式修改即可。
xml代码修改好了之后,点击执行,即可返回相应的数据,数据的格式为xml,如下:
- 使用web service访问biee报表数据
- 调用BIEE提供的web service
- 第三方系统通过IFrame的方式访问BIEE报表
- 第三方系统通过IFrame的方式访问BIEE报表
- 使用Excel访问Web Service服务
- 使用JavaScript(Ajax)访问Web Service服务
- 使用FastReport.Service.dll创建Web报表服务
- servlet 代理类跨域处理 biee web service setBridge方法
- servlet 代理类跨域处理 biee web service setBridge方法(二)
- BIEE使用体验-biee中列、表、报表的更名
- biee报表开发总结
- 使用Web Service 调用两地的数据
- Android开发使用Web Service获取数据
- 通过Web Service在本地访问远程数据库的数据
- 如何访问web service
- vbscript访问web service
- java访问web service
- 浏览器访问web service
- git的code_style.php
- poj1469 二分图最大匹配 匈牙利算法BFS实现
- vscode root 权限运行
- python迭代器实例
- android 类似selector
- 使用web service访问biee报表数据
- TypeScript学习笔记(一)
- java开发中常见的各种插件、工具、jar版本的查看方法
- 数据结构--冒泡排序(BubbleSort)思想与实现
- 音频总线专题(一)——基本知识
- JS&jQuery高级05(用append在html中插入元素)
- A
- GNU下的柔性数组
- java.lang.NoSuchMethodError(该异常表示找不到指定方法。)