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

文介绍如何使用计划任务对指定电子表格资源实现预缓存操作,以便在Smartbi上第一次打开该报表资源时可以快速加载。

备注:目前离线资源以及导出资源无法达到缓存的效果,需要通过此方案实现。

1、记录资源节点ID

  • 找到需要预缓存的电子表格资源,右键点击该资源,查看“属性”。

示例资源: “分析展现”下, “分析报表” > “功能演示” > “电子表格” > “常见报表” > “分组报表”

  • 记录下该资源的“节点ID”。

2、清空系统缓存

  • 选择左侧“系统导航栏”内的 “系统运维”,点击“常用工具”菜单栏内的“清空缓存”。

清空系统缓存,是为了避免让报表资源的缓存影响后续校验预缓存配置


3、创建计划任务

  • 选择“系统导航栏”内的 “系统运维”,接着点击“常用工具”菜单栏内的“计划任务”。

  • 进入“任务”页签下,新建任务。

  • “新建任务”界面如下


  • 填写任务名称,任务类型选择“定制”,将下方宏代码复制到“自定义设置”区域内,用先前记录下的资源“节点ID”替换掉宏代码指定部分。
importPackage(Packages.smartbi.sdk.service.spreadsheetreport);
importPackage(Packages.java.io);

// 需要缓存的报表
var reportIdList = [];
reportIdList.push("需要预缓存的资源ID"); //修改这部分
// 报表对应的参数,初始为空
var paramsInfoList = [];
//如果不设置参数,则paramsInfo的值必须为空字符串,不能为空数组
paramsInfoList.push("");
var spreadSheetReportService = new SpreadSheetReportService(connector);
for (var i = 0; i < reportIdList.length; i++) {
  var queryResult = spreadSheetReportService.openQuery(reportIdList[i]);
  for (var j = 0; j < paramsInfoList.length; j++) {
    var clientId = queryResult.get('clientId');
    var postData = "refreshType=refresh";
    postData += "&clientId=" + clientId;
    postData += "&resid=" + reportIdList[i];
    postData += "&sheetIndex=" + 0;
    postData += "&pageId=" + 0;
    postData += "&writeBackData=" + "";
    postData += "&exportSheetIndexes=" + "";
    postData += "&paramsInfo=" + paramsInfoList[j];
    //postData += "&op=" + '{"getTotalPages":true}'; // 清单报表需要加上这一行代码,取消注释即可
    postData += "&exportFormula=" + "";
    connector.download("/vision/ssreportServlet", postData, new ByteArrayOutputStream());
  }
  spreadSheetReportService.closeQuery(reportIdList[i]);
}


  • 替换后如下所示

若选择的电子表格资源是清单报表,则需要加上宏代码中的相应语句(将注释符号“//”去掉即可)


  • 点击“测试运行”校验任务,任务测试运行成功便点击“保存”按钮保存任务。


  • 找到刚才创建的任务,点击“执行任务”。


4、监控用户日志信息

  • 点击登录用户,选择“用户日志

  • 进入“用户日志”界面,在“服务器端”页签下,点击“开始监控”,此时开始监控服务器端的日志信息(不要关闭该标签页)


5、校验预缓存配置

  • 返回到Smartbi主界面,打开需要预缓存的电子表格资源

  • 切换回“用户日志”标签页,查看所监控的日志,当监控内容显示如下则说明预缓存配置成功生效

  • 当报表打开时调用sql查询,则说明预缓存不生效,配置失败

校验过程中,执行顺序应该参考:

  • 清空系统缓存
  • 执行任务
  • 开始监控“用户日志”内服务器端日志
  • 打开报表资源
  • 查看监控日志