Activiti(一)SpringBoot2集成Activiti6

Activiti是领先的轻量级的,以Java为中心的开源BPMN(Business Process Modeling Notation)引擎,实现了真正的流程自动化。下面介绍如何在SpringBoot环境下使用Maven集成Activiti6,来实现流程开发。

添加依赖


    org.activiti
    activiti-spring-boot-starter-basic
    6.0.0


    org.springframework.boot
    spring-boot-starter-web


    org.springframework.boot
    spring-boot-starter-jdbc

添加Processes目录

SpringBoot集成activiti默认会从classpath下的processes目录下读取流程定义文件,所以需要在src/main/resources目录下添加processes目录,并在目录中创建流程文件,添加目录后,目录结构变为:

Activiti(一)SpringBoot2集成Activiti6_第1张图片

 

如果没有processes目录,则需要修改配置spring.activiti.process-definition-location-prefix,指定流程文件存放目录。

Spring集成Activiti6默认支持**.bpmn20.xml和**.bpmn格式的流程定义文件,修改支持的文件格式,通过配置spring.activiti.process-definition-location-suffixes修改

如:

spring:
  activiti:
    check-process-definitions: true #自动检查、部署流程定义文件
    database-schema-update: true #自动更新数据库结构
    process-definition-location-prefix: classpath:/processes/ #流程定义文件存放目录
   #process-definition-location-suffixes: #流程文件格式
   #  - **.bpmn20.xml
   #  - **.bpmn

启动项目时,如果没有流程部署,就不能通过自动注入,使用RuntimeService等API,依赖注入时后报错。

ActivitiProperties中定义了activiti的自动配置项,其他配置请查看ActivitiProperties属性。

添加数据源

添加数据源,项目中添加数据源,初始化数据库结构,后续保存流程数据,

spring :
  #data source config
   datasource :
    driver : com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.105.10:3306/test_db?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true
    username : root
    password : mysql
    initsize : 10
    maxActive : 20
    minIdle : 10
    maxWait : 120000
    poolPreparedStatements : false
    maxOpenPreparedStatements : -1
    validationQuery : select 1
    testOnborrow : true
    testOnReturn : true
    testWhileIdle : true
    timeBetweenEvictionRunsMillis : 120000
    filters : log4j,stat

添加流程

在项目中添加流程,创建文件simple.bpmn,添加内容



  
    
    
    
    
    
  

启动测试

编写SpringBoot启动类,启动项目,启动项目。

@SpringBootApplication(scanBasePackages = "com.legao.server")
@EnableSwagger2
public class WorkflowServer {

    public static void main(String[] args) {

        SpringApplication.run(WorkflowServer.class, args);
    }
}

启动时,发现启动报错,

Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

查看activiti-spring-boot-starter-basic-6.0.0.jar发现,org.activiti.spring.boot.SecurityAutoConfiguration编译报错,这时候将SecurityAutoConfiguration排除到SpringBoot启动之外,即@SpringBootApplication注解添加exclude = SecurityAutoConfiguration.class属性

@SpringBootApplication(scanBasePackages = "com.legao.server", exclude = SecurityAutoConfiguration.class)
@EnableSwagger2
public class WorkflowServer {

    public static void main(String[] args) {

        SpringApplication.run(WorkflowServer.class, args);
    }
}

再启动发现启动正常,这时候SpringBoot集成activiti已经启动成功,查看数据库,Activiti6运行所需的28张表也已经创建成功。

ACT_EVT_LOG
ACT_GE_BYTEARRAY
ACT_GE_PROPERTY
ACT_HI_ACTINST
ACT_HI_ATTACHMENT
ACT_HI_COMMENT
ACT_HI_DETAIL
ACT_HI_IDENTITYLINK
ACT_HI_PROCINST
ACT_HI_TASKINST
ACT_HI_VARINST
ACT_ID_GROUP
ACT_ID_INFO
ACT_ID_MEMBERSHIP
ACT_ID_USER
ACT_PROCDEF_INFO
ACT_RE_DEPLOYMENT
ACT_RE_MODEL
ACT_RE_PROCDEF
ACT_RU_DEADLETTER_JOB
ACT_RU_EVENT_SUBSCR
ACT_RU_EXECUTION
ACT_RU_IDENTITYLINK
ACT_RU_JOB
ACT_RU_SUSPENDED_JOB
ACT_RU_TASK
ACT_RU_TIMER_JOB
ACT_RU_VARIABLE

(完)

你可能感兴趣的:(activiti)