报表集成

1.iframe方式集成

第三方系统访问AnyReport报表系统采用iframe方式嵌套报表页面,AnyReport报表系统暴露报表资源URL供第三方系统访问,报表URL可以选择无需用户登陆访问报表、单点登陆访问报表、生成token访问报表

1.1 src链接访问
第三方系统页面, src中为报表链接URL

  1. <html>
  2. <body>
  3. <iframe id="rptframe" width="100%" height="100%" src="http://localhost:8080/dmp/96a4c656e57442289258bac892b286d8.rpt"></iframe>
  4. </body>
  5. </html>

1.2 jquery访问报表
第三方系统页面

  1. <html>
  2. <head>
  3. <script type="text/javascript" src="jquery-1.11.3.min.js"></script>
  4. </head>
  5. <body>
  6. <iframe id="rptframe" width="100%" height="100%"></iframe>
  7. <script type="text/javascript">
  8. $(function(){
  9. $("#rptframe").attr("src", "http://localhost:8080/dmp/96a4c656e57442289258bac892b286d8.rpt");
  10. })
  11. </script>
  12. </body>
  13. </html>

可在平台设计》报表作品获取报表访问URL,登陆访问勾选去除,可直接通过URL访问报表不需要登陆和授权

1.3 生成token访问

基于token的鉴权机制访问报表(不需要单点登录),token使用JWT方式生成,由AnyReport提供生成token jar包
获取密钥:进入 系统管理》平台属性 设置接口调用密钥,如为123456
非跨域访问报表生成token:

  1. Jwt jwt = new Jwt();
  2. String token = jwt.urlEncoderToken("123456");

跨域访问报表生成token:

  1. Jwt jwt = new Jwt();
  2. jwt.setType("domain");//如果是跨域访问则需要设置类型为domain,默认可不用设置
  3. 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参数与报表页面参数类似,可再数据集中直接使用如: 数据集SQL
select * from RPT_VALUE where NAME=:name and TYPE=:type
URL中参数名称不能与报表参数页面参数名称相同,报表参数页面参数组件可以接受URL中参数,如参数组件默认值是公式=$name(name为URL中参数名称)