基于quartz任务调度组件的使用

2.0 版本的 aop 框架中集成了 quartz 任务调度组件,该组件包含三部分:

1.      任务管理组件 : 用来启动和停止任务调度引擎,管理任务(新增,启动,修改,停止,挂起 / 继续,删除任务)

org.frameworkset.task.TaskService

 

2.      任务管理服务组件:按分组模式管理所有的 job 任务,并从相关的数据源加载作业任务

所有的任务管理组件都从抽象类 org.frameworkset.task. ScheduleService 继承

3.      任务配置文件:用来配置不同的作业服务和具体的作业 job 。对应的配置文件为:

/bbossaop/resources/org/frameworkset/task/quarts-task.xml

下面分别举例说明:

 

1.1    任务管理组件

任务管理控件:用来启动和停止任务调度引擎,管理任务(启动,修改,停止,删除任务)

*          org.frameworkset.task.TaskService

启动任务引擎

TaskService.getTaskService ().startService();

停止任务引擎

TaskService.getTaskService ().stopService();

删除任务

TaskService.getTaskService ().deleteJob(String jobname, String groupid)

暂停任务

TaskService.getTaskService ().pauseJob(String jobname, String groupid)

继续任务

TaskService.getTaskService (). resumeJob(String name, String groupid)

新增和启动任务

TaskService.getTaskService (). startExecuteJob(String groupid, SchedulejobInfo jobInfo)

更新任务

TaskService.getTaskService () .updateExecuteJob(String groupid, SchedulejobInfo jobInfo)

 

1.2    任务管理服务组件

所有的任务管理组件都从抽象类 org.frameworkset.task. ScheduleService 继承,定义了一下抽象方法:

public abstract void startService(Scheduler scheduler) throws ScheduleServiceException;

public   abstract void startExecuteJob(Scheduler scheduler,SchedulejobInfo jobInfo);

    public   abstract void updateJob(Scheduler scheduler,SchedulejobInfo jobInfo);

    public   abstract void updateTriger(Scheduler scheduler,SchedulejobInfo jobInfo);

public   abstract void updateJobAndTriger (Scheduler scheduler, SchedulejobInfo jobInfo);

系统中默认提供的任务管理组件

org.frameworkset.task.DefaultScheduleService ,用来加载系统中默认的静态的任务,可以配置多个作业任务

如果用户需要动态管理自己的作业任务,那么可以编写自己的 ScheduleService 实现 org.frameworkset.task. ScheduleService 类的抽象方法:

public class DemoScheduleService extends ScheduleService {

 

    @Override

    public void startExecuteJob(Scheduler scheduler, SchedulejobInfo jobInfo) {

       // 执行新定义的任务

 

    }

 

    @Override

    public void startService(Scheduler scheduler)

           throws ScheduleServiceException {

       // 系统启动时,从资源库中获取所有的已经存在的任务,并加载到 scheduler 引擎中。

 

    }

 

    @Override

    public void updateJob(Scheduler scheduler, SchedulejobInfo jobInfo) {

       更新一个已经加载的作业任务

 

    }

 

    @Override

    public void updateJobAndTriger(Scheduler scheduler, SchedulejobInfo jobInfo) {

       更新作业任务,并触发任务的执行

 

    }

 

    @Override

    public void updateTriger(Scheduler scheduler, SchedulejobInfo jobInfo) {

       更新任务触发器

 

    }

 

}

 

编写好自定义的任务服务组件后就可以将其配置到 quarts-task.xml 文件中了,例如:

< properties >

    < property name = "taskconfig" enable = "true" >

       < list >

           < property name = "demo 任务执行器 " taskid = " DemoScheduleService "

              class = "org.frameworkset.task. DemoScheduleService " used = "true" ></ property >

       </ list >

    </ property >

</ properties >

必须指定唯一的 taskid 属性, use 属性用来设置该任务组件是否生效。

 

1.3    任务管理配置文件

一个简单的配置文件

/bbossaop/resources/org/frameworkset/task/quarts-task.xml 的内容如下:

 

< properties >

    < property name = "taskconfig" enable = "true" >

       < list >

           < property name = " 定时任务执行器 " taskid = "default"

              class = "org.frameworkset.task.DefaultScheduleService" used = "true" >

              <!--

                  可执行的任务项

                  属性说明:

                  name :任务项名称

                  id: 任务项标识

                  action: 具体的任务执行处理程序 , 实现 org.frameworkset.task.Execute 接口

                  cron_time    cron 格式的时间表达式,用来管理任务执行的生命周期,相关的规则请参照日期管理控件 quartz 的说明文档

                  used 是否使用

                  true 加载,缺省值

                  false 不加载     

                  子元素说明:

                  Map property : 设置任务执行的参数, name 标识参数名称, value 指定参数的值

              -->

              < list >

                  < property name = "workbroker" jobid = "workbroker"

                     class = "org.frameworkset.task.TestJob"

                     cronb_time = "0 56 14 * * ?" used = "true" >

                     < map >

                         < property name = "send_count" value = "2" />

                     </ map >

                  </ property >

              </ list >

           </ property >

       </ list >

    </ property >

</ properties >

说明:

org.frameworkset.task.DefaultScheduleService 是系统中默认提供的任务管理组件,用来加载系统中默认的静态的任务,可以配置多个,例如:

< property name = "workbroker" jobid = "workbroker"

                     action = "org.frameworkset.task.TestJob"

                     cronb_time = "0 56 14 * * ?" used = "true" >

                     < map >

                         < property name = "send_count" value = "2" />

                     </ map >

</ property >

属性说明:

Taskid :用来区分任务组,可以作为任务组的唯一标识,系统中通过 Taskid jobid 来区分唯一的一个作业任务, TaskService 组件的很多方法中都有 groupid jobname 两个参数, taskid 就对应于 groupid 参数, jobid 对应于 jobname 参数。

Name 任务的名称

Jobid 任务的标识

Action 任务执行的操作

cronb_time 任务执行的调度时间,具体需要参考 cronb_time 的语法。

use :区分任务是否生效

内嵌的节点

< map >

                         < property name = "send_count" value = "2" />

                     </ map >

用来指定任务执行时需要的参数。

需要特别说明的是 Action 类必须实现 org.frameworkset.task.Execute 接口,例如:

public class TestJob implements Execute, Serializable {

    public void execute(Map parameters) {

       System. out .println( "send_count = " +parameters.get( "send_count" ));

    }

 

}

 

如果用户需要动态管理自己的作业任务,那么可以实现 org.frameworkset.task. ScheduleService

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值