posts - 193,  comments - 520,  trackbacks - 0
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 荣浩原创,转载请注明出处:)
posted on 2007-06-21 12:00 ronghao 阅读(1708) 评论(2)  编辑  收藏 所属分类: 工作流jbpm3

FeedBack:
# re: JBPM的时间服务
2007-06-21 17:41 | lang
能不能给点工作流的入门资料,最近想学习以下。  回复  更多评论
  
# re: JBPM的时间服务
2007-06-21 18:25 | ronghao
入门资料,可能没有,你可以google下wfms规范。另外,hongsoft和银狐999的博客很不错。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2007年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

关注工作流和企业业务流程改进。现就职于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

常用链接

留言簿(38)

随笔分类

随笔档案

文章分类

文章档案

常去的网站

搜索

  •  

最新评论

阅读排行榜

评论排行榜