`

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  
写的很好,帖子来的很急时啊,正好在做这一起
支持。。。
支持。。。
支持。。。

相关推荐

    jBPM4.4 详解 API 中文

    jBPM,全称java Business Process Management,是一款基于Java的业务流程管理系统,以其开放性和灵活性在开源工作流引擎市场中占据一席之地。jBPM4.4版本特别之处在于其底层依赖于Active Diagram模型,并且采用了...

    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 4.4 开发指南pdf版

    这一节涵盖了如何在jBPM中使用JMS来发送和接收消息。 ###### 2.9.1 为简化测试模拟JMS提供器 介绍了如何设置模拟的JMS提供器以便于开发和测试。 ###### 2.9.2 文本消息 讲解了如何处理纯文本格式的消息。 ###### ...

    JBPM4 java源代码分包详解JBPM4

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

    JBPM4 常用表结构及其说明

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

    JBPM数据库表关系

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

    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构建高效的企业级流程管理系统。...

    JBPM5手册中文

    通过本手册,读者可以了解到jBPM5的主要组成部分以及如何使用这些工具和技术来构建和管理复杂的业务流程。无论是对于初学者还是经验丰富的开发者而言,jBPM5都提供了一套强大且灵活的解决方案。

    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...

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

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

    jbpm5.3 中文手册

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

    jbpm 工作流引擎

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

Global site tag (gtag.js) - Google Analytics