头图

一、简介

日期字段任务可以选择数据表模型中的某个日期或日期时间字段,将这个字段所有记录的日期组成一个日期时间表,每到一个日期,就能触发任务执行计划的动作。类似于定时任务的批量生成。

在此基础上,也支持循环触发,就是以每个日期作为起始时间周期性触发。

 title=

二、交互流程

新建日期字段任务,配置任务的名称、存储路径、关联字段、执行时间与循环周期。

 title=

可以在任务页面中构建相应的执行函数,即到达指定时间触发后做什么,并控制任务开启生效。

 title=

任务执行记录展示根据触发时间分类的“待执行”、“执行中”、“已执行”任务,包括执行时间、执行反馈等信息。

三、触发时机

日期字段任务的触发时间取自关联数据表模型中的日期/日期时间字段。对于周期任务,则可以在触发时间的基础上,增加重复周期和结束时间的设定。

 title=

对于关联的数据表模型,可以通过【筛选条件】进行数据过滤,不一定要使用所有数据。

(一)开始时间

区别于定时任务,无需手动指定具体时间,而是通过关联模型选择合适的时间字段。

在单次定时任务中,【开始时间】就是指定的时间字段记录值,同时可以选择当前、之前或之后多少时间来作为执行时间的修正;

 title=

在周期定时任务中,【开始时间】也是选取指定字段的记录值,其既是任务第一次开始执行的时间,也会作为时间周期范围的起始位置;

(二)重复周期

即循环的周期类型,可以是不重复、每小时、每天、每周、每月、每年、自定义。

假设开始时间关联字段的某一条记录是2024-01-01 12:30:00 (周一)。

不重复,任务仅触发一次;

每小时,默认按照选定【开始时间】的分、秒,每小时执行,即12:30、13:30、14:30;

每天,默认按照选定【开始时间】的小时、分、秒,每天执行,即 01-01 12:30、01-02 12:30;

每周,默认按照选定【开始时间】的星期、小时、分、秒,每周执行,即 01-01 12:30(周一)、01-08 12:30(周一);

每月,默认按照选定【开始时间】的日期、小时、分、秒,每月执行,即 01-01 12:30、02-01 12:30;

每年,默认按照选定【开始时间】的月份、日期、小时、秒,每年执行,即 2024-01-01 12:30:00、2025-01-01 12:30:00;

自定义,允许按照灵活间隔执行,间隔为分、小时、天、周、月、年;

  • 分,每几分钟执行一次;
  • 小时,每几个小时执行一次;
  • 天,每几天执行一次;
  • 周,每几周执行一次,包括具体在周几;
  • 月,每几月执行一次,包括具体在哪一天;
  • 年,每几年执行一次,包括具体在哪个月的哪一天;

(三)结束时间

只在选择了重复周期中重复选项时生效,也就是周期定时任务中时间周期范围的结束位置;

 title=

日期字段任务除了可以选择固定的时间,也可以类似开始时间选择关联某一时间字段。

(四)跳过节假日

只在选择了重复周期中重复选项时生效,当任务的时间周期范围中存在节假日,则在节假日时间内自动跳过那个任务不执行。

四、执行函数

与事件类似,在任务中也需要对具体执行动作进行实现,也就是执行函数的构建。

在这里我们可以选择两种,一种为全局函数,选择任意一个服务函数,另一种是直接在内部函数中直接实现调用。至于内部函数编辑也是通过函数设计模块实现,参见 【函数设计】模块。

需要说明的是,在日期时间字段任务中,会默认带入模型行数据。该参数包含了触发此次任务的行数据信息,可进行查询调用。

 title=

五、代码实现

在代码编辑器模式下,可以看到每个任务分为两个文件,tasks.json、inner.py。

这两个文件分别对任务本身进行属性记录和对任务的执行函数实现。

下面是tasks.json原文,定义或记录了相关参数,如任务类型、任命名称、关联字段、周期设置等。

{
    "funcType": "Inner",
    "title": "订单到期提醒",
    "modelPath": "models.OrderModel",
    "timerCfg": {
        "repeat": {
            "period": 1,
            "repeatType": "normal"
        },
        "startField": "f353",
        "startOffset": {
            "offsetType": -1,
            "offsetUnit": "days",
            "time": "00:00",
            "offset": -1
        },
        "skipHoliday": 0
    },
    "enable": 1
}

对于inner.py,则主要体现了执行函数本身。其中moXingXingShuJu为模型行数据参数

六、使用场景示例

密码到期提醒

密码到期的前三天,每隔24小时提醒用户修改新密码,一共提醒三次。像这种场景就适合用日期字段任务。

因为每个用户上一次修改密码的时间各异,所以逐个通过定时任务设定过于繁琐,而日期字段任务合理的解决了这个问题。我们可以通过关联用户信息表,选择“密码到期时间”之前三天作为任务的开始时间,重复周期为每天,任务结束时间选择“密码到期时间”,如此即可。

七、注意事项

日期字段任务的开始时间虽然是通过选择日期时间字段和选择之前之后多长时间拼接而成,但是执行的时候仍然需要保证这个时间点是在当前系统时间之后,如果是历史时间,还是不会触发任务的。

另外日期字段作为取值依据,在周期任务中是按照每个记录值组建循环周期的,因此每个周期任务相对独立。

进一步了解极态云,体验产品?

 请访问 极态云官网


极态云官方账号
1 声望0 粉丝

JIT 技术,为专业开发全面提速!极态云(jit)是一个基于全新软件开发理论(面向元素开发方法)、全新编程框架、全新开发工具、全新部署运行平台的企业级软件系统开发与运行平台,极大简化了应用系统的开发、部署...