天天看点

activiti7(五):activiti7与spring、springBoot整合一、与spring整合二、与springBoot整合

一、与spring整合

1、pom.xml中添加依赖

<dependencies>
        <!--activiti7核心包-->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-engine</artifactId>
            <version>7.0.0.Beta1</version>
        </dependency>
        <!--activiti7与spring整合的包-->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring</artifactId>
            <version>7.0.0.Beta1</version>
        </dependency>

        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-model</artifactId>
            <version>7.0.0.Beta1</version>
        </dependency>

        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-converter</artifactId>
            <version>7.0.0.Beta1</version>
        </dependency>

        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-json-converter</artifactId>
            <version>7.0.0.Beta1</version>
        </dependency>

          <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-layout</artifactId>
            <version>7.0.0.Beta1</version>
          </dependency>

        <dependency>
            <groupId>org.activiti.cloud</groupId>
            <artifactId>activiti-cloud-services-api</artifactId>
            <version>7.0.0.Beta1</version>
        </dependency>

        <dependency>
            <groupId>aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.5.4</version>
        </dependency>

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

        <!-- log start -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.6</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.6</version>
        </dependency>
        <!-- log end -->

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>

        <!--数据源暂时用dbcp-->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>


        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.0.8.RELEASE</version>
        </dependency>
    </dependencies>
           

2、类路径下添加spring-config.xml配置文件

<!--配置数据源-->
    <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/activiti7_study"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
        <property name="maxActive" value="50"/>
        <property name="maxIdle" value="10"/>
        <property name="minIdle" value="5"/>
    </bean>


<!--spring环境下的工作流引擎配置对象-->
    <bean id="processConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
        <property name="dataSource" ref="datasource"/>
        <property name="transactionManager" ref="transactionManager"/>
        <!--数据库更新策略,有则更新,没有则创建-->
        <property name="databaseSchemaUpdate" value="true"/>
    </bean>

    <!--配置spring环境下的流程引擎对象-->
    <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
        <property name="processEngineConfiguration" ref="processConfiguration"/>
    </bean>

    <!--根据流程引擎,创建常用的service并注入到IOC容器中-->
    <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"/>

    <!--spring的数据源事务管理器,对数据源进行管理-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="datasource"/>
    </bean>

<!--配置事务的通知,spring用aop来实现声明式事务-->
    <!--<tx:advice id="txAdvice" transaction-manager="transactionManager">
        &lt;!&ndash;针对被通知的方法,设置具体的事务属性&ndash;&gt;
        <tx:attributes>
            <tx:method name="save*" propagation="REQUIRED"/>
            <tx:method name="insert*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="remove*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="edit*" propagation="REQUIRED"/>
            <tx:method name="find*" propagation="REQUIRED"/>
            <tx:method name="select*" propagation="REQUIRED"/>
            <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="list*" propagation="SUPPORTS" read-only="true"/>
        </tx:attributes>
    </tx:advice>-->

    <!--aop配置,-->
    <!--<aop:config proxy-target-class="true">
        &lt;!&ndash;配置切入点表达式&ndash;&gt;
        <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.demo.serviceimpl.*.*(..))"/>
    </aop:config>-->


           

3、加载spring的配置文件,注入操作service并初始化activiti数据库

@RunWith(SpringJUnit4ClassRunner.class)
//加载配置文件,好创建processEngine对象,以创建数据表
@ContextConfiguration(locations = "classpath:/spring-config.xml")
public class SpringActivitiTest {

    @Autowired
    private ProcessEngine processEngine;

    @Autowired
    private RepositoryService repositoryService;
    @Autowired
    private RuntimeService runtimeService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private HistoryService historyService;


    @Test
    public void test01(){

        System.out.println(repositoryService);
    }

}
           

二、与springBoot整合

1、pom.xml添加依赖

<dependencies>
        <!-- activiti7 starter
        7.1.0.M1 这个M1版本好像跟没整合springSecurity一样,不引入springSecurity依赖,
        启动类不排除SecurityAutoConfiguration.class,一样可以正常启动,刚开始使用M6版本,不引入springSecurity就启动报错
        -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter</artifactId>
            <version>7.1.0.M1</version>
        </dependency>
        <!--<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>-->


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--mybatis依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>

        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!--druid数据源 starter-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

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

2、application.yml配置

server:
  port: 2021

spring:
  application:
    name: activiti7_springBoot

  datasource:
    druid:
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://localhost:3306/activiti7_study?useUnicode=true&useSSL=false&allowMultiQueries=true&characterEncoding=UTF-8
      username: root
      password: 123456
      initial-size: 10
      max-active: 20
      min-idle: 2

  activiti:
    #database-schema-update: drop-create #先删除act_的表在创建
    #数据表生成策略,没有时创建,有时更新
    database-schema-update: true
    #生成历史记录相关表
    db-history-used: true
    #不检查默认路径下的.bpmn文件,否则若没有就报错
    check-process-definitions: false
    history-level: full
           

3、springBoot启动类(普通的启动类)

@SpringBootApplication(exclude = {
        //SecurityAutoConfiguration.class
})
public class Activiti7SpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(Activiti7SpringBootApplication.class, args);
    }

}
           

启动后,就初始化activiti7的数据表。

还是springBoot简单好用啊。

继续阅读