[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]
分享到:
相关推荐
jBPM,全称java Business Process Management,是一款基于Java的业务流程管理系统,以其开放性和灵活性在开源工作流引擎市场中占据一席之地。jBPM4.4版本特别之处在于其底层依赖于Active Diagram模型,并且采用了...
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_TIMER**:计时表,记录流程中的定时器信息。 - **JBPM_POOLEDACTOR**:汇集参与者表,记录参与者的信息。 - **JBPM_RUNTIMEACTION**:运行中行为表,记录运行中的操作信息。 - **JBPM_LOG**:流程日志...
记录流程模块的实例信息,当流程中使用到子流程时,会在该表中创建对应的记录。 #### 2.11 JBPM_BYTEARRAY 存储以文件形式存在的流程变量,比如文档、图片等二进制数据。 #### 2.12 JBPM_BYTEBLOCK 未提供详细说明...
这包括安装必要的工具和库,创建流程定义文件(使用JPDL),然后在JBPM引擎中启动和跟踪流程实例。 三、学习 JPDL 3.1 简介 JPDL是JBPM中定义流程的关键,它允许开发者声明流程的各个组件,如开始和结束节点、任务...
- **JBPM_TIMER**: 计时器,定义了流程中的定时事件。 - **JBPM_TOKEN, JBPM_TOKENVARIABLEMAP**: 令牌表示流程执行的状态,变量映射则关联了令牌与变量。 - **JBPM_TRANSITION**: 转换表,定义了流程中节点间的...
在深入研究JBPM4的源代码时,我们可以从其包结构中了解到框架的核心功能和设计理念。 1. **org.jbpm.pvm.internal.ant**: 此包包含与Ant构建工具集成的相关类,主要用于发布流程和辅助启动JBoss服务器的任务。这...
在3.1.x版本中,是通过`jbpm_timer`表来存储定时任务,而在3.2版本中,这个表被`jbpm_job`表所取代。这意味着后台线程会持续检查`jbpm_job`表,当发现需要触发的任务时,会根据任务的属性进行定时或循环执行。 在...
本文将详细介绍jBPM的中文表结构及其流程中的各个节点含义。 首先,jBPM的基本概念包括流程定义、流程实例、任务实例等。流程定义是流程的蓝图,描述了流程的各个步骤和逻辑。流程实例则是流程定义在实际运行中的...
5. **ejb服务与定时器**:jbpm-services-ejb-timer-7.3.0.Final.jar和jbpm-services-ejb-client-7.3.0.Final.jar提供了基于EJB的定时服务和客户端接口,使得jBPM能够集成到Java EE环境中,实现定时触发流程事件或...
通过项目地址(http://www.zuidaima.com/share/1989287537953792.htm)访问,可以获取更详细的jbpm项目示例和教程,帮助开发者理解和学习如何在实际项目中使用jbpm,结合SSH和ExtJS构建高效的企业级流程管理系统。...
JBPM中 使用JobExecutor执行timer定义的job 使用此处中转,别人的资料。工作使用。
JBPM(JBoss Business Process Management)是一款开源的工作流管理系统,广泛应用于各种业务流程管理场景中。JBPM4版本是该系列中的一个重要版本,其数据库设计反映了该系统的核心功能与架构。本文将详细介绍JBPM4...
四、流程中任务的分配 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是一款开源的工作流管理系统,它允许开发者集成业务流程到应用...
在使用JBPM4进行流程管理时,不同的操作会导致相应的表发生变化。例如: - **发布一个流程(deploy)** - `JBPM4_DEPLOYMENT`: 新增一条记录。 - `JBPM4_LOB`: 新增一条记录。 - `JBPM4_DEPLOYPROP`: 新增四条记录...
以上五个知识点涵盖了 jbpm5.3 中关于结束事件、错误事件、定时事件、脚本任务和服务任务的核心概念和使用方法。通过对这些概念的理解,可以有效地设计和实现复杂的业务流程自动化,提高工作效率和准确性。在实际...
- **流程建模语言**:jBPM 提供了一套直观的流程建模语言,能够以图形化的方式表示业务流程,包括但不限于任务(task)、异步通信的等待状态(wait state)、定时器(timer)以及自动化动作(automated action)等元素。...