• 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

  • 相关阅读:
    SQL SERVER 表分区技术
    T-SQL 查询某个表的约束(包含触发器trigger)
    该数据库标记为 SUSPECT解决方法
    DevExpressGridHelper
    DevExpress MVC Gridview 把header caption 替换为 CheckBox (类似select all)
    CSRF漏洞
    XSS闯关挑战(1-15)
    Nginx 解析漏洞
    Nginx 配置错误导致漏洞
    Nginx 文件名逻辑漏洞(CVE-2013-4547)
  • 原文地址:https://www.cnblogs.com/ying-dong/p/12581414.html
Copyright © 2020-2023  润新知