报表集成
1.iframe方式集成
第三方系统访问AnyReport报表系统采用iframe方式嵌套报表页面,AnyReport报表系统暴露报表资源URL供第三方系统访问,报表URL可以选择无需用户登陆访问报表、单点登陆访问报表、生成token访问报表
1.1 src链接访问
第三方系统页面, src中为报表链接URL
<html>
<body>
<iframe id="rptframe" width="100%" height="100%" src="http://localhost:8080/dmp/96a4c656e57442289258bac892b286d8.rpt"></iframe>
</body>
</html>
1.2 jquery访问报表
第三方系统页面
<html>
<head>
<script type="text/javascript" src="jquery-1.11.3.min.js"></script>
</head>
<body>
<iframe id="rptframe" width="100%" height="100%"></iframe>
<script type="text/javascript">
$(function(){
$("#rptframe").attr("src", "http://localhost:8080/dmp/96a4c656e57442289258bac892b286d8.rpt");
})
</script>
</body>
</html>
可在平台设计》报表作品获取报表访问URL,登陆访问勾选去除,可直接通过URL访问报表不需要登陆和授权
1.3 生成token访问
基于token的鉴权机制访问报表(不需要单点登录),token使用JWT方式生成,由AnyReport提供生成token jar包
获取密钥:进入 系统管理》平台属性 设置接口调用密钥,如为123456
非跨域访问报表生成token:
Jwt jwt = new Jwt();
String token = jwt.urlEncoderToken("123456");
跨域访问报表生成token:
Jwt jwt = new Jwt();
jwt.setType("domain");//如果是跨域访问则需要设置类型为domain,默认可不用设置
String token = jwt.urlEncoderToken("123456");
将token加入报表访问URL中<iframe id="rptframe" width="100%" height="100%" src="http://localhost:8080/dmp/96a4c656e57442289258bac892b286d8.rpt?token=xx"></iframe>
1.4 URL传参
报表URL可以直接传递参数,将参数与值加入到URL中,如下name与type参数http://localhost:8080/dmp/96a4c656e57442289258bac892b286d8.rpt?token=xx&name=xx&type=1
URL参数与报表页面参数类似,可再数据集中直接使用如: 数据集SQLselect * from RPT_VALUE where NAME=:name and TYPE=:type
URL中参数名称不能与报表参数页面参数名称相同,报表参数页面参数组件可以接受URL中参数,如参数组件默认值是公式=$name(name为URL中参数名称)