14章 定时器
本章描述了jBPM如何和定时器工作一起工作。
在流程的事件上,定时器能够被创建。当一个定时器到期时,一个动作能够被执行或一个事务能够被处理。
14.1. 定时器
最简单的指定一个定时器方式是通过在节点上增加一个定时器元素。
<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 一个定时器类型的事件被触发
l 如果动作被指定了,那么动作将被执行
l 如果转换被指定了,那么信号将通过给定的转换发往恢复执行。
每个定时器必须有唯一的名称。如果在元素中没有指定名称,那么将使用节点名称作为定时器的名称。
定时器动作能够支持任何的动作元素,例如动作(action)或脚本(script)。
定时器被动作(actions)创建或撤消。这两个动作元素创建定时器(create-timer)和撤消定时器(cancel-timer)。实际上,上面所列的定时器元恰好是短表示法。create-timer动作在node-enter上,cancel-timer动作在node-leave上。
14.2. 调度部署
流程执行创建并撤消定时器。定时器存储在一个定时器仓库中。一个独立的定时器执行器必须检查定时器仓库并且当他们到期后执行这个定时器。
图 14-1 定时器构件概况
下列的类图显示了调度器部署中所涉及到的类。SchedulerService和TimerExecutor接口被指定为使定时器执行的机制是可插拨的。
图14-2 调度器类概况