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

(本计划任务脚本仅供参考,实际应用效果需要自行根据实际场景进行代码调整。)

需求说明:

计划任务推送只在工作日执行,需要跳过周末、节假日。

实现思路:

因为法定节假日每年的具体日期存在差异,并且可能因为补班导致周末也是需要上班的,所以每年的工作日也是不固定的。

对于此需求,可以在数据库中维护一张日历表,并且有一列标记列,例如为0则代表节假日,为1则代表工作日,通过查询标记列的值,来判断是否要执行计划任务推送。

参考方案:

先创建一个日历表,手动维护节假日,例如下:ID为编号、date为日期、tag为标记列,来判断是否为工作日。

创建计划任务,定制代码如下:

importPackage(Packages.smartbi.sdk.service.datasource);
importClass(java.text.SimpleDateFormat);

//获取当前日期
var currDateStr = new SimpleDateFormat("yyyy-MM-dd").format(new Date());

//声明数据源id,(“这里填写需要的数据源id”)
var datasrcId="DS.mysqljiejiar"; 

//声明sql语句,将当前日期作为参数传递
var sql="select tag from calendar where date='"+currDateStr+"'"; 

var datasrcService =new DataSourceService(connector); //new一个DataSourceServic对象
var Data = datasrcService.executeNoCacheable(datasrcId,sql); //调用executeNoCacheable方法执行插入

//查到标记值,判断是否要执行计划任务
var a = Data.get(0, 0).getValue();

if(a==1){
    //这里写计划任务推送的主代码

}else{
    logger.debug("-----------------不执行------------------");
}
  • 无标签