Spring、SpringBoot集成Activiti


目錄

--1.Spring集成Activiti

--2.SpringBoot集成Activiti(使用starter)

--3.SpringBoot集成Activiti(手動創建@Configuration配置類)

 

1.Spring集成Activiti 

  1>修改pom.xml

<activiti.version>6.0.0</activiti.version>


<!-- activiti集成 -->
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-engine</artifactId>
        <version>${activiti.version}</version>
    </dependency>
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-spring</artifactId>
        <version>${activiti.version}</version>
    </dependency>

  2>創建application-activiti.xml

<?xml version="1.0" encoding="UTF-8"?>
<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:aop="http://www.springframework.org/schema/aop" 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.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd">
    
   <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
           <!-- 注入數據源 -->
           <property name="dataSource" ref="dataSource"></property>
           <!-- 把事務交給spring 去管理 -->
           <property name="transactionManager" ref="transactionManager" />
        <!--            
        flase: 默認值。activiti在啟動時,會對比數據庫表中保存的版本,如果沒有表或者版本不匹配,將拋出異常。
        true: activiti會對數據庫中所有表進行更新操作。如果表不存在,則自動創建。
        create_drop: 在activiti啟動時創建表,在關閉時刪除表(必須手動關閉引擎,才能刪除表)。
        drop-create: 在activiti啟動時刪除原來的舊表,然后在創建新表(不需要手動關閉引擎)。 -->
           <property name="databaseSchemaUpdate" value="true"></property>
   </bean>
   
   <!-- 創建流程引擎對象 -->
   <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
        <property name="processEngineConfiguration" ref="processEngineConfiguration" />
    </bean>
    <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="formService" factory-bean="processEngine" factory-method="getFormService" />
    <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" />
</beans>

  3>啟動項目測試

25張表建立

 

 


2.SpringBoot集成Activiti(使用starter方式)

  1>修改pom.xml

<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring-boot-starter-basic</artifactId>
    <version>6.0.0</version>
</dependency>

  2>修改application.yml配置環境變量

activiti:
database-schema-update: true
process-definition-location-prefix: "classpath*:/processes/*.bpmn"
history-level: full
db-history-used: true #配置生成history表,默認false,只會生成17張表

  3>創建配置類

@Configuration
public class ActivitiConfig extends AbstractProcessEngineAutoConfiguration {
 
    @Bean
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource activitiDataSource() {
        return DataSourceBuilder.create().build();
    }
    @Bean
    public SpringProcessEngineConfiguration springProcessEngineConfiguration(
            PlatformTransactionManager transactionManager,
            SpringAsyncExecutor springAsyncExecutor) throws IOException {
 
        return baseSpringProcessEngineConfiguration(
                activitiDataSource(),
                transactionManager,
                springAsyncExecutor);
    }

  4>修改啟動類

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

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

}

 


 

3.SpringBoot集成Activiti(使用配置類方式)

 

  1>修改pom.xml

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

  2>創建配置類

@Configuration
public class ActivitiConfiguration {
 
    @Autowired
    private DataSource dataSource;
    @Autowired
    private PlatformTransactionManager platformTransactionManager;
 
    @Bean
    public SpringProcessEngineConfiguration springProcessEngineConfiguration(){
        SpringProcessEngineConfiguration spec = new SpringProcessEngineConfiguration();
        spec.setDataSource(dataSource);
        spec.setTransactionManager(platformTransactionManager);
        spec.setDatabaseSchemaUpdate("true");
        Resource[] resources = null;
        // 啟動自動部署流程
        try {
            resources = new PathMatchingResourcePatternResolver().getResources("classpath*:bpmn/*.bpmn");
        } catch (IOException e) {
            e.printStackTrace();
        }
        spec.setDeploymentResources(resources);
        return spec;
    }
    
    @Bean
    public ProcessEngineFactoryBean processEngine(){
        ProcessEngineFactoryBean processEngineFactoryBean = new ProcessEngineFactoryBean();
        processEngineFactoryBean.setProcessEngineConfiguration(springProcessEngineConfiguration());
        return processEngineFactoryBean;
    }
 
    
    @Bean
    public RepositoryService repositoryService() throws Exception{
        return processEngine().getObject().getRepositoryService();
    }
    @Bean
    public RuntimeService runtimeService() throws Exception{
        return processEngine().getObject().getRuntimeService();
    }
    @Bean
    public TaskService taskService() throws Exception{
        return processEngine().getObject().getTaskService();
    }
    @Bean
    public HistoryService historyService() throws Exception{
        return processEngine().getObject().getHistoryService();
    }

} 

 

參考資料:

  https://blog.csdn.net/yage124/article/details/103097696

  https://www.jianshu.com/p/77fa5f932f4f

  https://blog.csdn.net/weixin_38023579/article/details/103476955


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM