# com.eos.foundation.eoscommon.ScheduleUtil
# 构件包说明
本工具类实现了对定时器的操作。
# 运算逻辑构件使用说明
该构件包包含以下构件:
序号 | 方法 | 功能描述 |
---|---|---|
1 | add(DataObject scheduleInfo) | 添加定时器 |
2 | get(String schedulerName, String taskName) | 取得任务详细信息 |
3 | getAllSchedulerName() | 取得所有的调度器名称 |
4 | getAllTaskName(String schedulerName) | 取得所有的任务名称 |
5 | pause(DataObject scheduleInfo) | 暂停 |
6 | remove(DataObject scheduleInfo) | 删除定时器 |
7 | resume(DataObject scheduleInfo) | 重启 |
8 | update(DataObject scheduleInfo) | 更新定时器 |
# add:添加定时器
# 【功能说明】
向指定应用添加定时任务。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.eoscommon.ScheduleUtil.add,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | scheduleInfo | DataObject | 任务基本信息。 |
抛出异常说明 无。
规则说明 关于Cron表达式,请参考Quartz及Cron-表达式说明 (opens new window)。
# 【参考案例】
示例:增加一个定时任务。
场景描述 增加一个定时任务处理,晚上定时批量导入数据任务。 假定任务是个java方法任务,java类是com.primeton.test.AAA,方法名是methodA,参数是一个DataObject对象。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | scheduleInfo | DataObject | scheduleInfo | 变量 | 传引用 |
参数描述 无。
其他说明
赋值图元的赋值属性如下图所示:
参数说明如下:
|| 参数名称 || 参数意义 || ||
scheudlerName | 调度器名称。(可以为空,默认是default调度器) |
---|---|
taskName | 任务名称。(不能为空) |
taskType | 任务类型(SCA业务构件服务任务为1、逻辑流任务为2、任意java方法任务为3)。(可以为空,默认是任意任务类型) |
targetQName | 目标全名称。(增加任务,不能为空) |
targetOperation | 方法名。(增加任务,不能为空) |
args | 方法参数列表。(增加任务,不能为空) |
isStateful | 是否有状态任务。(可以为空,默认是无状态任务) |
startTime | 起始时间。(可以为空,默认是当前时间) |
endTime | 结束时间。(可以为空,默认无结束时间) |
cronExpression | 触发器的复杂表达式字符串。(增加或更新任务,不能为空) |
说明
第一次增加定时任务会在数据库创建定时器相关的12张数据库表,详见本地数据库。
- 调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<scheduleInfo __id="1" __type="sdo:com.eos.foundation.ScheduleInfo">
<schedulerName __type="java:java.lang.String">default</schedulerName>
<taskName __type="java:java.lang.String">task1</taskName>
<taskType __type="java:java.lang.Integer">2</taskType>
<targetQName __type="java:java.lang.String">com.primeton.test.AAA</targetQName>
<targetOperation __type="java:java.lang.String">methodA</targetOperation>
<isStateful __type="java:java.lang.Boolean">false</isStateful>
<cronExpression __type="java:java.lang.String">0 15 10 * * ?</cronExpression>
<startTime/>
<endTime/>
<args __id="2" __type="java:com.primeton.ext.data.sdo.collection.ContainerAwareList">
<__entry __index="0" __isNullOrEmpty="null"/>
</args>
</scheduleInfo>
</__root>
</bizContext>
调用后的bizContext 同调用前。
调用这个运算逻辑后,在定时任务系统表中会增加如下记录。
字段 | 值 |
---|---|
字段 | 值 |
EOS_QRTZ_JOB_DETAILS表 | |
JOB_NAME | task1 |
JOB_GROUP | eos:group:eos-default |
DESCRIPTION | |
JOB_CLASS_NAME | com.primeton.common.schedule.impl.TaskExecuteJob |
IS_DURABLE | 1 |
IS_VOLATILE | 0 |
IS_STATEFUL | 0 |
REQUESTS_RECOVERY | 0 |
JOB_DATA | <BLOB> |
EOS_QRTZ_CRON_TRIGGERS表 | |
TRIGGER_NAME | eos:trigger:12125676423590 |
TRIGGER_GROUP | eos:group:eos-default:task1 |
CRON_EXPRESSION | 0 15 10 * * ?" |
TIME_ZONE_ID | Asia/Shanghai |
EOS_QRTZ_TRIGGERS表 | |
TRIGGER_NAME | eos:trigger:12125717782033 |
TRIGGER_GROUP | eos:group:eos-default:task1 |
JOB_NAME | task1 |
JOB_GROUP | eos:group:eos-default |
IS_VOLATILE | 0 |
DESCRIPTION | |
NEXT_FIRE_TIME | 1212632100000 |
| PREV_FIRE_TIME | -1 | | TRIGGER_STATE | WAITING | | TRIGGER_TYPE | CRON | | START_TIME | 1212571778000 | | END_TIME | 0 | | CALENDAR_NAME | | | MISFIRE_INSTR | 0 | | JOB_DATA | <BLOB> |
# get:取得任务详细信息
# 【功能说明】
取得任务详细信息。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.eoscommon.ScheduleUtil.get,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | schedulerName | String | 调度器名称 |
参数 | taskName | String | 任务名称 |
返回值 | out0 | Map<String, Object> | Unknown macro: {span}任务详细信息。Map<String, Object>内容如下:taskName:任务名称taskType:任务类型(SCA业务构件服务任务为1、逻辑流任务为2、任意java方法任务为3)isStateful:是否有状态任务(是为true、否为false)quartzJobDetail:quartz的详细任务信息taskDetail:任务详细信息对象taskState:任务状态(正常为0、暂停为1、完成结束为2、错误为3)triggerList:List<Map<String, Object>>:触发器详细信息列表triggerType:触发器类型(简单触发器为1、复杂触发器为2、其他触发器为0。有复杂表达式的触发器为复杂触发器)triggerState:触发器状态(正常为0、暂停为1、完成结束为2、错误为3、阻塞为4、无状态为-1)repeatCount:触发次数(如果是简单触发起类型)repeatInterval:触发间隔(如果是简单触发起类型)cronExpression:复杂表达式(如果是复杂触发起类型)startTime:触发开始时间endTime:触发结束时间 |
- 抛出异常说明 无。
# 【参考案例】
示例:取得任务详细信息。
场景描述 先用sysadmin帐户登陆EOS-GOVERNOR,在 配置 > 定时器 中给default调度器新增定时任务taskC。 具体新增定时器操作请参见《EOS管理员手册》中的"Governor配置功能\定时器配置\新增定时任务",新增界面如下图:
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | schedulerName | String | default | 常量 | 传引用 |
参数 | taskName | Object | taskC | 常量 | 传引用 |
返回值 | out0 | Object | taskDetailInfo | 变量 | 传引用 |
参数描述 无。
其他说明 无。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<taskDetailInfo __isNullOrEmpty="null"/>
</__root>
</bizContext>
- 调用后的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<taskDetailInfo __id="1" __type="java:java.util.HashMap">
<isStateful __type="java:java.lang.Boolean">false</isStateful>
<quartzJobDetail __id="2" __type="java:org.quartz.JobDetail">
<description __isNullOrEmpty="null"/>
<durable __type="java:boolean">true</durable>
<fullName __type="java:java.lang.String">eos:group:eos-default.task1</fullName>
<group __type="java:java.lang.String">eos:group:eos-default</group>
<jobClass __type="java:java.lang.Class" __unsupported="true">
This value not supported be serialized by eos, maybe it has not default constructor!!
class:class java.lang.Class ,
toString:class com.primeton.common.schedule.impl.TaskExecuteJob
</jobClass>
<jobDataMap __id="5" __type="java:org.quartz.JobDataMap">
<__task_detail_info __refid="3"/>
</jobDataMap>
<jobListenerNames __id="6" __isNullOrEmpty="empty" __type="java:[Ljava.lang.String;"/>
<name __type="java:java.lang.String">task1</name>
<stateful __type="java:boolean">false</stateful>
<volatile __type="java:boolean">false</volatile>
</quartzJobDetail>
<taskDetail __id="3" __type="java:com.primeton.common.schedule.impl.base.LogicflowTaskDetail">
<quartzJobDataMap __id="7" __isNullOrEmpty="empty" __type="java:java.util.LinkedHashMap"/>
<stateful __type="java:boolean">false</stateful>
<targetArgs __id="8" __isNullOrEmpty="empty" __type="java:[Ljava.lang.String;"/>
<targetName __type="java:java.lang.String">
com.primeton.eos.foundation.example.ScheduleUtil
</targetName>
<targetOperation __type="java:java.lang.String">getAllSchedulerName</targetOperation>
<taskListeners __id="9" __isNullOrEmpty="empty"
__type="java:[Lcom.primeton.ext.common.schedule.ITaskListener;"/>
<taskName __type="java:java.lang.String">task1</taskName>
</taskDetail>
<taskName __type="java:java.lang.String">task1</taskName>
<taskState __type="java:java.lang.Integer">0</taskState>
<taskType __type="java:java.lang.Integer">2</taskType>
<triggerList __collection="list" __collectionid="4" __id="10" __index="0"
__type="java:java.util.HashMap">
<endTime __type="java:java.util.Date">2009-04-30 16:07:46</endTime>
<repeatCount __type="java:java.lang.Integer">1</repeatCount>
<repeatInterval __type="java:java.lang.Long">20000000</repeatInterval>
<startTime __type="java:java.util.Date">2009-04-21 16:07:39</startTime>
<triggerState __type="java:java.lang.Integer">0</triggerState>
<triggerType __type="java:java.lang.Integer">1</triggerType>
</triggerList>
</taskDetailInfo>
</__root>
</bizContext>
# getAllSchedulerName:取得所有的调度器名称
# 【功能说明】
取得所有的调度器名称列表。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.eoscommon.ScheduleUtil.getAllSchedulerName,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
返回值 | out0 | String[] | 所有的调度器名称列表 |
- 抛出异常说明 无。
# 【参考案例】
示例:取得所有的调度器名称。
场景描述 无。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
返回值 | out0 | String[] | schedulerNames | 变量 | 传引用 |
参数描述 无。
其他说明 无。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<schedulerNames __id="1" __isNullOrEmpty="empty" __type="java:[Ljava.lang.String;"/>
</__root>
</bizContext>
- 调用后的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<schedulerNames __id="1" __type="java:[Ljava.lang.String;">
<__entry __index="0" __type="java:java.lang.String">default</__entry>
</schedulerNames>
</__root>
</bizContext>
# getAllTaskName:取得所有的任务名称
# 【功能说明】
取得指定调度器的所有任务名称列表。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.eoscommon.ScheduleUtil.getAllTaskName,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | schedulerName | String | 调度器名称 |
返回值 | out0 | String[] | 当前任务列表中所有的任务名列表 |
- 抛出异常说明 无。
# 【参考案例】
示例:用程度获得所有的任务名称。
场景描述 先用sysadmin帐户登陆EOS-GOVERNOR,在 配置 > 定时器 中给default调度器新增定时任务taskA、taskB。 具体新增定时器操作请参见《EOS管理员手册》中的"Governor配置功能\定时器配置\新增定时任务"。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | schedulerName | String | default | 常量 | 传引用 |
返回值 | out0 | Object | taskNames | 变量 | 传引用 |
参数描述 无。
其他说明 无。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<taskNames __id="1" __isNullOrEmpty="empty" __type="java:[Ljava.lang.String;"/>
</__root>
</bizContext>
- 调用后的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<taskNames __id="1" __type="java:[Ljava.lang.String;">
<__entry __index="0" __type="java:java.lang.String">taskA</__entry>
<__entry __index="1" __type="java:java.lang.String">taskB</__entry>
</taskNames>
</__root>
</bizContext>
# pause:暂停
# 【功能说明】
根据任务名称从指定应用暂停定时任务。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.eoscommon.ScheduleUtil.pause,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | scheduleInfo | DataObject | Unknown macro: {span} 定时任务对象,需要设置下面属性:scheudlerName:调度器名称taskName:任务名称 |
抛出异常说明 无。
规则说明 无。
# 【参考案例】
示例:暂停任务task1。
场景描述 无。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | scheduleInfo | DataObect | scheduleInfo | 变量 | 传引用 |
参数描述 无。
其他说明 需要用赋值图元在参数ScheduleInfo对象设置shedulerName和taskName属性指定调度器和定时任务。 根据ScheduleInfo对象的shedulerName和taskName属性暂停定时任务。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<scheduleInfo __id="1" __type="sdo:com.eos.foundation.ScheduleInfo">
<schedulerName __type="java:java.lang.String">default</schedulerName>
<taskName __type="java:java.lang.String">task1</taskName>
<taskType/>
<targetQName/>
<targetOperation/>
<isStateful/>
<cronExpression/>
<startTime/>
<endTime/>
<args __collection="list"/>
</scheduleInfo>
</__root>
</bizContext>
调用后的bizContext 同调用前。
查询定时任务系统表,发现状态已改变:
字段 | 值 |
---|---|
EOS_QRTZ_TRIGGERS表 | |
TRIGGER_NAME | eos:trigger:12125717782033 |
TRIGGER_GROUP | eos:group:eos-default:task1 |
JOB_NAME | task1 |
JOB_GROUP | eos:group:eos-default |
IS_VOLATILE | 0 |
DESCRIPTION | |
NEXT_FIRE_TIME | 1212632100000 |
PREV_FIRE_TIME | -1 |
TRIGGER_STATE(定时器状态) | PAUSED |
TRIGGER_TYPE | CRON |
START_TIME | 1212571778000 |
END_TIME | 0 |
CALENDAR_NAME | |
MISFIRE_INSTR | 0 |
JOB_DATA | <BLOB> |
# remove:删除定时器
# 【功能说明】
根据任务名称从指定应用删除定时任务。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.eoscommon.ScheduleUtil.remove,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
类型 | 名称 | 数据类型 | 参数描述 |
参数 | scheduleInfo | DataObject | Unknown macro: {span} 定时任务对象,需要设置下面属性:scheudlerName:调度器名称taskName:任务名称 |
抛出异常说明 无。
规则说明 无。
# 【参考案例】
示例:删除一个定时任务。
场景描述 无。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | scheduleInfo | DataObect | scheduleInfo | 变量 | 传引用 |
参数描述 无。
其他说明 需要用赋值图元在参数ScheduleInfo对象设置shedulerName和taskName属性指定调度器和定时任务。 根据ScheduleInfo对象的shedulerName和taskName属性删除定时任务。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<scheduleInfo __id="1" __type="sdo:com.eos.foundation.ScheduleInfo">
<schedulerName __type="java:java.lang.String">default</schedulerName>
<taskName __type="java:java.lang.String">task1</taskName>
<taskType/>
<targetQName/>
<targetOperation/>
<isStateful/>
<cronExpression/>
<startTime/>
<endTime/>
<args __collection="list"/>
</scheduleInfo>
</__root>
</bizContext>
调用后的bizContext 同调用前。
查询定时任务系统相关表,找不到被删除任务的相关信息。
# resume:重启
# 【功能说明】
根据任务名称从指定应用重启定时任务。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.eoscommon.ScheduleUtil.resume,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | scheduleInfo | DataObject | Unknown macro: {span} 定时任务对象,需要设置下面属性:scheudlerName:调度器名称taskName:任务名称 |
抛出异常说明 无。
规则说明 无。
# 【参考案例】
示例:重启定时任务。
场景描述 无。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | scheduleInfo | DataObect | scheduleInfo | 变量 | 传引用 |
参数描述 无。
其他说明 需要用赋值图元在参数ScheduleInfo对象设置shedulerName和taskName属性指定调度器和定时任务。 根据ScheduleInfo对象的shedulerName和taskName属性重启定时任务。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<scheduleInfo __id="1" __type="sdo:com.eos.foundation.ScheduleInfo">
<schedulerName __type="java:java.lang.String">default</schedulerName>
<taskName __type="java:java.lang.String">task1</taskName>
<taskType/>
<targetQName/>
<targetOperation/>
<isStateful/>
<cronExpression/>
<startTime/>
<endTime/>
<args __collection="list"/>
</scheduleInfo>
</__root>
</bizContext>
调用后的bizContext
同调用前。
查询定时任务系统表,发现状态已改变:
字段 | 值 |
---|---|
EOS_QRTZ_TRIGGERS表 | |
TRIGGER_NAME | eos:trigger:12125717782033 |
TRIGGER_GROUP | eos:group:eos-default:task1 |
JOB_NAME | task1 |
JOB_GROUP | eos:group:eos-default |
IS_VOLATILE | 0 |
DESCRIPTION | |
NEXT_FIRE_TIME | 1212632100000 |
PREV_FIRE_TIME | -1 |
TRIGGER_STATE(定时任务状态) | WAITING |
TRIGGER_TYPE | CRON |
START_TIME | 1212571778000 |
END_TIME | 0 |
CALENDAR_NAME | |
MISFIRE_INSTR | 0 |
JOB_DATA | <BLOB> |
# update:更新定时器
# 【功能说明】
根据任务名称从指定应用更新定时任务。
# 【版本说明】
从EOS 6.0开始提供。
# 【引用路径】
- 本运算逻辑构件对应JAVA方法路径: com.eos.foundation.eoscommon.ScheduleUtil.update,包含在com.eos.foundation.jar中。
- 运算逻辑定义在构件包com.eos.foundation中。
# 【使用说明】
- 参数说明
类型 | 名称 | 数据类型 | 参数描述 |
---|---|---|---|
参数 | scheduleInfo | DataObject | Unknown macro: {span} 定时任务对象,需要设置下面属性,其他属性可以根据修改需要设置:scheudlerName:调度器名称taskName:任务名称 |
抛出异常说明 无。
规则说明 关于Cron表达式,请参考Quartz及Cron-表达式说明 (opens new window)。
# 【参考案例】
示例:更新定时任务信息。
场景描述 无。
参数设置
类型 | 名称 | 数据类型 | 值 | 值类别 | 传递方式 |
---|---|---|---|---|---|
参数 | scheduleInfo | DataObect | scheduleInfo | 变量 | 传引用 |
参数描述 无。
其他说明 需要用赋值图元在参数ScheduleInfo对象设置shedulerName和taskName属性指定调度器和定时任务,设置cronExpression属性为0 0-5 14 * * ? 根据ScheduleInfo对象的scheduleName和taskName属性更新定时任务属性。
调用前的bizContext
<bizContext>
<__root __id="0" __type="java:java.util.HashMap">
<scheduleInfo __id="1" __type="sdo:com.eos.foundation.ScheduleInfo">
<schedulerName __type="java:java.lang.String">default</schedulerName>
<taskName __type="java:java.lang.String">task1</taskName>
<taskType/>
<targetQName/>
<targetOperation/>
<isStateful/>
<cronExpression __type="java:java.lang.String">0 0-5 14 * * ?</cronExpression>
<startTime/>
<endTime/>
<args __collection="list"/>
</scheduleInfo>
</__root>
</bizContext>
调用后的bizContext 同调用前。
查询系统表发现触发器表已经修改:
字段 | 值 |
---|---|
TRIGGER_NAME | eos:trigger:12125676423590 |
TRIGGER_GROUP | eos:group:eos-default:task1 |
CRON_EXPRESSION | 0 0-5 14 * * ? |
TIME_ZONE_ID | Asia/Shanghai |