可以将已经做好的报表集成到第三方系统中,报表是H5的,所以只需要在第三方系统中通过iframe嵌入报表链接即可.
艾科思移动报表平台提供了以下报表集成方式:
通过将用户名和密码作为参数放入报表链接中,实现即时登录和权限控制。
在报表设计器中,预览报表,获得报表的访问链接,例如:
https://enterprise.ireport365.com/view/report.do?reportId=98062e02a4294eda86423f464485089e在报表的访问链接中加入用户名及密码参数,例如:
https://enterprise.ireport365.com/view/report.do?reportId=98062e02a4294eda86423f464485089e&username=demo&password=123456
参数列表如下:
注:password和md5password只需提供其中一个即可
使用Api生成包含动态加密的用户名、密码的报表url,url过期时间为10分钟,大大提升系统安全性
- 创建授权应用,参考:应用授权
- 下载Api源码:(API_v1已废弃)
iReport365Api.java 替换Api源码中的以下参数:
Api源码参数
描述
host替换成相应的报表服务器地址,包含http,不能以 / 结尾appId授权应用的appIdappSecret授权应用的安全码- 参考Api源码中:
用户名密码作为密文参数生成报表URL
向报表服务器获得accessToken(访问码),通过Api生成包含加密认证的报表url,url过期时间为10分钟,大大提升系统安全性
- 创建授权应用,参考:应用授权
- 下载Api源码:(API_v1已废弃)
iReport365Api.java 替换Api源码中的以下参数:
Api源码参数
描述
host替换成相应的报表服务器地址,包含http,不能以 / 结尾appId授权应用的appIdappSecret授权应用的安全码- 参考Api源码中:
使用AccessToken作为参数生成报表列表的URL
如果需要与现有的用户系统集成,用户无需管理新的密码,可以启用iReport365报表平台的用户登录脚本,当用户登录时,执行管理员设定的脚本,比如使用SQL或WebService验证用户输入的密码。
- 平台管理-》系统设置-》用户登录脚本-》开启
设置用户登录脚本 (页面底部有脚本示例)
脚本中支持的内置参数:
result返回值对象属性
databaseService对象方法
webService对象方法
userService对象方法
sessionService对象方法
ldapService对象方法
wxcpService对象方法
将微信企业号用户加入指定的标签
var wxConfigId = "abc"; //配置ID,报表平台->微信企业号->编辑->ID
var wxTagName = "标签名称"; //微信企业号中的标签名称
var usernames = JSONArray();
usernames.add("username1"); //报表平台用户名
usernames.add("username2"); //报表平台用户名
wxcpService.addUserToTag(wxConfigId, wxTagName, usernames);
redisService对象方法
从Redis集群中取值
var redisKey = "theKey";
var redisAddrs = new ArrayList();
redisAddrs.add("192.168.1.2:7000");
redisAddrs.add("192.168.1.3:7001");
redisAddrs.add("192.168.1.4:7002");
var theValue = redisService.clusterGet(redisAddrs, redisKey);
脚本示例:
数据库验证用户名密码
importPackage(java.util);
importPackage(org.apache.commons.codec.digest);
//获取用户登录时填写的用户名和密码
var username=request.getParameter("username");
var password=request.getParameter("password");
//将密码MD5加密
var md5Password = DigestUtils.md5Hex(password);
//用户库的连接名称
var connectionName = "local dataset";
var param = new ArrayList();
param.add(username);
param.add(md5Password);
//查询用户库
var sql = "select username,password from users where username=? and password=?";
var data = databaseService.query(connectionName, sql, param);
if(data.size() === 0){
result.setSuccess(false);
result.setMessage("用户名或密码错误");
}else{
result.setSuccess(true);
}
LDAP用户认证
importPackage(java.util);
importPackage(org.apache.commons.codec.digest);
//获取用户登录时填写的用户名和密码
var username=request.getParameter("username");
var password=request.getParameter("password");
//LDAP查询
var host = "127.0.0.1";//LDAP主机地址
var port = "389"; //LDAP端口
var type = "simple"; //不用修改
var domain = "abc.com"; //域
var success = ldapService.auth(host,port,type,domain,username,password);
if(success){
result.setSuccess(true);
}else{
result.setSuccess(false);
result.setMessage("用户名或密码错误");
}
WebService用户认证脚本
importPackage(java.util);
importPackage(org.apache.commons.codec.digest);
importPackage(com.alibaba.fastjson);
importPackage(org.apache.commons.lang);
//获取用户登录时填写的用户名和密码
var username=request.getParameter("username");
var password=request.getParameter("password");
var str = webService.get("http://127.0.0.1:8080/login?username="+username+"&password="+password);
if(!StringUtils.isEmpty(str)){
var json = JSONObject.parseObject(str);
var success = json.getBoolean("success");
if(!success){
result.setSuccess(false);
result.setMessage("用户名或密码错误");
}else{
result.setSuccess(true);
}
}else{
result.setSuccess(false);
result.setMessage("用户名或密码错误");
}
全局数据权限脚本
importPackage(java.util);
importPackage(com.alibaba.fastjson);
importPackage(org.apache.commons.lang);
var dataPermissionData = new HashMap();
//获取报表URL传入的参数
var accessToken=request.getParameter("accessToken");
var appSecret="some code";
var url = "http://www.abc.com/shopguide/api/org/getOrgWithinAuth?appSecret="+appSecret+"&accessToken="+accessToken;
logger.debug("ur: "+url);
//调用接口,获取相关权限
var response = webService.get(url);
logger.debug("response: "+response);
if(!StringUtils.isEmpty(response)){
//拼接权限数据
var json = JSONObject.parseObject(response);
var message = json.getString("msg");
logger.debug("message: "+message);
if(StringUtils.equals(message, "success")){
var values = json.getJSONArray("value");
logger.debug("values: "+values);
if(values != null){
var codeArr = new ArrayList();
for(var m = 0; m < values.size(); m++){
var item = values.getJSONObject(m);
var code = item.getString("code");
codeArr.add(code);
}
//生成SHOPCODE的权限数据
dataPermissionData.put("SHOPCODE", codeArr);
}
}
}
result.setSuccess(true);
result.setData(dataPermissionData);
logger.debug("dataPermissionData: "+dataPermissionData);