`

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工作流API 内含丰富示例截图 代码

    JBPM数据库表说明.doc

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

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

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

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

    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帮助文档供大家学习

    org.jbpm.api.job Job, Message and Timer interfaces related to the ManagementService org.jbpm.api.jpdl specific jPDL interfaces org.jbpm.api.listener interfaces for implementing event listeners, ...

    JBPM4工作流应用开始指南.rar

    297 18.2 为集成配置jBPM4 297 18.3 为集成配置Spring 299 18.4 使用 301 18.5 测试 302 18.6 小结 302 第19章 jBPM4与JBoss应用服务器集成 303 19.1 流程定义打包部署 303 19.2 在JBoss企业级编程模型中使用jBPM4 ...

    jbpm 工作流引擎

    JBoss jBPM有一套直观的流程建模语言,这套语言能用任务(task),异步通信的等待状态(wait state ),定时器(timer),自动化的动作(automated action)等来图形化的表示业务流程。为了把这些操作集成在一 起,...

    深入浅出jBPM完整版part1

    2.13.2 BeanShell在jBPM中的用法........63 第 3 章 流程节点详解.....................................67 3.1 公共属性...................................................68 3.2 Node节点........................

    jbpm-services-example:jBPM Serivces API示例

    jBPM Services REST项目该项目的目的是展示如何轻松地将jBPM服务api(带有ejb实现)用于在Java EE应用程序中嵌入jBPM。去做说明必要的组件(持久性单元,用户组回调机制) 我们是否需要此项目中的自定义回调或仅需要...

    深入浅出jBPM完整版part2

    2.13.2 BeanShell在jBPM中的用法........63 第 3 章 流程节点详解.....................................67 3.1 公共属性...................................................68 3.2 Node节点........................

    designer设计器

    JBoss jBPM有一套直观的流程建模语言,这套语言能用任务(task),异步通信的等待状态(wait state ),定时器(timer),自动化的动作(automated action)等来图形化的表示业务流程。为了把这些操作集成在一起,...

    jboss seam

    这是中文手册,Seam为持久化集成了JPA和Hibernate 3,为轻量化的异步性集成了EJB Timer Service和Quartz,为工作流集成了jBPM,为业务规则集成了JBoss规则,为电子邮件集成了Meldware Mail,为完整的文本搜索集成了...

Global site tag (gtag.js) - Google Analytics