`
yzz9i
  • 浏览: 221155 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

工作流工程整合spring的Web项目流程操作之关键分析、整合spring与web交互发布实现

阅读更多

 

 

      之前的博文中有讲到怎么单独的配置工作流工程。现在就接着说如何将工作流程图与Web整合。在整合Web首先就

来与Spring进行整合。

      整合spring有一下些操作步骤:

 1.复制整合包spring-modules-jbpm31.jar
 2.把Action三大接口类配置在spring的applicationContext.xml

    如:

<!-- action 动作接口-->
 <bean id="endAction"     class="com.jbpm.action.EndAction"></bean>
 <bean id="startAction"   class="com.jbpm.action.StartAction"></bean>
<!-- assignment 委类接口-->
 <bean id="bossAssignment"    class="com.jbpm.assignment.BossAssignment"></bean>
 <bean id="managerAssignment" class="com.jbpm.assignment.ManagerAssignment"></bean>
 <bean id="writerAssignment"  class="com.jbpm.assignment.WriterAssignment"></bean>
<!-- 判定 接口-->
 <bean id="moneyDecision" class="com.jbpm.decision.MoneyDecision"></bean>


 3在applicationContext.xml配置一个读取jbpm配置文件类

  如:

    <bean id="jbpmConfig" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
      <property name="sessionFactory" ref="sessionFactory"></property>
      <property name="configuration"  value="classpath:org/jbpm/default.jbpm.cfg.xml"></property>
 </bean>

//org/jbpm/default.jbpm.cfg.xml  为jbpm.cfg.xml 文件中的


 4.把jbpm设计图关联图中的动作、事件类全部改为代理JbpmHandlerProxy

 在。org.springmodules.workflow.jbpm31.JbpmHandlerProxy

 


   类型改为bean,注入配置文件类和aciton类

//下面的这两个属性需要在配置文件(processdefinition.xml)中代码中手动添加


   <factoryKey>jbpmConfig</factoryKey>
   <targetBean>bossAction</targetBean>

如:<start-state name="开始">
  <transition name="" to="写报销单"></transition>
  <event type="node-leave">
   <action name="开始" class="org.springmodules.workflow.jbpm31.JbpmHandlerProxy" config-type="bean">
            <factoryKey>jbpmConfig</factoryKey>
            <targetBean>startAction</targetBean>
         </action>
  </event>

 </start-state>

//jbpmConfig :步骤3中所配置的 id值     startAction:步骤1中所对应的动作接口 id值
 5.把测试类继承为JbpmDaoSupport类
   并把测试类在applicationContext.xml中配置bean

如:<!-- 测试类 -->
 <bean id="jbpmTest" class="com.test.Test">
    <property name="jbpmConfiguration" ref="jbpmConfig"></property>
 </bean>
6.测试

   测试类在整合spring之后与web的关联操作。

如下:

  //读取配置文件
 private JbpmConfiguration getConfig(){
  return super.getJbpmConfiguration();
 }
 //读取上下文件
 private JbpmContext getContext(){
  JbpmContext context = getConfig().getCurrentJbpmContext();
  if (context==null)
   context = getConfig().createJbpmContext();
  return context;
 }
 //建表
 private void createTable(){
  getConfig().createSchema();
 }
 
 //发布
 private void deployProcessionDefintion(){
  ProcessDefinition  pd = ProcessDefinition.parseXmlResource("simple/processdefinition.xml");
  pd.setName("s09报销单");
  getContext().deployProcessDefinition(pd);
  getContext().close();
 }
 //开启流程实例
 private void createInstance(String pname,String name){
   ProcessDefinition pd = getContext().getGraphSession().findLatestProcessDefinition("s09报销单");
   ProcessInstance   pi = pd.createProcessInstance();
   pi.getContextInstance().setVariable("start", name);
   pi.signal();
   getContext().close();
 }
 //写报销单
 private void writer(String name,float money,String msg){
   Session  session = getContext().getSession();
   String   hql     = "from TaskInstance where ACTORID_=? and END_ is null";
   Query    query   = session.createQuery(hql);
   query.setParameter(0, name);
  
    List<TaskInstance> list =query.list();// getContext().getTaskList(name);
    //System.out.println(list.size());
    if (list!=null)
     for (TaskInstance ti : list) {
    if (ti.getName().equals("写报销单")){
      //System.out.println("进来了没有");
      ti.setVariable("money", money);
      ti.setVariable("msg", msg);
      ti.end();
     
      break;
    }
    
   }
    getContext().close(); 
 }
 // 领导审批
 private void agree(int tid,boolean agree){
     TaskInstance ti = getContext().getTaskInstance(tid);
     if (ti!=null){
      String old = (String) ti.getVariable("status");
      if (agree)
      {
       ti.setVariable("status", old+"(同意)");
       ti.end("同意");
      }
      else{
       ti.setVariable("status", old+"(不同意)");
       ti.end("不同意");
      }
      getContext().close();
     }
 }
 
 public static void main(String[] args) {
  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  Test  test = (Test) context.getBean("jbpmTest");
  
  //test.createTable();
  //test.deployProcessionDefintion();
  //test.createInstance("s09报销单", "小李子");
  //test.writer("小李子", 3000, "坐车");
  //test.agree(6, false);
  
 }



 

 

 

 

分享到:
评论

相关推荐

    利用Spring实现工作流

    本文将深入探讨如何利用Spring实现工作流,以及如何通过Spring的依赖注入特性将业务模块灵活地整合在一起。 首先,我们需要理解Spring框架的核心概念——依赖注入(Dependency Injection,简称DI)。依赖注入是...

    jbpm+spring的web简单借款工作流实例项目

    总结来说,"jbpm+spring的web简单借款工作流实例项目"是一个融合了流程管理、服务集成和Web交互的综合案例,涵盖了jbPM流程设计、Spring框架整合、数据库操作以及Web应用开发等多个方面,对于学习和实践企业级业务...

    spring 整合 activiti工作流 相关jar包

    将Spring与Activiti整合,可以充分利用Spring的强大功能来管理和驱动Activiti工作流,实现灵活、可扩展且易于维护的业务流程解决方案。 1. **Spring框架**:Spring是一个开源的Java平台,提供了全面的企业应用程序...

    jbpm+spring的web简单借款工作流实例项目.rar

    jbpm+spring的web简单借款工作流实例项目是一个基于jbpm和Spring框架的示例应用,旨在演示如何在Web环境中实现一个简单的借款流程。这个项目的核心是利用jbpm(Java Business Process Management)作为工作流引擎,...

    spring的工作流程

    在本文中,我们将详细介绍如何使用 Spring 创建一个简单的工作流,并探讨工作流的定义、工作流模式、顺序工作流模式、使用 Spring 创建工作流组件等方面的内容。 工作流的定义 工作流是指不需要用户交互,按预定...

    springboot整合activity工作流审批前后台代码(有数据库)

    在本项目中,"springboot整合activity工作流审批前后台代码(有数据库)"是一个基于Spring Boot框架的应用,用于实现企业内部的工作流程审批系统。这个系统涵盖了员工、部门经理和BOSS三个不同的审批角色,旨在提供...

    activiti、spring mvc 基础web项目

    总结来说,这个项目是一个典型的Java企业级应用,通过结合Activiti的工作流管理和Spring MVC的Web开发能力,为开发者提供了一个完整的业务流程自动化解决方案。通过深入学习和实践,你可以掌握如何利用这些技术构建...

    OSGI整合Spring、Mybatis、Spring MVC实现一个登录应用案例

    分析这个源码,我们可以深入理解OSGI环境下这些组件如何协同工作,以及如何在实际项目中实现类似的功能。 总的来说,这个案例展示了OSGI的模块化优势,以及如何将Spring、Mybatis和Spring MVC集成到OSGI环境中,...

    Spring Web Flow权威指南

    根据提供的标题、描述和标签,本篇文章将围绕“Spring Web Flow”这一主题展开,深入...无论是多步骤表单的处理还是复杂的工作流管理,Spring Web Flow都能够提供一套完整的解决方案,极大地提升了开发效率和用户体验。

    spring web flow 官方文档

    安全性是任何应用程序都必须考虑的关键因素,Spring Web Flow提供了多种机制来保护工作流免受未经授权的访问。 #### 8.2 How do I secure a flow? 工作流的安全性可以通过多种方式实现,包括权限检查、角色分配、...

    使用springmvc、hibernate、maven开发的web实例项目。

    Spring MVC、Hibernate 和 Maven 是Java Web开发中的三个关键框架,它们各自在应用程序的不同层面发挥着重要作用。本项目是一个综合性的实例,将这三个框架整合在一起,为开发者提供了一个完整的Web应用程序开发环境...

    Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA

    在现代Java Web开发中,"Maven整合Spring+SpringMVC+Hibernate+SpringDataJPA"是一个常见的架构组合,被广泛应用于构建企业级应用程序。这个组合通常被称为"SSM",其中"M"代表Maven,"S"代表Spring,包括Spring核心...

    spring web flow入门

    例如,基于Struts的Web应用通常利用框架的Action和视图来实现页面流,但这会导致流程定义散乱,难以维护和理解,同时也限制了组件的重用性。 ### SWF如何改善页面流程管理 Spring Web Flow通过引入状态机的概念来...

    activity 工作流web工程demo例子(activity+hibernate+mysql)

    在这个"activity工作流web工程demo例子"中,我们看到它与Hibernate ORM框架和MySQL数据库相结合,构建了一个完整的示例项目,旨在帮助开发者理解和应用工作流管理。 1. **Activity工作流**:Activity是基于BPMN 2.0...

    在 Spring Web Flow 项目中应用 Hessian 服务

    在Spring Web Flow项目中应用Hessian服务,是一个深入整合分布式服务和前端流程管理的重要实践。Spring Web Flow(SWF)是一个强大的MVC框架,用于构建具有复杂导航逻辑的Web应用程序,而Hessian则是一种轻量级的二...

    图书:Spring Web流程2之Web开发

    《Spring Web Flow 2之Web开发》是一本深入讲解基于Spring框架的Web应用程序流程管理的专著。本书主要探讨如何使用Spring Web Flow (SWF) 2构建动态、交互式的Web应用,它允许开发者优雅地处理用户会话的流程控制。...

    activiti 基础 web项目 spring mvc.zip

    Activiti 是一个开源的工作流和业务流程管理(BPM)平台,它被广泛应用于构建企业级的应用程序。这个"activiti 基础 web项目 spring mvc.zip"压缩包文件显然是一个教学或示例项目,旨在帮助开发者了解如何在Spring ...

    activiti + spring mvc 基础web项目.zip

    这个基础Web项目将演示如何通过Spring MVC处理HTTP请求,调用服务层实现业务逻辑,然后与Activiti交互来执行工作流程。Activiti的工作流程可以通过图形化设计器定义,它可以处理审批流程、任务分配等复杂的业务流程...

    spring web flow 项目 核心JAR 包

    Spring Web Flow特别适用于需要复杂用户交互和流程管理的场景,如表单验证、多步骤的购物流程、工作流管理等。通过合理的配置和设计,它可以帮助开发者构建出符合用户需求、易于扩展和维护的Web应用。

    spring整合mybatis简单项目

    通过这个“Spring整合Mybatis项目-影视资源管理”,初学者可以了解到如何在实际项目中将Spring的控制反转和面向切面编程能力与Mybatis的灵活SQL操作相结合,实现一个功能完善的系统。这个过程不仅涉及技术的实践,...

Global site tag (gtag.js) - Google Analytics