springboot整合activiti+bpmn-js或VUE(架構搭建篇)

簡潔明瞭的介紹下不用太多篇幅

activiti介紹

Activiti是一個工做流引擎,activiti能夠將業務系統中複雜的業務流程抽取出來,使用專門的建模語言(BPMN2.0)進行定義,業務系統按照預先定義的流程進行執行,實現了業務系統的業務流程由activiti進行管理,減小業務系統因爲流程變動進行系統升級改造的工做量,從而提升系統的健壯性,同時也減小了系統開發維護成本。前端

BPM介紹

  • Bpm(Business Process Management),業務流程管理,是一種理念,以持續的提升組織業務績效爲目的系統化方法,常見商業管理教育如EMBA、MBA等均將BPM包含在內。java

  • bpmn(Business Process Model and Notation),業務流程模型和符號。和bpm是兩個不一樣的概念。Activiti使用bmpn標準進行流程建模。是由BPMI(Business Process Management Initiative)開發的一套標準的業務流程建模符號,使用BPMN提供的符號能夠建立業務流程。

springboot整合activiti

其實就是要用activiti裏面的邏輯完成實際中的業務問題,activiti定位是輔助業務系統的。git

項目中activiti包含(後端的流程+自帶的圖形設計器(若是開放用戶不建議使用))

推薦搭配:activiti工做流框架+bpmn-js或VUE版前端 github地址
開發測試的activiti插件 :github

下圖是bpmn-jsspring

springboot整合activiti+bpmn-js或VUE(架構搭建篇)
是否是很友好sql

開始整合(概要)

  • pom引用
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-spring-boot-starter-basic</artifactId>
        <version>5.22.0</version>
    </dependency>
  • application.yml文件配置
    # activiti default configuration
       #在activiti的默認配置中,process-definition-location-prefix 是指定activiti流程描述文件的前綴(即路徑),
       #啓動時,activiti就會去尋找此路徑下的流程描述文件,而且自動部署;suffix 是一個String數組,表示描述文件的默    認後綴名,默認以上兩種。
       activiti:
         database-schema-update: true #是否每次都更新數據庫
         # 自動部署驗證設置:true-開啓(默認)、false-關閉
         check-process-definitions: true # activti是否自動部署
         process-definition-location-prefix: classpath:/processes/
         #process-definition-location-suffixes: .bpmn
         history-level: full
         #db-history-used: true
         db-identity-used: false
  • 建立activiti提供的各類服務 ActivitiConfig
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.activiti.spring.boot.AbstractProcessEngineAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
@Configuration
public class ActitytiSourceConfig extends AbstractProcessEngineAutoConfiguration {
    @Bean(name = "MyDataSource")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource MyDataSource(){
        return DataSourceBuilder.create().build();
    }
    @Bean
    public PlatformTransactionManager transactionManager() {
        return new DataSourceTransactionManager(MyDataSource());
    }
    @Bean
    public SpringProcessEngineConfiguration springProcessEngineConfiguration() {
        SpringProcessEngineConfiguration configuration = new SpringProcessEngineConfiguration();
        //配置數據庫
        configuration.setDataSource(MyDataSource());
        configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
        configuration.setJobExecutorActivate(true);
        configuration.setTransactionManager(transactionManager());
        return configuration;
    }
}
  • 啓動
    成功的標誌是數據庫會自動生成ACT_的表
  • 理解數據庫表名字(翻譯於官方文檔)
    • Activiti 的表都以 ACT_ 開頭。 第二部分是表示表的用途的兩個字母標識。 用途也和服務的 API 對應。
    • ACTRE*: 'RE'表示 repository。 這個前綴的表包含了流程定義和流程靜態資源 (圖片,規則,等等)。
    • ACTRU: 'RU'表示 runtime。 這些運行時的表,包含流程實例,任務,變量,異步任務,等運行中的數據。 * Activiti 只在流程實例執行過程當中保存這些數據, 在流程結束時就會刪除這些記錄。 這樣運行時表能夠一直很小速度很快。
    • ACTID*: 'ID'表示 identity。 這些表包含身份信息,好比用戶,組等等。
    • ACTHI*: 'HI'表示 history。 這些表包含歷史數據,好比歷史流程實例, 變量,任務等等。
    • ACTGE*: general 數據, 用於不一樣場景下。

至此整合完畢。數據庫

簡單說一下activiti項目中的使用流程(斜體是根據本身業務的)

  • 編寫bpmn的流程文件(瞭解bpmn的標準)
  • 經過activiti引擎發佈流程
  • 本身業務準備邏輯
  • 啓動流程
  • 開始任務
  • 流程流轉
  • 結束任務
  • 本身業務結束邏輯

總結:使用流程大概是這樣的,其他部分就是activiti的API使用。後續會更新……後端

相關文章
相關標籤/搜索