`
longgangbai
  • 浏览: 7338092 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

工作流Activiti的学习总结(四)Spring和Activiti的整合配置讲解

 
阅读更多
SpringActiviti的整合:

SpringActiviti的整合中ProcessEngineFactoryBean成为了两者的整合点。ProcessEngineFactoryBeanorg.activiti.spring.ProcessEngineFactoryBean。提供了ProcessEngine的配置和创建的功能。
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">

    ...

</bean>

  

<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">

  <property name="processEngineConfiguration" ref="processEngineConfiguration" />

</bean>

如果在包含事物的activiti配置如下:
<beans xmlns="http://www.springframework.org/schema/beans" 

       xmlns:context="http://www.springframework.org/schema/context"

       xmlns:tx="http://www.springframework.org/schema/tx"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd

                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd

                           http://www.springframework.org/schema/tx      http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

 <!-- 采用spring的数据源类创建一个数据源 -->

  <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">

    <property name="driverClass" value="org.h2.Driver" />

    <property name="url" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" />

    <property name="username" value="sa" />

    <property name="password" value="" />

  </bean>

 <!-- 创建一个事物管理器 -->

  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

    <property name="dataSource" ref="dataSource" />

  </bean>

  <!-- 创建一个流程引擎的配置对象 -->

  <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">

    <property name="dataSource" ref="dataSource" />

    <property name="transactionManager" ref="transactionManager" />

    <!-- 设置数据库schema的更新方式 -->

    <property name="databaseSchemaUpdate" value="true" />

    <!-- 是否启动jobExecutor -->

    <property name="jobExecutorActivate" value="false" />

  </bean>

   <!-- 创建一个流程引擎bean -->

  <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">

    <property name="processEngineConfiguration" ref="processEngineConfiguration" />

  </bean>

  <!-- 创建activiti提供的各种服务 -->

  <!-- 工作流仓储服务 -->

  <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" />

  <!-- 工作流运行服务 -->

  <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" />

  <!--  工作流任务服务-->

  <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" />

  <!--  工作流历史数据服务-->

  <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" />

  <!--  工作流管理服务-->

  <bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" />

  <!-- 工作流唯一服务 -->

  <bean id="IdentityService" factory-bean="processEngine" factory-method="getIdentityService" />

 

...

工作流中Expressions的使用
  
在使用springSpringProcessEngineConfiguration时,如果没有beans属性表示所有bean都可以暴露给activiti的流程文件xml访问。如果配置beans但是没有配置mapbean信息,则没有暴露的bean。如果map中配置部分bean表示只是暴露部分beanactiviti使用。
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">

  ...

  <property name="beans">

    <map>

      <entry key="printer" value-ref="printer" />

    </map>

  </property>

</bean>

  

  <bean id="printer" class="org.activiti.examples.spring.Printer" />

暴露的bean可以在activiti的流程xml中使用。如下调用bean的方法
<bean id="printer" class="org.activiti.examples.spring.Printer" />
<definitions id="definitions" ...>

  

  <process id="helloProcess">

  

    <startEvent id="start" />

    <sequenceFlow id="flow1" sourceRef="start" targetRef="print" />

    

    <serviceTask id="print" activiti:expression="#{printer.printMessage()}" />

    <sequenceFlow id="flow2" sourceRef="print" targetRef="end" />

    

    <endEvent id="end" />

    

  </process>

 

</definitions>
public class Printer {

 

  public void printMessage() {

    System.out.println("hello world");

  }

}

自动资源部署(Automatic resource deploy
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">

  ...

  <property name="deploymentResources" value="classpath*:/org/activiti/spring/test/autodeployment/autodeploy.*.bpmn20.xml" />

</bean>

  

<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">

  <property name="processEngineConfiguration" ref="processEngineConfiguration" />

</bean>

Springactivit的整合测试
@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration("classpath:org/activiti/spring/test/junit4/springTypicalUsageTest-context.xml")

public class MyBusinessProcessTest {

  

  @Autowired

  private RuntimeService runtimeService;

  

  @Autowired

  private TaskService taskService;

  

  @Autowired

  @Rule

  public ActivitiRule activitiSpringRule;

  

  @Test

  @Deployment

  public void simpleProcessTest() {

    runtimeService.startProcessInstanceByKey("simpleProcess");

    Task task = taskService.createTaskQuery().singleResult();

    assertEquals("My Task", task.getName());

  

    taskService.complete(task.getId());

    assertEquals(0, runtimeService.createProcessInstanceQuery().count());

   

  }

}      

当在spring的配置中配置ActivitiRule时候,测试bean将自动被注入:

<bean id="activitiRule" class="org.activiti.engine.test.ActivitiRule">

  <property name="processEngine" ref="processEngine" />

</bean>  

分享到:
评论
1 楼 李凌风 2014-03-18  

相关推荐

    工作流Activiti5学习总结

    【工作流Activiti5学习总结】 工作流管理系统(Workflow Management System, WfMS)是企业信息化建设中的重要组成部分,它负责协调和管理业务流程。Activiti5是一款开源的工作流引擎,由Alfresco公司开发,它基于...

    工作流Activiti的学习总结Activiti5.6和Spring3.03整合

    在本文中,我们将深入探讨工作流管理系统Activiti 5.6与Spring 3.03的整合,以及如何使用它们来模拟程序员面试过程。Activiti是一个开源的工作流引擎,它为业务流程管理(BPM)提供了强大的支持。Spring框架则是一个...

    工作流activiti学习代码

    在本"工作流Activiti学习代码"资源中,我们将深入探讨如何利用Activiti进行流程设计、部署和执行。 1. Activiti简介: Activiti是一个基于模型驱动的BPMN 2.0规范的工作流引擎,支持图形化建模工具,使得业务人员...

    activiti工作流PPT

    **正文** ...总结来说,了解并熟练掌握Activiti的常用API对于任何希望实现高效工作流管理的开发者都至关重要。通过学习这个PPT,你将能够更好地理解和应用Activiti,从而提升你的业务流程自动化能力。

    activiti-explorer 与spring整合

    将 Activiti 和 Spring 整合在一起,可以创建出强大的企业级工作流管理系统。在本篇中,我们将深入探讨如何实现 `activiti-explorer` 与 Spring 的整合,以及如何在浏览器中进行流程图编辑。 首先,让我们了解 `...

    工作流Activiti的学习总结(十二) activiti官方十分钟快速学习

    在本篇博客“工作流Activiti的学习总结(十二)activiti官方十分钟快速学习”中,作者分享了关于Activiti工作流引擎的快速学习经验。Activiti是一个开源的、基于Java的企业级工作流引擎,它被广泛应用于自动化业务...

    Activiti工作流详细讲解完整教程.pdf

    根据提供的文件信息,我们可以深入探讨Activiti工作流框架的相关知识点。 ### Activiti工作流框架概述 Activiti工作流框架是一款由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架。它以其灵活性、易用...

    工作流activiti实战项目源码

    本项目“工作流activiti实战项目源码”提供了使用Activiti实现工作流的实例,适合开发者进行学习和实践。 在深入理解这个项目之前,我们先来了解一下Activiti的基本概念和功能: 1. **什么是Activiti**:Activiti ...

    activiti工作流学习总结

    ### Activiti工作流学习总结 #### 一、Activiti学习资源汇总 - **官方网站**: 提供了Activiti的最新版本信息、文档和技术支持等。地址为:[http://www.activiti.org/](http://www.activiti.org/) - **下载页面**: ...

    spring 整合 activiti工作流 相关jar包

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

    最新工作流引擎Activiti7基础与进阶

    本课程从Activiti的基础架构、表结构、基础API开始介绍,逐渐讲解到Activiti的高级功能如:流程变量、网关,再到最后使用Activiti和Spring框架、SpringBoot整合,实现一个应用DEMO。 课程内容 章节一:Activiti...

    Springboot2整合Activiti5设计器

    在本文中,我们将深入探讨如何将Spring Boot 2与Activiti 5流程设计器进行整合,以便在Java开发环境中实现高效的工作流管理。首先,我们需要理解这两个核心组件:Spring Boot和Activiti。 Spring Boot是Spring框架...

    activiti+spring+srping Mvc+mybatis+maven整合

    本项目是关于"activiti+spring+spring Mvc+mybatis+maven"的整合,旨在创建一个基于Activiti工作流引擎、Spring、Spring MVC、MyBatis以及Maven的开发环境。下面将详细介绍这些技术及其整合过程。 首先,`activiti`...

    Spring结合Activiti工作流

    1. **引入依赖**:在项目中添加Activiti和Spring的相关库,通常包括activiti-engine、activiti-spring以及Spring的相关模块。 2. **配置Activiti**:在Spring的配置文件中声明Activiti的配置,包括数据源、事务管理...

    Activiti6.0工作流引擎springboot项目代码

    通过以上分析,我们可以看出这个项目旨在教授如何利用Activiti 6.0工作流引擎和Spring Boot进行业务流程自动化开发,同时可能涵盖了SpringCloud的使用,为开发者提供了丰富的实践素材。对于希望在企业级应用中引入...

    Spring-activiti-ruoyi-activiti

    首先,你需要在项目中引入Spring-Activiti和Ruoyi的相关依赖,通常通过Maven或Gradle进行管理。然后,配置Activiti的数据源、事务管理器以及流程引擎。在Spring Boot的配置文件中,你可以设置相关的bean,如`...

    activiti-api-spring-integration-example.zip

    Activiti是一款轻量级、高效的企业业务流程管理(BPM)和工作流引擎,它能够帮助开发者轻松地实现流程定义和执行。而Spring框架作为Java领域的主流应用框架,以其强大的IoC和AOP特性,为开发者提供了丰富的功能支持...

    工作流activiti-6.0.0.zip

    这个"工作流activiti-6.0.0.zip"文件包含的是Activiti 6.0.0版本的完整包,通常包括源代码、文档、库文件和其他必要的组件,用于开发和部署基于Activiti的工作流系统。 Activiti 6.0.0是一个重要的版本,因为它引入...

    工作流activiti集合spring

    工作流Activiti与Spring的集成是企业级应用中常见的技术组合,主要用于实现自动化业务流程管理。Activiti是一款开源的工作流引擎,它提供了丰富的流程建模、执行和监控能力,而Spring作为Java应用开发的基石,提供了...

Global site tag (gtag.js) - Google Analytics