`

jBPM中Timer的使用

    博客分类:
  • jBPM
阅读更多
[size=medium]jBPM中自带的文档中关于定时器Timer的使用介绍的比较少, 刚好最近要用到, 不过也很简单, 其中有几个地方需要注意一下.
使用版本为jBPM 3.2.2
1.使用Timer首先要在web.xml中配置JobExecutorServlet:
<servlet >
     <servlet-name>JobExecutorServlet</servlet-name>
     <servlet-class>org.jbpm.job.executor.JobExecutorServlet</servlet-class>
     <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet-mapping >
     <servlet-name>JobExecutorServlet</servlet-name>
     <url-pattern>/jobexecutor</url-pattern>
   </servlet-mapping>

这个相当于在启动webapp之后启动一个线程, 不停的检查Job表中是否存在到期的job
2.接着就是在processdefition.xml中定义Timer, 这里有一个小小的问题, 就是使用插件配置的Timer是放在<task-node>节点下的, 这个实际上是错误的, 而应该配置在具体的任务实例节点下,即<task>节点下,比如:
<task-node name="资金收到确认">
		<task name="资金收到确认">
			<timer duedate="7 days" name="checkTimer" transition="检查">
				<action class="com.baiyao.workflow.payment.handler.TimerCheckActionHandler"></action>
			</timer>
			<assignment class="com.baiyao.workflow.payment.handler.PaymentComfirmAssignmentHandler"></assignment>
		</task>
		<transition to="拨付"></transition>
		<transition to="检查资金拨付情况" name="检查"></transition>
	</task-node>


3.最后就是写相应的ActionHandler, 当Timer到达指定的时间时就会执行该ActionHandler, 比如这样写:

/**
 * 超过七个工作日, 退出当前确认节点, 进入内勤检查任务节点
 * 
 * @author Macro Chen
 * @since Jul 18, 2008
 */
public class TimerCheckActionHandler implements ActionHandler {

	private static final long serialVersionUID = 1L;

	public void execute(ExecutionContext ctx) throws Exception {
		long taskId = ctx.getTaskInstance().getId();
		TaskInstance ti = JbpmUtils.getTaskInstance(taskId);
		JbpmUtils.end(ti, "检查");
	}

}


Timer还有几个需要注意的, 一个就是默认情况下流程在执行node-enter事件的时候会自动创建timer实例, 然后添加到job表中, 等待去执行指定ActionHandler, 如果当前任务实例被处理, 结束当前任务, 执行了node-leave事件之后, 默认情况下Timer会被自动取消.[/size]
5
0
分享到:
评论
8 楼 taga 2009-04-15  
7 个工作日应该是 7 business days,不是7 days
7 楼 macrochen 2008-08-27  
引用
楼主使用没有发现什么问题吗?为什么我在用的时候,线程启动成功后,倒是执行了,但就是循环执行,没有按照时间设置的周期去做,是不是3.2的 bug?

可能是你配置的问题, 这种bug应该不会存在
6 楼 tigerlg 2008-08-26  
楼主使用没有发现什么问题吗?为什么我在用的时候,线程启动成功后,倒是执行了,但就是循环执行,没有按照时间设置的周期去做,是不是3.2的 bug?
5 楼 macrochen 2008-08-12  
引用
能写写其实的应用吗?我现在有就问题,就是我在做一个借款的流程,当用户提交借款单后,要经过部门领导、上级领导审批,在这个审批过程中他可以撤消申请,我想用fork join做不过不怎么怎么处理,你能给点建议吗?

你说的应该是不同意驳回么, 这个应该不需要使用fork join, 如果是申请人撤销的话, 这个流程可能有问题.
4 楼 yuyanshan 2008-08-11  
能写写其实的应用吗?我现在有就问题,就是我在做一个借款的流程,当用户提交借款单后,要经过部门领导、上级领导审批,在这个审批过程中他可以撤消申请,我想用fork join做不过不怎么怎么处理,你能给点建议吗?
我的QQ:54953115
3 楼 Spongelife 2008-07-31  
谢谢,受教了

在jbpm自带例子websale中有使用示范。
在编辑器中确实将timer放到了task外面,还正容易引人犯错 
2 楼 macrochen 2008-07-29  
我只写了我在项目中timer的用法, 可能不是很深入
1 楼 matikak 2008-07-28  
写的很好,帖子来的很急时啊,正好在做这一起
支持。。。
支持。。。
支持。。。

相关推荐

    JBPM数据库表说明 jbpm 工作流 详细到每一个字段,不要下载分

    1.6 JBPM_DELEGATION:流程代理类表(用于实例化jbpm中的action类) 6 1.7 JBPM_TASK:流程任务表 6 1.8 JBPM_TASKCONTROLLER:流程任务控制器 7 1.9 JBPM_VARIABLEACCESS:流程变量表 7 1.10 JBPM_MODULE...

    jbpm数据库表结构

    - **JBPM_TIMER**:计时表,记录流程中的定时器信息。 - **JBPM_POOLEDACTOR**:汇集参与者表,记录参与者的信息。 - **JBPM_RUNTIMEACTION**:运行中行为表,记录运行中的操作信息。 - **JBPM_LOG**:流程日志...

    JBPM数据库表说明.doc

    记录流程模块的实例信息,当流程中使用到子流程时,会在该表中创建对应的记录。 #### 2.11 JBPM_BYTEARRAY 存储以文件形式存在的流程变量,比如文档、图片等二进制数据。 #### 2.12 JBPM_BYTEBLOCK 未提供详细说明...

    jbpm帮助文档(中文带源码)

    这包括安装必要的工具和库,创建流程定义文件(使用JPDL),然后在JBPM引擎中启动和跟踪流程实例。 三、学习 JPDL 3.1 简介 JPDL是JBPM中定义流程的关键,它允许开发者声明流程的各个组件,如开始和结束节点、任务...

    JBPM数据库表关系

    - **JBPM_TIMER**: 计时器,定义了流程中的定时事件。 - **JBPM_TOKEN, JBPM_TOKENVARIABLEMAP**: 令牌表示流程执行的状态,变量映射则关联了令牌与变量。 - **JBPM_TRANSITION**: 转换表,定义了流程中节点间的...

    JBPM4 java源代码分包详解JBPM4

    在深入研究JBPM4的源代码时,我们可以从其包结构中了解到框架的核心功能和设计理念。 1. **org.jbpm.pvm.internal.ant**: 此包包含与Ant构建工具集成的相关类,主要用于发布流程和辅助启动JBoss服务器的任务。这...

    JBPM3.2与Spring结合时任务调度的实现.doc

    在3.1.x版本中,是通过`jbpm_timer`表来存储定时任务,而在3.2版本中,这个表被`jbpm_job`表所取代。这意味着后台线程会持续检查`jbpm_job`表,当发现需要触发的任务时,会根据任务的属性进行定时或循环执行。 在...

    JBPM中文表结构以及流程中文描述

    本文将详细介绍jBPM的中文表结构及其流程中的各个节点含义。 首先,jBPM的基本概念包括流程定义、流程实例、任务实例等。流程定义是流程的蓝图,描述了流程的各个步骤和逻辑。流程实例则是流程定义在实际运行中的...

    jbpm-7.3.0.Final-bin 工作流

    5. **ejb服务与定时器**:jbpm-services-ejb-timer-7.3.0.Final.jar和jbpm-services-ejb-client-7.3.0.Final.jar提供了基于EJB的定时服务和客户端接口,使得jBPM能够集成到Java EE环境中,实现定时触发流程事件或...

    jbpm数据库脚本

    通过项目地址(http://www.zuidaima.com/share/1989287537953792.htm)访问,可以获取更详细的jbpm项目示例和教程,帮助开发者理解和学习如何在实际项目中使用jbpm,结合SSH和ExtJS构建高效的企业级流程管理系统。...

    BPM中 使用JobExecutor执行timer定义的job

    JBPM中 使用JobExecutor执行timer定义的job 使用此处中转,别人的资料。工作使用。

    JBPM4 每张表对应的含义

    JBPM(JBoss Business Process Management)是一款开源的工作流管理系统,广泛应用于各种业务流程管理场景中。JBPM4版本是该系列中的一个重要版本,其数据库设计反映了该系统的核心功能与架构。本文将详细介绍JBPM4...

    JBPM工作流开发指南

    四、流程中任务的分配 37 4.1 assignment-handler方式的任务分配 38 4.2 swimlane方式的任务分配 39 五、JBPM持久化 42 5.1 特殊数据库支持 42 5.2 JBPM数据库的安装 42 5.2 JBPM流程发布 45 5.2.1 搭建JBPM的WEB...

    JBPM4 常用表结构及其说明

    在使用JBPM4进行流程管理时,不同的操作会导致相应的表发生变化。例如: - **发布一个流程(deploy)** - `JBPM4_DEPLOYMENT`: 新增一条记录。 - `JBPM4_LOB`: 新增一条记录。 - `JBPM4_DEPLOYPROP`: 新增四条记录...

    JBPM工作流开发指南(中文)

    JBPM工作流开发指南是针对使用JBPM框架进行工作流应用开发的专业参考资料,该指南以中文形式详细介绍了如何利用JBPM来设计、实现和管理业务流程。JBPM是一款开源的工作流管理系统,它允许开发者集成业务流程到应用...

    jbpm5.3 中文手册

    以上五个知识点涵盖了 jbpm5.3 中关于结束事件、错误事件、定时事件、脚本任务和服务任务的核心概念和使用方法。通过对这些概念的理解,可以有效地设计和实现复杂的业务流程自动化,提高工作效率和准确性。在实际...

    jbpm 工作流引擎

    - **流程建模语言**:jBPM 提供了一套直观的流程建模语言,能够以图形化的方式表示业务流程,包括但不限于任务(task)、异步通信的等待状态(wait state)、定时器(timer)以及自动化动作(automated action)等元素。...

Global site tag (gtag.js) - Google Analytics