zoukankan      html  css  js  c++  java
  • Spring MVC 整合Activiti5.22配置详解

    转载请注明出处 https://www.cnblogs.com/rolayblog/p/10444866.html

    背景

    某天有同事反映,审批记录中看到该他审批,但是待办里面却没有待办事项,于是看服务器日志,找到了问题所在。业务代码报错,已经抛出了异常,但是流程还是继续往下走了,完全不受@Transactional注解影响,看到这里就知道问题在哪里了,此时我用的正是默认获取流程引擎对象的方式,Activiti大佬和Spring大佬自己做自己的,不行要把它们掰弯,强行在一起。于是翻阅《Activiti 权威指南》找到了解决方法,买了这本书就没有怎么看过,只是遇到问题了才翻一翻。另外,感谢分享牛大佬的提醒。

    Tip

    了解activiti的道友们应该都知道,流程引擎的配置文件放在resources下,可以直接通过ProcessEngines.getDefaultProcessEngine()方法直接获取流程引擎对象,亦或者通过ProcessEngineConfiguration.createProcessEngineConfigurationFromInputStream()读取其他位置的配置文件,但是呢,咋们既然用了强大的Sring,像事务、流程引擎对象的管理甚至流程引擎内部的API都交给统统交给它吧!进入正题吧。

    Maven

    我这里排除了spring-context,因为项目里面用的spring是高版本的,但是Activiti 5.22只能引用这个版本的activiti-spring,可根据自己需要删除。

     1 <dependency>
     2             <groupId>org.activiti</groupId>
     3             <artifactId>activiti-spring</artifactId>
     4             <version>5.22.0</version>
     5             <exclusions>
     6                 <exclusion>
     7                     <groupId>org.springframework</groupId>
     8                     <artifactId>spring-context</artifactId>
     9                 </exclusion>
    10             </exclusions>
    11 </dependency>
    View Code

    流程引擎配置文件

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
     5     <!--配置数据源-->
     6     <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
     7     <property name="driverClass" value="com.mysql.jdbc.Driver"/>
     8     <property name="url" value="jdbc:mysql://数据库地址"/>
     9     <property name="username" value="账号"/>
    10     <property name="password" value="密码"/>
    11     </bean>
    12     <!--流程引擎配置-->
    13     <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
    14     <property name="dataSource" ref="dataSource"/>
    15     <property name="databaseSchemaUpdate" value="false"/>
    16     </bean>
    17 </beans>
    流程引擎配置文件

    Spring 配置文件

    这里面加入了流程引擎,和几个Service。

     1 <!--Spring流程引擎配置-->
     2     <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
     3         <property name="dataSource" ref="dataSource"/>
     4         <property name="databaseSchemaUpdate" value="false"/>
     5         <property name="transactionManager" ref="transactionManager"/>
     6         <property name="idGenerator" ref="uuidGenerator"/>
     7     </bean>
     8  <!--自定义ID生成-->
     9     <bean id="uuidGenerator" class=""/>
    10     <!--Spring流程引擎-->
    11     <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
    12         <property name="processEngineConfiguration" ref="processEngineConfiguration"/>
    13     </bean>
    14     <!--流程引擎服务-->
    15     <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService"/>
    16     <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService"/>
    17     <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService"/>
    18     <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService"/>
    19     <bean id="managementService" factory-bean="processEngine" factory-method="getManagementService"/>
    Spring配置

    至此就配置完成了,可以在代码里面通过@Autowired获取流程引擎或者API了,事务也统一管理了。

     

    甘于平凡,做一个甘于平凡的人,菜米油盐,生老病死。
  • 相关阅读:
    css3新特性总结
    H5新特性总结
    小程序本地移除有一条数据
    字符串截取(某个指定字符前面和后面的值)(指定前几位后几位)
    uni-app 创建项目
    数组转数组对象及数组对象中的某个属性值拼成一个数组
    VUE 解决单页使用keep-alive页面返回不刷新的问题
    小程序弹窗真机不动
    js 数组去重方法
    VUE 列表页中实现分页(下拉到底部触发下一页 )
  • 原文地址:https://www.cnblogs.com/rolayblog/p/10495886.html
Copyright © 2011-2022 走看看