(1)model pojo 加载(在sessionFactory里加载):
记得加包:spring-modules-jbpm31.jar
<bean id=“sessionFactory” …….>
……….
<property name="mappingLocations">
<list>
<value>classpath*:/org/jbpm/**/*.hbm.xml</value>
</list>
</property>
</bean>
(2)spring 管理的jbpm数据操作接口
<bean id=“jbpmConfiguration”
class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
<property name="sessionFactory" ref="sessionFactory"/>
<property name="configuration" value="classpath:jbpm.cfg.xml"/>
// jbpm.cfg.xml 文件路径在src下面
</bean>
<bean id=“jbpmTemplate” class="org.springmodules.workflow.jbpm31.JbpmTemplate">
<constructor-arg index="0" ref="jbpmConfiguration" />
</bean>
jbpmTmepate 与spring的JdbcTemplate有很想似之处。
(3)配置过滤器 JbpmContextFilter
<filter>
<filter-name>JbpmContextFilter</filter-name>
<filter-class>
com.jh.jcs.workflow.filter.JbpmContextFilter
</filter-class>
</filter>
package com.jh.jcs.workflow.filter;
import java.io.IOException;
import java.io.Serializable;
import java.security.Principal;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springmodules.workflow.jbpm31.JbpmTemplate;
import org.unitils.spring.SpringUnitils;
public class JbpmContextFilter implements Filter, Serializable {
private static final long serialVersionUID = 1L;
String jbpmConfigurationResource = null;
String jbpmContextName = null;
boolean isAuthenticationEnabled = true;
FilterConfig config;
public void setFilterConfig(FilterConfig config) {
this.config = config;
}
public FilterConfig getFilterConfig() {
return config;
}
public void init(FilterConfig filterConfig) throws ServletException {
// get the jbpm configuration resource
this.jbpmConfigurationResource = filterConfig.getInitParameter("jbpm.configuration.resource");
// get the jbpm context to be used from the jbpm configuration
this.jbpmContextName = filterConfig.getInitParameter("jbpm.context.name");
if (jbpmContextName==null) {
jbpmContextName = JbpmContext.DEFAULT_JBPM_CONTEXT_NAME;
}
// see if authentication is turned off
String isAuthenticationEnabledText = filterConfig.getInitParameter("authentication");
if ( (isAuthenticationEnabledText!=null)
&& ("disabled".equalsIgnoreCase(isAuthenticationEnabledText))
) {
isAuthenticationEnabled = false;
}
this.setFilterConfig(filterConfig);
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
String actorId = null;
//通过filterconfig 得到servletcontext
ServletContext context = getFilterConfig().getServletContext();
// see if we can get the authenticated swimlaneActorId
if (servletRequest instanceof HttpServletRequest) {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
Principal userPrincipal = httpServletRequest.getUserPrincipal();
if (userPrincipal != null) {
actorId = userPrincipal.getName();
}
}
JbpmContext jbpmContext = getJbpmConfiguration(context).createJbpmContext(jbpmContextName);
servletRequest.setAttribute("jbpmContext",jbpmContext);
try {
if (isAuthenticationEnabled) {
jbpmContext.setActorId(actorId);
}
filterChain.doFilter(servletRequest, servletResponse);
} finally {
if(jbpmContext!=null){
try{
if(jbpmContext.getSession().isOpen()){
jbpmContext.close();
}
}catch(Exception e){
e.printStackTrace();
}
jbpmContext = null;
}
}
}
protected JbpmConfiguration getJbpmConfiguration(ServletContext servletContext) {
JbpmTemplate jbpmTemplate = (JbpmTemplate) WebApplicationContextUtils
.getWebApplicationContext(servletContext).getBean(
"jbpmTemplate");
JbpmConfiguration jconfig = jbpmTemplate.getJbpmConfiguration();
//return (JbpmConfiguration)SpringUtil.getInstance().getBean("jbpmConfiguration");
return jconfig;
}
public void destroy() {
}
}
(4)使用1
@Autowired
@Qualifier("jbpmConfiguration")
JbpmConfiguration jbpmConfiguration;
public JbpmContext getJbpmContext() {
return jbpmConfiguration.getCurrentJbpmContext();
}
JbpmContext jbpmContext = getJbpmContext();
使用2
JbpmContext jbpmContext=ServletActionContext.getRequest().getAttribute("jbpmContext");
分享到:
相关推荐
jbpm4与SSH框架的整合是将jBPM(java Business Process Managerment)这一轻量级工作流引擎与Struts2、Spring和Hibernate(SSH)这三大主流Java开发框架结合的过程,以实现企业级应用中的业务流程管理和控制。jBPM是...
jbpm4.4+ssh整合还需要安装插件进入到myeclipse中 将相应的jar文件放进去 就能够运行 jbpm4.4 jar ssh(strut2,hibernate3,spring3)三大框架整合的jar包 例子是 请假流程 代码中有很好的注释 便于初学者学习
**JBPM4与SSH整合详解** 在企业级应用开发中,Spring(Struts2、Hibernate)集成,简称SSH,是常见的Java Web开发框架组合。它们分别负责控制层、视图层和持久层的处理,而JBPM4则是一个强大的工作流管理系统,用于...
【jbpm+ssh整合】是将企业级工作流引擎jbpm与流行的SSH(Struts、Spring、Hibernate)框架集成,实现一个完整的业务流程管理系统。jbpm是一个开源的工作流引擎,可以处理复杂的业务流程自动化,而SSH是Java开发中...
在Java开发中,jbpm与SSH的整合可以实现业务流程管理和后端服务的无缝对接,提高系统的灵活性和可扩展性。 首先,我们来了解jbpm的核心功能。jbpm支持BPMN2(Business Process Model and Notation 2.0)标准,这是...
JBPM4.4与SSH2之整合(附完整源码) 这些天,想着把jbpm4.4与ssh2整合一下,由于之前从来没用过jbpm,也不知道各版本之间会有什么差异(经过网上的收集对比,还真有些差异),整合起来,还真是有些步履艰难。收集了...
将jbpm整合到SSH框架中,可以实现业务流程与应用服务的无缝结合,提高系统的可维护性和灵活性。 在jbpm整合SSH的过程中,主要涉及以下几个关键点: 1. **jbpm与Spring的集成**: - **Spring管理jbpm**: 通过...
**jBPM4.4与SSH整合配置及完整实例详解** jBPM(Java Business Process Management)是一款开源的工作流管理系统,主要用于处理业务流程自动化。在本实例中,我们将讨论如何将jBPM 4.4版本与SSH(Spring、Struts、...
**jBPM4.4与SSH整合详解** jBPM(Java Business Process Management)是一款开源的工作流管理系统,它提供了一套完整的解决方案,用于设计、执行和管理业务流程。SSH(Struts、Spring、Hibernate)是Java开发中的...
【jbpm4与SSH整合详解】 在Java企业级开发中,Spring(SSH中的S)、Struts(H)和Hibernate(S)是常见的三大框架,它们分别负责依赖注入、MVC层处理和持久化操作。而jbpm4则是一个流程管理系统,用于业务流程的...
【JBPM5.4 SSH 完整项目整合案例】是一个基于Java企业级开发的实践项目,它涵盖了三个关键的技术栈:Struts2(S),Spring(S)和Hibernate(H),通常称为SSH框架。这个项目旨在展示如何将业务流程管理(BPM)工具...
### jBPM 4.4与SSH框架的整合:深入解析与实践 #### jBPM:Java业务流程管理引擎 jBPM,全称为java Business Process Management,是JBoss旗下的一款开源工作流引擎,专为Java EE环境设计,提供了一种轻量级的解决...
这篇文章将详细介绍如何整合SSH与JBPM 4.4,以及它们整合后能带来的优势。 首先,让我们了解SSH框架。Spring是一个全面的后端开发框架,它提供了依赖注入(DI)和面向切面编程(AOP),用于简化应用的复杂性。...
通过分析这些文件,开发者可以学习如何在实际项目中整合SSH2与JBPM,实现高效的企业级流程管理应用。 这个实例为学习者提供了一个实践平台,有助于深入理解工作流管理、企业级Java应用开发以及框架整合等方面的知识...
有代码示例也有文档说明,适合学习JBPM的童鞋们上手
**jbpm_ssh.zip_jbpm+ssh** 是一个包含jbpm(Java Business Process Management)与SSH(Spring、Struts和Hibernate)集成示例的压缩包。这个集成是企业级Java应用开发中的常见实践,旨在利用jbpm的强大工作流管理...
**jbpm4.4与SSH整合的关键点** 1. **Spring集成**: 集成jbpm4.4到Spring中,可以利用Spring的依赖注入和事务管理,使流程服务的调用更加灵活和可控。 2. **Struts配置**: 在Struts中添加jbpm的控制器,以便通过...