`
上杉t
  • 浏览: 32603 次
文章分类
社区版块
存档分类
最新评论

如何将jbpm action纳入spring的管理(在jbpm action调用spring 业务bean)

阅读更多
最近公司同事使用spring 静态注入方式(这里要感谢一下我的同事!!) 实现了在jbpm action中调有srping的业务bean,例子如下
先在spring 配置文件里声明两个bean.一个是业务类userservice,另一个是jbpm的action类
xml 代码
 
  1. <bean id="userService" class="com.manager.UserService">  
  2.         <property name="userdao" ref="userdao"></property>  
  3. </bean> 
    <bean name="jbpmaction"  class="com.manager.JbpmAction"
  4.     <property name="userService"><ref bean="userService"/></property>  
  5. </bean>  

业务类代码就不举例了 和平时的没什么区别,区别在与jbpm action类的写法

java 代码
 
  1. public class JbpmAction implements ActionHandler {    
  2.      
  3.  private static UserService userService;    
  4.  private UserService userServ;    
  5.           
  6.      public JbpmAction(){    
  7.             this.userserv=JbpmAction.userservice;  
  8.      }    
  9.     
  10.      public void execute(ExecutionContext executionContext) throws Exception {    
  11.           userserv.getUser();  
  12.      }    
  13.      
  14.     public static UserService  getUserService(){  
  15.               return  userService;  
  16.   }  
  17.       public void setUserService(UserService  userService){  
  18.               JbpmAction.userService=userService;  
  19.     }  
  20.  }  

不知道大家有没有看明白在spring启动的时候会加载全部的bean包括这个jbpmaction,并将userService注入到JbpmAction的类属性userService中.
    但jbpm是new一个
JbpmAction所以在JbpmAction 的构造方法里在将这个已经注入实现的静态属性付给实例属性userServ
有人会问那为什么不直接调用类方法,很遗憾当时我们调有时报null异常,因为时间原因我们没有追查原因.大家有时间可以实验一下

分享到:
评论
4 楼 zhoden 2008-07-28  
说得好! 
3 楼 zhxp791008 2007-12-14  
  "但jbpm是new一个JbpmAction所以在JbpmAction 的构造方法里在将这个已经注入实现的静态属性付给实例属性userServ
有人会问那为什么不直接调用类方法,很遗憾当时我们调有时报null异常,因为时间原因我们没有追查原因.大家有时间可以实验一下"


应该是在没有使用过jbpmaction的情况下.spring不会注入JbpmAction的静态属性,你直接用JbpmAction的类方法,当然为null,spring不知道你用了.当你用过jbpmaction后,再用JbpmAction的类方法.这时spring已经注入了.
所以你会"很遗憾当时我们调有时报null异常".
方法:让jbpmaction的lazy="false",让spring容器立即加载它.应该就没有问题了.
注:没有测试.
2 楼 maggies 2007-12-13  
JbpmHandlerProxy优雅表现在哪里?
1 楼 Bluesnails 2007-12-03  
这个思路和我当初想在filter或者自定义tag里使用spring的业务bean类似,但是感觉代码可读性不太好。。。觉得用spring modules提供的JbpmHandlerProxy更优雅些:)

相关推荐

    spring2_struts2_jbpm3.2.rar_jbpm struts2_jbpm-demo_jbpm3 spring_

    1. 配置Spring:引入JBPM的库,并在Spring配置文件中声明流程管理相关的bean,如ProcessEngine、RepositoryService等。 2. 集成JBPM:通过Spring的JdbcTemplate或JPA实现数据库连接,配置jbpm-datasource.xml文件,...

    jbpm4整合struts2+spring2.5+hibernate3.3

    最后,Struts2作为前端控制器,会处理用户请求并调用Spring中的业务逻辑。通过Action和ActionSupport类,Struts2可以与Spring集成,使得业务层的服务可以直接注入到Action中。 总结来说,jbpm4整合struts2+spring...

    jbpm4.4+spring2.5.6+hibernate 3.6+struts2.2.1 集成 保证运行成功

    Struts2与Spring整合良好,可以在Spring容器中管理Action类,实现依赖注入。 在"sshj"这个项目中,所有这些组件都将协同工作。Spring作为核心框架,负责管理整个应用的生命周期和组件依赖;Hibernate处理数据库交互...

    Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合

    开发者需要定义请假流程的jpdl文件,创建对应的数据库表,然后在Struts2的Action中调用JBPM的服务来启动、完成任务和查询流程状态。 **6. 总结及参考文章** 整合完成后,通常需要进行详尽的测试以确保所有功能正常...

    jbpm 整合 ssh框架

    - **Action与流程交互**: 在Struts的Action中,可以通过调用jbpm提供的API来启动、终止、查询流程实例,或者完成任务。 - **视图展示**: Struts的Result类型可以配合jbpm的任务服务,根据任务状态跳转到相应的页面...

    jbpm4.4 ssh 整合

    2. **配置Struts**:在Struts配置中,我们需要创建一个Action,该Action将负责调用Spring中的Service层来启动或管理流程实例。Action可以通过Spring的AOP特性获取到流程服务,并在业务逻辑中调用相应的方法。 3. **...

    struts+hibernate+spring+jbpm例

    在这个"struts+hibernate+spring+jbpm"的例子中,开发者可能创建了一个能够处理用户请求、持久化数据、执行业务流程并进行流程控制的应用。Ch 20 文件可能包含了这个示例的源代码或相关文档,包括Struts配置文件、...

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

    Struts2作为前端控制器,处理HTTP请求并调用Spring管理的业务逻辑。 在实际配置过程中,还需要注意以下几点: - **日志配置**:通常会配置log4j来记录应用程序的日志,如`log4j.properties`。 - **错误处理**:设置...

    三大框架与jbpm整合环境

    在文件名列表中提到的"demo"可能是一个演示项目或者包含了一系列示例代码,用于展示如何将Spring、Hibernate、Struts与jbPM进行整合。这个"demo"可能会包括以下内容: 1. **项目结构**:一个典型的Maven或Gradle...

    SSH整合JBPM

    - 配置Spring:首先需要在Spring配置文件中添加对JBPM的bean定义,包括流程引擎、流程仓库服务、任务服务等。 - JBPM与Hibernate集成:设置数据源,使JBPM能够使用Hibernate访问数据库中的流程实例和任务信息。 -...

    Jbpm4与SSH整合

    4. **业务接口设计**:在Struts2中定义处理流程相关请求的Action,这些Action会调用Spring管理的Service来与JBPM4交互,如启动流程、提交任务等。 5. **持久化处理**:使用Hibernate定义请假流程中的实体类,并配置...

    jbpm5+ssh集成

    - **流程服务**: 通过Spring配置,可以创建jbPM5的服务代理,便于在应用中调用流程API。 3. **Struts2集成** - **控制器层**: Struts2作为前端控制器,接收HTTP请求,调度业务逻辑,并将结果返回给视图。 - **...

    ssh整合jbpmssh整合jbpm

    在SSH整合JBPM时,Struts可以通过Action类调用Spring管理的Service层方法,进而启动或控制JBPM流程实例。 **Hibernate框架**作为SSH中的持久化层,负责数据库操作。在整合JBPM时,Hibernate可以用来管理流程定义和...

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

    - **整合Struts2与JBPM**:在Struts2的配置文件中,定义Action类,将流程启动、查询、结束等操作映射到相应的业务方法。同时,配置JBPM的工作流服务,如TaskService、ProcessEngine等。 - **集成Spring**:在Spring...

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

    - **jbpm集成**:在Spring配置文件中配置jbpm的SessionFactory和TaskService,以便于调用流程服务进行流程实例的启动、完成等操作。 这个配置方法是多年前的标准实践,现代应用可能已经采用更新的版本,如Spring ...

    jbpm与ssh框架整合

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

    ssh+jbpm整合实力

    - 调用Jbpm API:在Struts2的Action或者Spring的服务层中,调用Jbpm的API来启动流程实例、查询流程状态、完成任务等。 - UI交互:在前端页面上展示流程状态,提供操作接口供用户进行流程相关的操作。 通过这样的...

    jbpm4.4实例

    5. 视图展示:Struts2的Action或Spring MVC的Controller可以调用jbpm提供的API获取流程状态,并将这些信息传递给视图层,如JSP页面,展示给用户。 6. 数据持久化:jbpm的流程实例、任务等信息需要持久化到数据库中...

    jbpm整合ssh的例子

    2. **Struts集成**:Struts作为前端控制器,可以调用Spring管理的jbpm服务,处理用户的请求,比如启动流程、查询任务等。在Action类中,可以注入jbpm的相关接口,实现业务逻辑。 3. **Hibernate集成**:jbpm的数据...

Global site tag (gtag.js) - Google Analytics