JBPM的时间服务

JBPM的时间服务
JBPM时间服务的使用主要体现在对timer节点的使用。timer节点有两种使用方式:一种是挂接到node节点下,在进入node节点时触发,在离开node节点时终止;另外一种是挂接到task节点下,在任务创建时触发,默认在任务完成后终止。下面举例说明:
  一、挂接到node节点  
  <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' />
        <transition name='time-out-transition' to='next' />
      </timer>
    </state>

  解释:timer将会在流程令牌进入节点catch crooks时触发,延迟3 business hours开始执行动作,每10 business minutes重复执行一次,直到令牌离开catch crooks节点。
  对time节点来说 name、repeat、transition都是可选属性。对一个流程定义来说,每一个time节点的name必须唯一,如果你不定义name属性,引擎会默认把node节点的name赋给timer。在上面这个例子里,如果你不定义timer节点的name,则它的name就会是catch crooks。说说repeat属性,如果你不定义它,则timer就会只执行一次动作不会重复执行。transition属性,如果定义了这个属性,流程令牌会在timer执行动作完毕后,顺着这个路径离开node节点。所以在上面这个例子里,尽管定义了repeat属性,action还是会只执行一次。
  action节点,可选,即timer节点在时间到时执行的动作,可以是任意action类型,包括script。注意与时间有关的两种action类型:create-timer 和 cancel-timer。其实一个timer节点在被引擎解释时就是被分解为create-timer 和 cancel-timer两个action,create-timer挂接到node-enter事件中,cancel-timer挂接到node-leave事件中。action节点最多只可以挂一个。
  说说整个过程:
  1、令牌进入节点catch crooks
  2、timer被触发(实际这时是在执行create-timer动作)
  3、3 business hours后 timer 事件触发
  4、定义的action被执行
  5、令牌顺着time-out-transition路径离开catch crooks节点
  6、cancel-timer动作被执行即timer终止(没有给repeat的机会)
  二、挂接到task节点
  <task-node name="Evaluate web order">
    <task swimlane="salesman">
      <timer duedate="20 seconds" repeat="10 seconds" cancel-event='task-start'>
        <action class="org.jbpm.websale.RemindActor">
          <swimlaneName>salesman</swimlaneName>
        </action>
      </timer>
    </task>
    <transition name="OK" to="salefork" />
    <transition name="More info needed" to="Fix web order data" />
  </task-node>

  与挂接到node 的区别是:这里可以定义一个属性cancel-event,可以指定那些事件可以终止timer的执行,默认是task-end。可以指定多个事件,以','分割,任一事件触发timer即终止。
  可以看到jbpm对任务实例和节点执行时的时间服务还是支持的很好,可以做出很多的扩展,但是它没有对整个流程实例本身提供更多的服务,比如说定时的流程启动和整个流程的时间控制等等。以及对精确时间点的支持还不够。


http://www.blogjava.net/ronghao 荣浩原创,转载请注明出处:)

你可能感兴趣的:(jbpm)