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

时间:2022-08-31 20:27:15

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,本例的应用场景如下:试用期将满一个月,提醒主管填写入职信息。流程定义仅摘抄部分:

 <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与设计模式的博文。动作的实现类较简单,不表。


   

   


本文出自 “江南矿工技术空间” 博客,请务必保留此出处http://jncumter.blog.51cto.com/812546/1751020