最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring和activiti進(jìn)行整合過程解析

 更新時(shí)間:2020年03月09日 08:54:56   作者:程序曉猿  
這篇文章主要介紹了Spring和activiti進(jìn)行整合過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一、整合原理

activiti的配置文件本身就是一個(gè)spring的配置文件,但默認(rèn)情況下只講ProcessEngineConfiguration作為一個(gè)bean來使用,調(diào)用ProcessEngines.getDefaultProcessEngine()加載的就是配置文件中的這個(gè)bean。和spring整合后就可以把bean的管理讓spring來進(jìn)行,在代碼中獲取任意的bean。

activiti提供了一個(gè)spring模塊,在一個(gè)spring工程中引入這個(gè)模塊就能夠整合

<dependency>
  <groupId>org.activiti</groupId>
  <artifactId>activiti-spring</artifactId>
  <version>5.22.0</version>
</dependency>

并且引入這個(gè)依賴后就不需要再單獨(dú)引入activiti的依賴了,這里邊已經(jīng)包含了

二、整合步驟

2.1 新建一個(gè)maven工程并導(dǎo)入相關(guān)依賴

<dependencies>
  <!--spring -->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.0.2.RELEASE</version>
  </dependency>

  <dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring</artifactId>
    <version>5.22.0</version>
  </dependency>

  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.26</version>
  </dependency>

  <dependency>
    <groupId>c3p0</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.1.2</version>
    <type>jar</type>
    <scope>compile</scope>
  </dependency>

  <dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
  </dependency>

  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
  </dependency>
</dependencies>

這里導(dǎo)入了spring,activiti,數(shù)據(jù)庫(kù)驅(qū)動(dòng)等依賴。

2.2 創(chuàng)建spring配置文件

在resources目錄下創(chuàng)建spring配置文件,applicationContext.xml,其中主要配置如下bean

(1)數(shù)據(jù)源(連接池)

(2)事務(wù)管理器(和spring整合后必須配置事務(wù)管理器)

(3)流程引擎配置對(duì)象,這里可以注入一些流程引擎的配置

(4)流程引擎對(duì)象

(5)activiti的服務(wù)組件,配置后在程序中可以直接從容器中獲取

完整的配置文件如下

<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">

  
  <!-- 配置連接池 -->
  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti_01"/>
    <property name="user" value="root"/>
    <property name="password" value="root"/>
  </bean>
  
  <!-- 事務(wù)管理器 -->
  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
  </bean>
  
  <!-- 配置使用spring提供的的流程引擎配置對(duì)象 -->
  <bean id="processEngineConfiguration"
    class="org.activiti.spring.SpringProcessEngineConfiguration">
    <property name="dataSource" ref="dataSource"></property>
    <property name="transactionManager" ref="transactionManager"></property>
    <property name="databaseSchemaUpdate" value="true"></property>
    <property name="deploymentResources" value="classpath*:/process/*.bpmn"></property>
  </bean>
  
  <!-- 配置流程引擎工廠bean,獲取這個(gè)bean就可以直接獲取到流程引擎對(duì)象 -->
  <!-- 注意這個(gè)不是使用靜態(tài)工廠來獲取bean -->
  <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
    <property name="processEngineConfiguration" ref="processEngineConfiguration"></property>
  </bean>
  
  <!-- 配置activiti的服務(wù)組件 -->
  <!-- 這里是通過實(shí)例工廠來創(chuàng)建服務(wù)組件的對(duì)象
  ProcessEngine類的父類EngineServices中有獲取服務(wù)組件的get方法,所以這里把processEngine當(dāng)做實(shí)例工廠來使用,
  而這幾個(gè)對(duì)象是在創(chuàng)建流程引擎配置對(duì)象時(shí)就new出來的
   -->
  <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService">
  </bean>
  <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService">
  </bean>
  <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService">
  </bean>
  <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService">
  </bean>

</beans>

三、測(cè)試

在代碼中加載spring配置文件,并直接從容器里獲取服務(wù)組件,看能否直接使用服務(wù)組件

@Test
public void test4() {
  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  //通過容器獲取taskService組件
  TaskService taskService= (TaskService) context.getBean("taskService");
  System.out.println(taskService);
  List<Task> list = taskService.createTaskQuery().taskAssignee("tom").list();
  for (Task task : list) {
    System.out.println(task);
  }
}

如果能夠成功運(yùn)行,說明activiti和spring已經(jīng)整合完成了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何使用BigDecimal實(shí)現(xiàn)Java開發(fā)商業(yè)計(jì)算

    如何使用BigDecimal實(shí)現(xiàn)Java開發(fā)商業(yè)計(jì)算

    這篇文章主要介紹了如何使用BigDecimal實(shí)現(xiàn)Java開發(fā)商業(yè)計(jì)算,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Springmvc攔截器執(zhí)行順序及各方法作用詳解

    Springmvc攔截器執(zhí)行順序及各方法作用詳解

    這篇文章主要介紹了Springmvc的攔截器執(zhí)行順序及各方法作用,下面講實(shí)現(xiàn)其接口的寫法,先看一下這個(gè)接口的三個(gè)方法,需要的朋友可以參考下
    2018-07-07
  • Java最常用的6個(gè)簡(jiǎn)單的計(jì)算題

    Java最常用的6個(gè)簡(jiǎn)單的計(jì)算題

    本篇文章給大家整理的在JAVA中最常用到的簡(jiǎn)單的計(jì)算題,對(duì)此有興趣的朋友可以測(cè)試參考下。
    2018-02-02
  • Spring中的ImportBeanDefinitionRegistrar接口詳解

    Spring中的ImportBeanDefinitionRegistrar接口詳解

    這篇文章主要介紹了Spring中的ImportBeanDefinitionRegistrar接口詳解,ImportBeanDefinitionRegistrar接口是也是spring的擴(kuò)展點(diǎn)之一,它可以支持我們自己寫的代碼封裝成BeanDefinition對(duì)象,注冊(cè)到Spring容器中,功能類似于注解@Service @Component,需要的朋友可以參考下
    2023-09-09
  • Maven分模塊開發(fā)執(zhí)行指令失敗的問題

    Maven分模塊開發(fā)執(zhí)行指令失敗的問題

    Maven分模塊開發(fā),行指令失敗,modules.module[3]‘ specifies duplicate child module maven_dao @ line 29, column 1的問題,本文給大家分享解決方法,感興趣的朋友跟隨小編一起看看吧
    2020-09-09
  • Java利用反射實(shí)現(xiàn)文件的讀取操作

    Java利用反射實(shí)現(xiàn)文件的讀取操作

    這篇文章主要介紹了Java利用反射實(shí)現(xiàn)文件的讀取操作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • javax.servlet不存在的解決辦法

    javax.servlet不存在的解決辦法

    今天在關(guān)于servlet的編譯中出現(xiàn)了一下小小的錯(cuò)誤,發(fā)現(xiàn)javax.servlet不存在,本文就介紹一下解決方法,感興趣的可以了解一下
    2021-07-07
  • 如何在java中使用SFTP協(xié)議安全的傳輸文件

    如何在java中使用SFTP協(xié)議安全的傳輸文件

    這篇文章主要介紹了如何在java中使用SFTP協(xié)議安全的傳輸文件,幫助大家更好的理解和使用JSch,感興趣的朋友可以了解下
    2020-10-10
  • Java實(shí)現(xiàn)TCP和UDP協(xié)議詳解

    Java實(shí)現(xiàn)TCP和UDP協(xié)議詳解

    這篇文章主要介紹了Java實(shí)現(xiàn)TCP和UDP協(xié)議詳解,TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報(bào)協(xié)議)是兩種最常用的傳輸層協(xié)議,它們都用于在網(wǎng)絡(luò)上傳輸數(shù)據(jù),但是它們之間有很多不同之處,需要的朋友可以參考下
    2023-07-07
  • java中實(shí)現(xiàn)遞歸計(jì)算二進(jìn)制表示中1的個(gè)數(shù)

    java中實(shí)現(xiàn)遞歸計(jì)算二進(jìn)制表示中1的個(gè)數(shù)

    這是一個(gè)很有意思的問題,是在面試中特別容易被問到的問題之一,解決這個(gè)問題第一想法肯定是一位一位的去判斷,是1計(jì)數(shù)器+1,否則不操作,跳到下一位,十分容易,編程初學(xué)者就可以做得到!
    2015-05-05

最新評(píng)論

望城县| 抚顺市| 福海县| 澳门| 青海省| 兴仁县| 分宜县| 宁都县| 清新县| 元谋县| 彰化县| 喀喇沁旗| 桂平市| 潜山县| 简阳市| 鄯善县| 项城市| 涟源市| 尉氏县| 清丰县| 新安县| 平和县| 来凤县| 阳江市| 彭州市| 平昌县| 滨海县| 鹰潭市| 南投县| 蓝山县| 南通市| 林芝县| 舞钢市| 绥德县| 昆山市| 双柏县| 根河市| 江北区| 和林格尔县| 康保县| 福鼎市|