您的位置:首页 > 其它

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

2010-07-17 00:02 639 查看
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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: