`

jbpm3.2.2 中启用timer服务

阅读更多
在项目中没有使用hibernate.cfg.xml 配置文件
而是在spring中管理了hibernate的实体映射关系 和数据源

在流程定义文件中的任务中定义timer属性
timer属性
duedate(必须)Timer创建后再要多长时间触发timer里设定的动作
repeat 表示当Timer执行之后再每隔多久再触发执行一次Timer


如何启用jbpm3.2.2的timer服务

在web.XML中,使用JobExecutorServlet来启动
<!-- JbpmJobExecutorServlet --> 
  <servlet>
<servlet-name>JobExecutorServlet</servlet-name>
<servlet-class>
org.jbpm.job.executor.JobExecutorServlet
</servlet-class>
<load-on-startup>3</load-on-startup>
  </servlet>
  <servlet-mapping>
<servlet-name>JobExecutorServlet</servlet-name>
<url-pattern>/jobs</url-pattern>
  </servlet-mapping>


由于没有hibernate的配置文件
所有会出现异常

解决办法:
修改JobExecutorServlet

package org.jbpm.job.executor;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
import java.util.Iterator;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jbpm.JbpmConfiguration;
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springmodules.workflow.jbpm31.JbpmTemplate;

public class JobExecutorServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

JbpmConfiguration jbpmConfiguration;
//修改了JobExecutorServlet里获取JbpmConfiguration的方式
public void init() throws ServletException {
JbpmTemplate jbpmTemplate = (JbpmTemplate) WebApplicationContextUtils
.getWebApplicationContext(this.getServletContext()).getBean(
"jbpmTemplate");
jbpmConfiguration = jbpmTemplate.getJbpmConfiguration();
CustomJobExecutor.setJbpmConfiguration(jbpmConfiguration);
jbpmConfiguration.startJobExecutor();
}

protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<h2>JBoss jBPM Scheduler Servlet</h2><hr />");
Collection threads = jbpmConfiguration.getJobExecutor().getThreads()
.values();
Iterator iter = threads.iterator();
while (iter.hasNext()) {
Thread thread = (Thread) iter.next();
out.println("<h4>" + thread.getName() + "</h4>");
out.println("<b>isAlive</b>:" + thread.isAlive());
}
out.println("</body>");
out.println("</html>");
}
}


添加CustomJobExecutor.JAVA
package org.jbpm.job.executor;

import org.jbpm.JbpmConfiguration;

public class CustomJobExecutor extends JobExecutor{
public static JbpmConfiguration jbpmConfig;
public synchronized void start() {
jbpmConfiguration = jbpmConfig;
super.start();
}
public static void setJbpmConfiguration(JbpmConfiguration config){
jbpmConfig=config;
}
}

在spring的配置文件中加入以下bean
<!-- JbpmTemplate是在Spring中访问Jbpm相关方法的接口对象,利用JbpmTemplate我们可以快速操作Jbpm里提供的方法接口 -->
  <bean id="jbpmTemplate"      class="org.springmodules.workflow.jbpm31.JbpmTemplate">
<constructor-arg index="0" ref="jbpmConfiguration" />
  </bean>


修改 jbpm.CFG.XML
<bean name="jbpm.job.executor" class="org.jbpm.job.executor.JobExecutor">
    <field name="jbpmConfiguration"><ref bean="jbpmConfiguration" /></field>
    <field name="name"><string value="JbpmJobExector" /></field>
    <field name="nbrOfThreads"><int value="1" /></field>
    <field name="idleInterval"><int value="5000" /></field>
    <field name="maxIdleInterval"><int value="3600000" /></field> <!-- 1 hour -->
    <field name="historyMaxSize"><int value="20" /></field>
    <field name="maxLockTime"><int value="600000" /></field> <!-- 10 minutes -->
    <field name="lockMonitorInterval"><int value="60000" /></field> <!-- 1 minute -->
    <field name="lockBufferTime"><int value="5000" /></field> <!-- 5 seconds -->
  </bean>


  <bean name="jbpm.job.executor" class="org.jbpm.job.executor.CustomJobExecutor">
    <field name="jbpmConfiguration"><ref bean="jbpmConfiguration" /></field>
    <!--field name="jbpmConfiguration"><ref bean="jbpmConfiguration" /></field-->
    <field name="name"><string value="JbpmJobExector" /></field>
    <field name="nbrOfThreads"><int value="1" /></field>
    <field name="idleInterval"><int value="5000" /></field>
    <field name="maxIdleInterval"><int value="3600000" /></field> <!-- 1 hour -->
    <field name="historyMaxSize"><int value="20" /></field>
    <field name="maxLockTime"><int value="600000" /></field> <!-- 10 minutes -->
    <field name="lockMonitorInterval"><int value="60000" /></field> <!-- 1 minute -->
    <field name="lockBufferTime"><int value="5000" /></field> <!-- 5 seconds -->
  </bean>

源地址:http://yang52081.iteye.com/blog/172222
分享到:
评论

相关推荐

    jbpm3.2.2工作流入门例子

    在jbpm3.2.2中,工作流引擎是核心组件,它负责解析流程定义文件(通常为.bpmn或.jpdl.xml格式),并根据这些定义来执行和管理流程实例。jbpm的工作流引擎具有高度可扩展性,可以集成到各种Java应用程序中,如...

    jbpm 3.2.2 表说明

    jbpm 3.2.2 表说明 详尽解释

    JBPM3.2.2开发环境部署

    开源工作流JBPM3.2.2开发环境部署 Ant Eclipse插件安装以及数据库

    JBPM3.2.2数据库备份

    该文件是jbpm (工作流系统)的数据库备份,该备份文件用于ORACLE下

    jbpm3.2.2 web工程框架

    【eclipse】是开发过程中使用的集成开发环境(Integrated Development Environment,IDE),jbpm3.2.2的工程很可能是在Eclipse中创建和管理的。Eclipse提供了丰富的插件支持,包括jbpm插件,用于简化工作流项目的...

    jbpm3.2.2在mysql中字段的类型的错误

    ### jbpm3.2.2在mysql中字段的类型的错误:解决方案与理解 #### 引言 在使用jbpm3.2.2(一个开源的工作流引擎)与MySQL数据库进行集成时,可能会遇到关于字段类型不匹配的问题。这通常发生在初始化数据库结构或...

    jbpm3.2.2+spring2.5+hibernate3.0+struts2.0

    【jbpm3.2.2】 Jbpm是一个开源的工作流管理系统,它提供了一整套业务流程自动化解决方案。在3.2.2版本中,jbpm提供了对工作流建模、执行、监控和管理的功能。它支持BPMN(Business Process Modeling Notation)标准...

    spring2.5.4+hibernate3.2.6+struts2+jbpm3.2.2配置方法

    在这个配置中,我们将探讨如何将这些框架集成在一起,创建一个基于Spring 2.5.4、Hibernate 3.2.6、Struts2和jbpm3.2.2的应用。 1. **Spring框架**: - Spring 2.5.4作为应用的核心容器,负责管理应用的bean(对象...

    JBPM3.2.2工作流引擎源代码

    JBPM3.2.2源码,工作流引擎。JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM是公开源...

    spring2.5.4+hibernate3.2.6+struts2+jbpm3.2.2收藏

    在这个场景中,我们讨论的是如何将Spring 2.5.4、Hibernate 3.2.6、Struts2以及jbpm 3.2.2这四个组件集成到一个项目中。下面将分别介绍这些组件以及它们在整合过程中的配置细节。 1. **Spring 2.5.4**: Spring 是...

    JBPM-3.2.2

    在JBPM 3.2.2版本中,主要提供了jbpm-jpdl-suite-3.2.2.zip这个压缩包,其中包含了用于绘制流程图的相关工具和库。 JBPM(Java Business Process Management)是开源社区开发的一个工作流引擎,它允许开发者以模型...

    jbpm-jpdl-3.2.2.zip

    在jbpm-jpdl-3.2.2.zip中,我们可以看到以下几个关键文件: 1. **release.notes.html**:这是软件发布时通常包含的文档,详细记录了此版本的更新内容、改进、修复的bug以及可能的已知问题。通过阅读这个文件,用户...

    jbpm-jpdl-3.2.2

    在这个压缩包中,我们找到了几个关键文件和目录,它们揭示了jbpm-jpdl-3.2.2的核心组件和配置。 首先,jbpm-jpdl.jar和jbpm-identity.jar是核心的JAR文件。jbpm-jpdl.jar包含了jbpm框架的核心流程引擎,它实现了对...

    JBoss_jBPM_jPDL用户开发手册_3.2.3.pdf 中文-(转)zhangym

    - **可插拔架构**:jBPM的架构允许轻松集成到各种Java应用环境中。 - **持久化支持**:通过Hibernate提供对数据库的支持,确保流程状态的持久化。 - **事件驱动**:能够处理异步事件,适应业务流程中的各种情况。 - ...

    JBPM3.2开发基本流程

    3. 创建表,解压后的根目录的db文件夹里面是JBPM3.2.2对应的各种数据库表创建脚本 开发流程: 1. JBPM3主要涉及的API * JbpmConfiguration:创建Jbpm上下文 * JbpmContext:jbpmcontext对hibernate session提供...

    jBPM4.4 详解 API 中文

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

    jbpm中文用户手册

    在"jBPM4.1中文用户手册"中,读者可以找到关于这些特性和功能的详细解释,包括如何创建和部署BPMN模型、配置工作流引擎、使用任务服务、集成规则引擎等操作步骤。此外,手册可能还会涵盖错误处理、性能调优、安全...

    jBPM4.3中文开发手册

    - **服务调用**: 可以在流程中集成外部服务,如Web服务、EJB等。 - **事件处理**: 支持事件监听和触发,如异常处理、定时任务等。 - **工作流事件**: 如开始、结束、分支、合并等,可绑定自定义行为。 ### 6. 集成...

    jbpm的web工程例子

    利用jbpm插件建立的jbpm工程不能作为web工程利用myeclipse插件发布,...因为所需jar包过多影响上传,请自行将jbpm3.2.2包和mysql数据库驱动放到web-info/lib下。最好在加载了jbpm designer插件的myeclipse环境中导入。

    jbpm中文用户指南

    BPMN是一种图形化表示业务流程的方法,jbpm的用户指南会详细介绍如何使用BPMN符号来设计流程图,包括开始事件、结束事件、任务、网关、事件和数据对象等,以及它们在jbpm中的具体实现。 3. **jbpm工作流** 工作流...

Global site tag (gtag.js) - Google Analytics