`
longzhun
  • 浏览: 371869 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jbpm与ssh2整合

阅读更多
(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");
         
分享到:
评论

相关推荐

    jbpm与ssh框架整合

    jbpm4与SSH框架的整合是将jBPM(java Business Process Managerment)这一轻量级工作流引擎与Struts2、Spring和Hibernate(SSH)这三大主流Java开发框架结合的过程,以实现企业级应用中的业务流程管理和控制。jBPM是...

    jbpm4.4+ssh整合

    jbpm4.4+ssh整合还需要安装插件进入到myeclipse中 将相应的jar文件放进去 就能够运行 jbpm4.4 jar ssh(strut2,hibernate3,spring3)三大框架整合的jar包 例子是 请假流程 代码中有很好的注释 便于初学者学习

    Jbpm4与SSH整合

    **JBPM4与SSH整合详解** 在企业级应用开发中,Spring(Struts2、Hibernate)集成,简称SSH,是常见的Java Web开发框架组合。它们分别负责控制层、视图层和持久层的处理,而JBPM4则是一个强大的工作流管理系统,用于...

    jbpm+ssh整合

    【jbpm+ssh整合】是将企业级工作流引擎jbpm与流行的SSH(Struts、Spring、Hibernate)框架集成,实现一个完整的业务流程管理系统。jbpm是一个开源的工作流引擎,可以处理复杂的业务流程自动化,而SSH是Java开发中...

    jbpm +ssh整合

    在Java开发中,jbpm与SSH的整合可以实现业务流程管理和后端服务的无缝对接,提高系统的灵活性和可扩展性。 首先,我们来了解jbpm的核心功能。jbpm支持BPMN2(Business Process Model and Notation 2.0)标准,这是...

    JBPM4.4与SSH2之整合(附可运行源码和jar包列表)(my_jbpm4.4_ssh2.rar)

    JBPM4.4与SSH2之整合(附完整源码) 这些天,想着把jbpm4.4与ssh2整合一下,由于之前从来没用过jbpm,也不知道各版本之间会有什么差异(经过网上的收集对比,还真有些差异),整合起来,还真是有些步履艰难。收集了...

    jbpm 整合 ssh框架

    将jbpm整合到SSH框架中,可以实现业务流程与应用服务的无缝结合,提高系统的可维护性和灵活性。 在jbpm整合SSH的过程中,主要涉及以下几个关键点: 1. **jbpm与Spring的集成**: - **Spring管理jbpm**: 通过...

    jBPM4.4+ssh 整合配置及完整实例

    **jBPM4.4与SSH整合配置及完整实例详解** jBPM(Java Business Process Management)是一款开源的工作流管理系统,主要用于处理业务流程自动化。在本实例中,我们将讨论如何将jBPM 4.4版本与SSH(Spring、Struts、...

    jBPM4.4与ssh整合

    **jBPM4.4与SSH整合详解** jBPM(Java Business Process Management)是一款开源的工作流管理系统,它提供了一套完整的解决方案,用于设计、执行和管理业务流程。SSH(Struts、Spring、Hibernate)是Java开发中的...

    jbpm4与ssh整合

    【jbpm4与SSH整合详解】 在Java企业级开发中,Spring(SSH中的S)、Struts(H)和Hibernate(S)是常见的三大框架,它们分别负责依赖注入、MVC层处理和持久化操作。而jbpm4则是一个流程管理系统,用于业务流程的...

    JBPM5.4 SSH 完整项目整合案例

    【JBPM5.4 SSH 完整项目整合案例】是一个基于Java企业级开发的实践项目,它涵盖了三个关键的技术栈:Struts2(S),Spring(S)和Hibernate(H),通常称为SSH框架。这个项目旨在展示如何将业务流程管理(BPM)工具...

    jbpm4.4与ssh框架的整合

    ### jBPM 4.4与SSH框架的整合:深入解析与实践 #### jBPM:Java业务流程管理引擎 jBPM,全称为java Business Process Management,是JBoss旗下的一款开源工作流引擎,专为Java EE环境设计,提供了一种轻量级的解决...

    jbpm4.4 ssh 整合

    这篇文章将详细介绍如何整合SSH与JBPM 4.4,以及它们整合后能带来的优势。 首先,让我们了解SSH框架。Spring是一个全面的后端开发框架,它提供了依赖注入(DI)和面向切面编程(AOP),用于简化应用的复杂性。...

    请假工作流JBPM整合SSH2完整实例

    通过分析这些文件,开发者可以学习如何在实际项目中整合SSH2与JBPM,实现高效的企业级流程管理应用。 这个实例为学习者提供了一个实践平台,有助于深入理解工作流管理、企业级Java应用开发以及框架整合等方面的知识...

    jbpm与SSH的整合

    有代码示例也有文档说明,适合学习JBPM的童鞋们上手

    jbpm_ssh.zip_jbpm+ssh

    **jbpm_ssh.zip_jbpm+ssh** 是一个包含jbpm(Java Business Process Management)与SSH(Spring、Struts和Hibernate)集成示例的压缩包。这个集成是企业级Java应用开发中的常见实践,旨在利用jbpm的强大工作流管理...

    jbpm4.4整合ssh代码

    **jbpm4.4与SSH整合的关键点** 1. **Spring集成**: 集成jbpm4.4到Spring中,可以利用Spring的依赖注入和事务管理,使流程服务的调用更加灵活和可控。 2. **Struts配置**: 在Struts中添加jbpm的控制器,以便通过...

Global site tag (gtag.js) - Google Analytics