第12章 调度程序
本章描述在jBPM中怎样使用定时器。
在流程的事件之上,定时器可以被创建,当定时器到预定的期限时,动作被执行或者转换发生。
12.1 定时器
指定一个定时器最简单的方式是添加一个timer元素到节点。
<state name='catch crooks'>
<timer name='reminder'
duedate='3 business hours'
repeat='10 business minutes'
transition='time-out-transition' >
<action class='the-remainder-action-class-name' />
</timer>
</state>
定时器在节点上被指定,在节点被离开后不会被执行,转换和动作是可选的,当定时器被执行,下面事件将顺序发生:
l 一个timer类型的事件被激活。
l 如果指定了一个动作,则动作被执行。
l 如果指定了一个转换,一个信号将被发送,通过给定转换继续执行。
每个定时器必须有一个唯一的名称,如果在timer元素中没有指定名称,则节点的名称将被作为定时器的名称。
定时器动作可以是所支持的任何动作元素,如action或script。
定时器通过动作创建和取消,有两个动作元素create-timer和cancel-timer。事实上,上面所示的定时器元素只是create-timer动作依附于node-enter事件、cancel-timer动作依附于node-leave事件的一个简略表示。
12.2 调度程序部署
流程执行创建和取消定时器,定时器有专门的存储,一个独立的定时器运行器必须检查定时器存储并且在适当的时候执行定时器。
图
12.
1调度程序组件
下面的类图展示了调度程序部署时相关的类,SchedulerService接口和TimerExecutor接口被指定用来使定时器执行机制是可插入的。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1206543
<script src="http://localhost:82/PromoteIcon.aspx?id=1206543" type="text/javascript"></script>[
收藏到我的网摘] [
发送Trackback] 箫杉发表于 2006年09月11日 09:17:00
href="http://blog.csdn.net/mrshan/Services/Pingback.aspx" rel="pingback" />
<script type="text/javascript">function hide(){showComment();}</script>
<script type="text/javascript">document.write(" ");</script>
评论
http://blog.csdn.net/jeffen2006/
如下的jbpm的例子中的流程定义:
<?xml version="1.0" encoding="UTF-8"?>
<process-definition>
<start-state>
<transition to="a"/>
</start-state>
<state name="a">
<timer name="reminder" duedate="0 business seconds" repeat="5 business seconds">
<action class="org.jbpm.scheduler.exe.TimerDbTest$NoOp"/>
</timer>
<transition to="b"/>
<transition name="back" to="a"/>
</state>
<state name="b"/>
</process-definition>
在上面的定义文件中,分别定义了timer(定时器)的duedate(到期时间)和repeat(重复时间)的值为:0秒和5秒
根据上面的内容,应该是当进入state 'a'这个节点后,定时器开始启动.然后等到我们设定的duedate时,开始执行action类的execute方法.然后,每5秒重复一