上篇介绍了通过跳过节点可以终止timer,其实也可以直接在流程定义里设置timer的终止,就是使用cancel-timer元素。
xml 代码
- <?xml version="1.0" encoding="UTF-8"?>
- <process-definition xmlns="" name="yytest">
- <start-state name="start">
- <transition name="" to="a"></transition>
- </start-state>
- <state name='a'>
- <timer name='reminder'
- duedate='0 seconds'
- repeat='3 seconds'>
- <script>System.out.println(new Date()+"----node enter:send mail to operator.");</script>
- </timer>
- <timer name='reminderend'
- duedate='12 seconds'
- transition='toend'
- >
- <script>System.out.println(new Date()+"----canceled timer");</script>
- <cancel-timer name='reminder'/>
- </timer>
- <transition name="toend" to="end"></transition>
- </state>
- <end-state name="end"></end-state>
- </process-definition>
reminderend 这个定时器,在12秒后调用cancel-timer终止定时器reminder,同时按照指定的transition结束流程。
java 代码
- package com.jeffentest;
-
- import org.jbpm.*;
- import org.jbpm.graph.def.ProcessDefinition;
- import org.jbpm.graph.exe.*;
- import org.jbpm.scheduler.impl.Scheduler;
-
-
- public class Jeffentest {
- static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
- static ProcessDefinition processDefinition = null;
- static ProcessInstance processInstance = null;
- static Scheduler scheduler = null;
-
- public static void initSchedular() {
- scheduler = new Scheduler();
- int interval = 5000;
- scheduler.setInterval(interval);
- int historyMaxSize = 0;
- scheduler.setHistoryMaxSize(historyMaxSize);
- scheduler.start();
- }
-
- public static void destroy() {
- scheduler.stop();
- }
- static class MySchedularThread extends Thread{
- public void run(){
- JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
- try {
- long processInstanceId =1;
- processInstance = jbpmContext.loadProcessInstance(processInstanceId);
- Token token = processInstance.getRootToken();
- System.out.println(token.getNode());
-
- token.signal();
- System.out.println(token.getNode());
- jbpmContext.save(processInstance);
-
- }catch(Exception e){
- e.printStackTrace();
- }finally {
- jbpmContext.close();
- }
- }
- }
-
- public static void main(String[] args) {
- initSchedular ();
- MySchedularThread mst=new MySchedularThread();
- mst.start();
- }
- }
运行结果:
StartState(start)
State(a)
Fri Dec 08 10:22:26 CST 2006----node enter:send mail to operator.
Fri Dec 08 10:22:31 CST 2006----node enter:send mail to operator.
Fri Dec 08 10:22:33 CST 2006----node enter:send mail to operator.
Fri Dec 08 10:22:33 CST 2006----canceled timer
说明一下,我的这两个例子都是基于state的,如果采用node则不会给timer运行的机会。
timer还有几个特殊属性是针对task节点的,见下篇吧。
分享到:
相关推荐
JBPM3.2与Spring的整合主要是为了实现任务调度的功能,这在企业级应用中是非常重要的,因为它能够自动化执行定时任务,如流程启动、数据同步、报告生成等。在JBPM3.1.x版本中,通过SpringModules提供的`spring-...
【标题】"简单的spring2+struts2+hibernate3.2+jbpm3应用框架"揭示了一个经典的Java企业级开发架构,该框架整合了四个核心组件:Spring 2.x、Struts 2.x、Hibernate 3.2以及jBPM 3。这些技术在2000年代末到2010年代...
2. **低依赖性**:jBPM对企业应用的依赖性极小,可以轻松作为Java库使用,同时也适用于高吞吐量的J2EE集群应用服务器环境。 3. **广泛的数据库支持**:jBPM可以与任何数据库配置协同工作,并且可以在任何应用服务器...
这个"jbpm4案例源码"包含了jbpm4系统的核心组件和示例代码,帮助开发者深入理解jbpm4的工作原理和实践应用。《jBPM4工作流应用开发指南.pdf》这本书则进一步阐述了如何利用jbpm4来构建工作流应用。 jbpm4的核心功能...
预配置的服务器集成了核心jBPM服务、集成数据库、jBPM控制台Web应用、调度程序和命令执行器,还有一个示例流程实例。 1.3 jBPM图形化流程设计器 jBPM提供了一个Eclipse插件形式的图形化流程设计器,该设计器支持...
《Spring、Struts2与JBPM 3.2的整合应用详解》 在现代企业级应用开发中,Spring、Struts2和JBPM是三个重要的技术框架。Spring以其强大的依赖注入(DI)和面向切面编程(AOP)功能,为应用程序提供了灵活的基础架构...
JBPM,全称Java Business Process Management,是一个开源的业务流程管理系统,致力于简化和自动化企业的流程性业务应用。它采用Apache License,为开发者提供了灵活且可扩展的流程业务处理框架。jBPM的核心优势在于...
本文将深入探讨JBPM的工作原理、表结构及其在实际操作中的应用。 1. **JBPM特色** - **灵活的建模**:JBPM支持BPMN 2.0标准,允许用户通过图形化界面设计复杂的工作流程。 - **持久化存储**:JBPM将流程实例和...
2. 将jbpm3.2.3的库添加到项目的类路径中,包括核心库、持久化库以及Web应用所需的库。 3. 配置jbpm的配置文件以指向你的数据库。 4. 部署"jbpm_web"到Web服务器,如Tomcat或Jetty。 5. 通过Web界面启动流程实例,...
它提供了强大的动作调度、拦截器机制以及丰富的插件支持,使开发者能更好地组织和控制应用程序的行为。 Spring3.1则是一个全面的后端应用程序框架,提供了依赖注入(Dependency Injection,DI)、面向切面编程...
建议初学者首先阅读这份文档,理解jbpm的基本概念和操作,然后通过实际项目练习,掌握jbpm的实战应用。 总结,jbpm作为企业级的业务流程管理工具,其强大之处在于它提供的完整流程生命周期管理、灵活的流程定义和...
2. **图形化开发工具**:提供可视化流程控制台,便于随时调度运行中的流程。 3. **轻量级框架**:可以在任何应用服务器上发布,并且支持任意数据库。 4. **支持多种流程定义语言**:如 jPDL、WS-BPEL 和 Seam 框架的...
- **运行控制功能**:在运行环境中管理工作流过程,对工作流过程中的活动进行调度。 - **运行交互功能**:在工作流运行中,WfMS与用户(活动的参与者)及外部应用程序工具交互的功能。 **3. 采用工作流管理系统的...
2. **运行控制功能**:在运行环境中管理工作流过程,对工作流过程中的活动进行调度; 3. **运行交互功能**:在工作流运行期间,WfMS与用户(活动参与者)及外部应用程序之间的交互功能。 采用工作流管理系统的优势...
JBPM调度程序主要负责定时器的监控和执行。在流程执行过程中,该组件能够根据预设的时间点触发特定的操作,从而实现流程中的定时任务。 通过以上知识点的解析,我们可以看到JBPM作为一个成熟的工作流管理系统,不仅...
这个文档集合主要面向开发者,帮助他们理解和应用JBPM 4.2进行业务流程的开发和管理。 【核心概念】 1. **工作流引擎**:JBPM的核心组件,负责执行定义好的业务流程。它解析流程定义文件,调度任务,处理流程实例...