页面树结构
转至元数据结尾
转至元数据起始


示例代码只针对即席查询和透视分析有效。


使用场景

项目中具有较多的大数据量报表,初次打开这些大数据量报表耗时较长。

因需要对这些大数据量报表进行预处理,使用客户可以快速的对大数据量报表进行预览分析,无需等待。

下面以定时刷新即席查询报表“汽车销售情况分析-演示示例”为例,“汽车销售情况分析-演示示例”报表ID为:I40288453016667896789e42701668640ab395dba。我们可以选中资源右键选择属性获取节点ID。

实现思路

在客户预览分析报表之前,通过计划任务定时对报表进行预处理。

操作步骤

1、在计划任务中添加刷新报表数据的任务,操作入口: 系统运维 > 计划任务 > 任务 > 新建任务,如下图:  

2、输入任务名称“定时刷新报表”,“任务类型”选择 定制 ,在“自定义设置”中添加刷新报表的代码,如下图:      

//导入将会使用的java类与java包 
importClass(java.lang.System);

//打开报表资源。 
var tempResourceHandle = execute('openResource', {
    connector: connector,
    reportId: "I40288453016667896789e42701668640ab395dba" //报表id
}).resourceHandle;


3、再新建计划,实现定时刷新报表。操作入口 系统运维 > 计划任务 > 计划 > 新建计划,如下图:       

4、如计划名称为"定时刷新报表_计划",“待执行任务”中添加已建好的任务 定时刷新报表_计划,如下图所示。再根据项目需求设置定时计划的“触发类型”、“间隔类型”、“运行设置”。      

注:如果资源是透视分析,以上任务代码不适用,请使用以下代码。

importPackage(Packages.smartbi.net.sf.json);
importPackage(Packages.java.lang);
//以下代码中I4028839a015f575f575f7f5f015f576d868d0058是透视分析资源id
var insight = connector.remoteInvoke("InsightService","openQuery",["I4028839a015f575f575f7f5f015f576d868d0058",""]);
var result = JSONObject.fromObject(insight.getResult());
var clientId = result.getString("clientId");
logger.info(clientId);
var pageNo = new Integer(0);
connector.remoteInvoke("InsightService","refreshData",[clientId,pageNo]);
connector.remoteInvoke("InsightService","closeQuery",[clientId]);//关闭报表的代码;




评论

  1. 徐晓兰 发表:

    电子表格的话,可以考虑使用【资源离线】实现事先打开报表,实现缓存报表的目的。