在项目中没有使用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
分享到:
相关推荐
jbpm 3.2.2 表说明 详尽解释
开源工作流JBPM3.2.2开发环境部署 Ant Eclipse插件安装以及数据库
该文件是jbpm (工作流系统)的数据库备份,该备份文件用于ORACLE下
jbpm入门例子,用Myeclipse6.0打开可以直接运行本例子。
解决jbpm3.2.2在mysql中字段的类型的错误
由于文件大小的限制,请自己添加jbpm3.2.2相关的包以及mysql的jbbc。一般由jbpm插件创建的工程无法发布,这是一个基于web工程的jbpm工程框架。
spring2.5.4+hibernate3.2.6+struts2+jbpm3.2.2配置方法
JBPM3.2.2源码,工作流引擎。JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM是公开源...
帮您实现spring2.5.4+hibernate3.2.6+struts2+jbpm3.2.2的整合配置
NULL 博文链接:https://442136713.iteye.com/blog/570895
jbpm-jpdl-suite-3.2.2.zip 3.2版本画流程图包 jbpm-jpdl-suite-3.2.2.zip 3.2版本画流程图包
利用jbpm插件建立的jbpm工程不能作为web工程利用myeclipse插件发布,...因为所需jar包过多影响上传,请自行将jbpm3.2.2包和mysql数据库驱动放到web-info/lib下。最好在加载了jbpm designer插件的myeclipse环境中导入。
转发zhangym翻译的JBoss_jBPM_jPDL用户开发手册_3.2.3.pdf 共199页 24章。
JBPM3.2,扫描版本,还算很清晰,虽然比较老,但是用来学习下还算不错,而且是中文,此文件因为太大,所以分为两个压缩包压缩,都已全部上传,请全部下载再解压缩。
jbpm4.3 中文文档 jbpm4.3 中文文档
jbpm-jpdl-designer-3.1.0.sp1.zip是jbpm的设计器
详细分析解释JBPM工作流API 内含丰富示例截图 代码
jBPM 4.4用户手册 翻译官方文档 JBoss jBPM Teams 4.4 译者: Lingo 首页: http://www.family168.com/ 论坛: http://old.family168.com/bbs EMAIL: lingosurf168@gmail.com 2009年11月1日 1. 导言 1.1. 许可...
jbpm中文帮助文档
根据官方翻译的jbpm4.3中文开发手册