- 由 黄平创建, 最终由 杨维修改于 七月 19, 2016
任务脚本编写规范
自定义任务脚本编写要求:
- 脚本必须满足Javascript语法规范。
- 脚本中可以引入Java对象并使用。
- 脚本中还可调用如下对象:
说明
- 关于JavaScript的介绍,可自行上网学习相关资料。
引入Java对象
如何引入Java对象?
例如:Packages.java.io.File引用了Java的io包中File对象。 要在JavaScript中使用该Java对象,可用如下写法,new 和Packages都是可以被省略的:
//相当于: var frame = new Packages.java.io.File("filename"); |
我们也可以像Java代码中一样把这个对象引用进来:
importClass (java.io.File); |
如果要将整个包下的所有类都引用进来可以用importPackage:
importPackage(java.io); |
如果只需要在特定代码段中引用某些包,可以使用JavaImporter搭配JavaScript的with关键字,如:
var MyImport = JavaImporter(java.io.File); |
用户自定义的包也可以被引用进来,不过这时候Packages引用不能被省略:
importPackage(Packages.tony); |
注意:这里只有public 的成员和方法才会在JavaScript中可见。对于非public的成员,例如对 hello.s的引用将得到undefined。
系统内置对象
系统内置对象说明:
对象 | 对象描述 |
connector | 系统内置的连接对象,连接到计划任务服务器,可直接使用。例如:
|
logger | 系统内置的写日志对象。有三个方法:
|
execute | execute函数用于执行内置计划任务组件,详见计划任务组件说明。 |
SDK对象调用
说明
Smartbi服务器端SDK通过JAVA API提供七项服务接口,可以在自定义任务中调用这些API。
服务对象 | 描述 |
AnalysisReportService | 提供多维分析相关操作功能 |
CatalogService | 提供资源目录树的访问功能等 |
GraphicReportService | 提供图形分析报表访问功能 |
ManageReportService | 提供业务报表相关操作功能 |
PortalService | 提供仪表盘页面相关操作功能 |
SimpleReportService | 提供灵活报表相关操作功能 |
UserManagerService | 提供用户相关操作。包括:读取/维护用户信息、读取/维护组信息、读取/维护角色信息、为用户和组分配角色等 |
具体的方法以及帮助请参考《JAVA API文档》。
常用接口说明
自定义任务中常用到如下接口:
说明 | 调用接口 |
|
|
读取资源节点 |
| var reportId = 'I2c9410a623cc37d10123cc8f90930187'; |
|
创建资源定义 | 灵活分析 | var tempReportService = new SimpleReportService (connector); | |
| 多维分析 | var tempReportService = new AnalysisReportService(connector); | |
| 复杂报表 | var tempReportService = new ManageReportService(connector); | |
| 指标报表 | var tempReportService = new ManageReportService(connector); | |
| 仪表分析 | var tempReportService = new GraphicReportService(connector); | |
| 页面 | var tempReportService = new PortalService(connector); | |
参数相关 | 灵活分析 | //获取参数列表 | |
| 多维分析 | var paramList = tempReportService.getParameters(clientid); | |
| 页面 | var paramList = tempReportService.getParameters(pageId); | |
刷新报表 | 灵活分析 | tempReport.execute(rowsPerPage); //输入每页返回行数 | |
| 多维分析 | tempReportService.executeQuery(clientId) | |
| 复杂报表 指标报表 | manageReportService.refreshComplexReport(clientId); | |
| 仪表分析地图分析 | 无接口,导出时会自动刷新报表。 | |
| 页面 | var portletTypes = [ "TempReport" ]; | |
导出报表到本地文件 | 灵活分析 | //第一个参数为String类型,表示导出格式,支持格式为EXCEL、CSV、TXT、PDF、WORD; | |
| 多维分析 | //第二个参数为String类型,表示导出格式,支持格式为EXCEL、CSV、TXT、PDF、WORD; | |
| 复杂报表 指标报表 | tempReportService.exportExcel(clientId, outputStream); | |
| 仪表分析地图分析 | var outputStream = new FileOutputStream(tempFile); | |
| 页面 | var pageWidth = 1024; |
常用参数说明如下:
- connector:连接对象,为系统内置对象,无需创建可直接使用。
- clientId:String字符串类型,指报表的句柄ID。
- reportId:String字符串类型,指报表资源的唯一标识ID。
- reportName:String字符串类型,指报表资源的名称。
- pageId:String字符串类型,指页面资源的唯一标识ID。
- param.id, param.value, param.displayValue:String字符串类型,分别指参数ID、参数真实值、参数显示值。
- outputStream:OutputStream文件流类型,指输出文件流。
SDK调用示例
示例:以下脚本实现"打开灵活分析报表,输出该报表的总行数"。
// 导入将会使用的java类与java包 |
注:在自定义任务中connector客户端连接对象是系统预先创建好的,在使用时直接调用就可以了。
计划任务组件说明
Smartbi的系统SDK为计划任务的开发者提供了最基本的API,例如:打开一个报表、设置参数、刷新等。但这些API比较底层和基本、粒度比较细,往往需要多步调用才能完成一个常规操作。
为了方便用户编写自定义任务脚本,系统对常见任务进行了封装,为用户提供一些实用的组件。
组件接口说明
一个组件由三个部分构成:输入参数Input、输出结果Ouput、执行方法execute。
系统内置了如下组件,供用户调用:
Execute命令解释 | Input输入参数 | Output输出结果 |
OpenResource |
|
|
EnumerateParamValues |
|
|
FillData |
|
|
ExportResource |
|
|
SendToFile |
|
|
SendToMail |
|
|
说明
- OpenResource和ExportResource支持的资源类型包括:灵活分析、仪表分析、地图分析、复杂报表、指标报表、多维报表、门户页面。
组件调用示例
用户在自定义任务JavaScript脚本中通过execute标准函数来调用组件,该函数接收两个参数:
- 第一个参数是要调用组件的命令名称;
- 第二个参数是该命令的输入参数(Javascript表示方式),可能存在多个参数,用{ }括起。表示如下:
{ 参数1名称: 参数值,
参数2名称: 参数值,
参数3名称: 参数值
}
示例:以下脚本实现"打开灵活分析报表,枚举"产品目录参数"参数,以Excel格式导出文件至C:/task/目录"。
//初始化参数设置:枚举"产品目录参数",固定"开始日期"和"结束日期"参数值。 |
- 无标签