更新时间: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,如需转载请自行联系原作者