SpringBoot2集成Activiti6


Activiti是領先的輕量級的,以Java為中心的開源BPMN(Business Process Modeling Notation)引擎,實現了真正的流程自動化。下面介紹如何在SpringBoot環境下使用Maven集成Activiti6,來實現流程開發。

添加依賴


   
   
  
  
          
  1. <dependency>
  2. <groupId>org.activiti </groupId>
  3. <artifactId>activiti-spring-boot-starter-basic </artifactId>
  4. <version>6.0.0 </version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot </groupId>
  8. <artifactId>spring-boot-starter-web </artifactId>
  9. </dependency>
  10. <dependency>
  11. <groupId>org.springframework.boot </groupId>
  12. <artifactId>spring-boot-starter-jdbc </artifactId>
  13. </dependency>

添加Processes目錄

SpringBoot集成activiti默認會從classpath下的processes目錄下讀取流程定義文件,所以需要在src/main/resources目錄下添加processes目錄,並在目錄中創建流程文件,添加目錄后,目錄結構變為:

 

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

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

如:


   
   
  
  
          
  1. spring:
  2. activiti:
  3. check-process-definitions: true #自動檢查、部署流程定義文件
  4. database-schema-update: true #自動更新數據庫結構
  5. process-definition-location-prefix: classpath:/processes/ #流程定義文件存放目錄
  6. #process-definition-location-suffixes: #流程文件格式
  7. # - **.bpmn20.xml
  8. # - **.bpmn

啟動項目時,如果沒有流程部署,就不能通過自動注入,使用RuntimeService等API,依賴注入時后報錯。

ActivitiProperties中定義了activiti的自動配置項,其他配置請查看ActivitiProperties屬性。

添加數據源

添加數據源,項目中添加數據源,初始化數據庫結構,后續保存流程數據,


   
   
  
  
          
  1. spring :
  2. #data source config
  3. datasource :
  4. driver : com.mysql.jdbc.Driver
  5. url: jdbc:mysql: //192.168.105.10:3306/test_db?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true
  6. username : root
  7. password : mysql
  8. initsize : 10
  9. maxActive : 20
  10. minIdle : 10
  11. maxWait : 120000
  12. poolPreparedStatements : false
  13. maxOpenPreparedStatements : - 1
  14. validationQuery : select 1
  15. testOnborrow : true
  16. testOnReturn : true
  17. testWhileIdle : true
  18. timeBetweenEvictionRunsMillis : 120000
  19. filters : log4j,stat

添加流程

在項目中添加流程,創建文件simple.bpmn,添加內容


   
   
  
  
          
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:tns="Examples" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" expressionLanguage="http://www.w3.org/1999/XPath" id="m1539757531057" name="" targetNamespace="Examples" typeLanguage="http://www.w3.org/2001/XMLSchema">
  3. <process id="oneTaskProcess" isClosed="false" name="The One Task Process" processType="None">
  4. <startEvent id="theStart"/>
  5. <sequenceFlow id="flow1" sourceRef="theStart" targetRef="theTask"/>
  6. <userTask activiti:assignee="${user}" activiti:exclusive="true" id="theTask" name="my task"/>
  7. <sequenceFlow id="flow2" sourceRef="theTask" targetRef="theEnd"/>
  8. <endEvent id="theEnd"/>
  9. </process>
  10. </definitions>

啟動測試

編寫SpringBoot啟動類,啟動項目,啟動項目。


   
   
  
  
          
  1. @SpringBootApplication(scanBasePackages = "com.legao.server")
  2. @EnableSwagger2
  3. public class WorkflowServer {
  4. public static void main(String[] args) {
  5. SpringApplication.run(WorkflowServer.class, args);
  6. }
  7. }

啟動時,發現啟動報錯,


   
   
  
  
          
  1. Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
  2. 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屬性


   
   
  
  
          
  1. @SpringBootApplication(scanBasePackages = "com.legao.server", exclude = SecurityAutoConfiguration.class)
  2. @EnableSwagger2
  3. public class WorkflowServer {
  4. public static void main(String[] args) {
  5. SpringApplication.run(WorkflowServer.class, args);
  6. }
  7. }

再啟動發現啟動正常,這時候SpringBoot集成activiti已經啟動成功,查看數據庫,Activiti6運行所需的28張表也已經創建成功。


   
   
  
  
          
  1. ACT_EVT_LOG
  2. ACT_GE_BYTEARRAY
  3. ACT_GE_PROPERTY
  4. ACT_HI_ACTINST
  5. ACT_HI_ATTACHMENT
  6. ACT_HI_COMMENT
  7. ACT_HI_DETAIL
  8. ACT_HI_IDENTITYLINK
  9. ACT_HI_PROCINST
  10. ACT_HI_TASKINST
  11. ACT_HI_VARINST
  12. ACT_ID_GROUP
  13. ACT_ID_INFO
  14. ACT_ID_MEMBERSHIP
  15. ACT_ID_USER
  16. ACT_PROCDEF_INFO
  17. ACT_RE_DEPLOYMENT
  18. ACT_RE_MODEL
  19. ACT_RE_PROCDEF
  20. ACT_RU_DEADLETTER_JOB
  21. ACT_RU_EVENT_SUBSCR
  22. ACT_RU_EXECUTION
  23. ACT_RU_IDENTITYLINK
  24. ACT_RU_JOB
  25. ACT_RU_SUSPENDED_JOB
  26. ACT_RU_TASK
  27. ACT_RU_TIMER_JOB
  28. ACT_RU_VARIABLE

(完)

原文地址:https://blog.csdn.net/weihao_/article/details/83241662


免責聲明!

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



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