定时器(Timer)可以说是jBPM的标准配置了,在多种节点,如Task-Node,Node,fork和Join等,都可以有Timer子元素。
声明一个定时器:
<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' />
</timer>
<transition name='time-out-transition' to='...' />
</state>
定时器的属性:
name: 定时器名称
duedate: 预期触发时间
repeat: 每次执行间隔
定时器的子元素:
transition: 当定时器执行时将通过的跃迁(transition)路径名称
action: 定时器触发时执行的动作
上述属性和元素只有dudate是必要的。其他都是可选的。
duedate语法:
duedate ::= [<basedate> +/-] <duration>
如果忽略basedate,那么basedate就是计算这个公式的时间,例如进入一个task-node后创建timer的时刻
duration ::= <quantity> [business] <unit>
unit有 second, seconds, minute, minutes, hour, hours, day, days, week, weeks, month, months, year, years
如果忽略business
,那么计算出来的duration会是一个绝对时间
配置例子:
<timer repeat="30 days" name="task-reminder" duedate="01 business day">
<action class="com.sample.action.TaskReminder"></action>
</timer>
|
执行Token一旦通过signal或者终止任务(Task)的方式离开当前节点,定时器也就被取消了。当定时器执行时,以下事件将依次发生:
如果需要启用timer,则需要scheduler服务及启动JobExecutor。根据经验,jBPM中使用hsqldb数据库是启动不了timer的,使用mysql的就可以。我想这个会不会是因为使用hsqldb时,数据没有提交,导致JobExecutor查询数据库时查不到数据呢?
另外,可以通过以下代码来启动JobExecutor
private void startJobExecutor()
{
JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
//start job executor
jbpmConfiguration.getJobExecutor().start();
log.info("JobExecutor started.");
}
|
需要注意的是,由于jBPM要求使用的是数据库隔离级别是Read-Committed还有乐观锁机制,使用timer很容易导致StaleObjectException。原因是JobExecutor会不断的更新token,业务代码端在提交事务的时候会发现记录的version被更新了,从而导致出现该异常。
分享到:
相关推荐
JBPM中 使用JobExecutor执行timer定义的job 使用此处中转,别人的资料。工作使用。
2.8 JBPM_TIMER:流程定时器表 19 2.9 JBPM_TOKENVARIABLEMAP:流程TOKEN变量MAP表 19 2.10 JBPM_MODULEINSTANCE:流程模块实例表 20 2.11 JBPM_BYTEARRAY:文件模块形式的流程变量实例表 20 2.12 JBPM_BYTEBLOCK: ...
jbpm4流程提交及执行完整代码,把每个文件放到对应的位置即可。 生成流程跟踪图的方法见: http://download.csdn.net/source/2905937
JBPM采购申请系统——10_任务事件与任务控制器.7z JBPM采购申请系统——10_任务事件与任务控制器.7z JBPM采购申请系统——10_任务事件与任务控制器.7z JBPM采购申请系统——10_任务事件与任务控制器.7z JBPM采购申请...
2.8 JBPM_TIMER:流程定时器表 19 2.9 JBPM_TOKENVARIABLEMAP:流程TOKEN变量MAP表 19 2.10 JBPM_MODULEINSTANCE:流程模块实例表 20 2.11 JBPM_BYTEARRAY:文件模块形式的流程变量实例表 20 2.12 JBPM_...
JBPM采购申请系统——06_JBPM版本控制及Token对象.7z JBPM采购申请系统——06_JBPM版本控制及Token对象.7z JBPM采购申请系统——06_JBPM版本控制及Token对象.7z JBPM采购申请系统——06_JBPM版本控制及Token对象.7z ...
5.12 表JBPM4_JOB 13 5.13 表JBPM4_LOB 14 5.14 表JBPM4_PARTICIPATION 15 5.15 表JBPM4_PROPERTY 15 5.16 表JBPM4_SWIMLANE 15 5.17 表JBPM4_TASK 16 5.18 表JBPM4_VARIABLE 17 6、操作: 19 6.1 发布一个流程...
使用JBoss jBPM实现流程访问和执行的授权
详细分析解释JBPM工作流API 内含丰富示例截图 代码
JBPM采购申请系统——20_JBPM4.0使用及特性.7z JBPM采购申请系统——20_JBPM4.0使用及特性.7z JBPM采购申请系统——20_JBPM4.0使用及特性.7z JBPM采购申请系统——20_JBPM4.0使用及特性.7z JBPM采购申请系统——20_...
JBPM采购申请系统——09_任务实例与任务分配.7z JBPM采购申请系统——09_任务实例与任务分配.7z JBPM采购申请系统——09_任务实例与任务分配.7z JBPM采购申请系统——09_任务实例与任务分配.7z JBPM采购申请系统——...
jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍
3.3.18 create-timer(创建定时器) 25 3.3.19 cancel-timer(取消定时器) 26 3.3.20 task(任务) 26 3.3.21 swimlane(泳道) 27 3.3.22 assignment(委派) 28 3.3.23 controller(控制器) 29 3.3.24 process-state 子流程 ...
JBPM设计器,纯JS
JBPM3.2与Spring结合时任务调度的实现.doc
jbpm jbpm4.3.jar DDDDDDDD
\jbpm简介\jbpm简介\jbpm简介\jbpm简介\jbpm简介
通过查看JBPM的表,我们知道要实现流程监控功能就是把JBPM当中的JBPM_PROCESSDEFINITION(已发布的流程表),JBPM_PROCESSINSTANCE(流程实例表),JBPM_TASKINSTANCE(流程产生的任务实例表)这三张表串联起来就可以...
《partner4java 讲述jBPM4》之第三步:图形化查看执行位置 http://blog.csdn.net/partner4java/article/details/8518312
jbpm 数据库jbpm 数据库jbpm 数据库jbpm 数据库jbpm 数据库