且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

jbpm timer实现自动提醒审批功能

更新时间:2022-08-22 15:56:05

jbpm timer实现自动提醒审批功能

   jbpm采用<timer>标签进行定时管理。timer可以被用于decision、fork & join、task等各种元素,可以设置开始时间duedate和频率repeat,定时器动作可以是所支持的任何动作元素,如action或script,甚至会运行自行设置的其他动作。定时器通过动作创建和取消,有两个动作元素create-timer和cancel-timer。事实上,默认的定时器元素只是create-timer动作依附于node-enter事件、cancel-timer动作依附于node-leave事件的一个简略表示。

   timer有一个非常重要的属性cancel-event,当timer应用于task时使用的,timer-task的cancel-event允许定制。默认情况下,当任务被结束时(即完成)任务上的定时器将被取消,这是通过在定时器上使用cancel-event属性,流程开发者可以定制诸如task-assign或task-start。cancel-event支持多个事件,通过在属性中指定一个用逗号分割的列表,可以组合cancel-event的类型。

   调度这一块其实分成2部分,一个就是定时器,还有一个是调度服务。从jbpm的javadoc可以看到调度服务涉及了几个类。

   如应用timer首先需要定义jpdl,本例的应用场景如下:试用期将满一个月,提醒主管填写入职信息。流程定义仅摘抄部分:

1
2
3
4
5
6
7
 <task g='697,132,102,53' name='填写入职信息'>
    <on event='timeout'>
    <timer duedate='2 minutes' repeat='10 minutes'/>
    <event-listener class='com.fx.oa.module.bpm.workflow.server.handler.PositiveDirectLeaderConfirmHandler'/>
    </on>
    <transition g='-51,-7' name='到判断3' to='判断3'/>
  </task>

   该timer的含义是任务到达(=生成)后两分钟,每10次执行一次动作,其事件为超时。通过<event-listerner>可以看出应用的是监听者模式。具体可参考之前的关于jbpm与设计模式的博文。动作的实现类较简单,不表。


   

        本文转自 gaochaojs 51CTO博客,原文链接:http://blog.51cto.com/jncumter/1751020,如需转载请自行联系原作者