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

2021-01-25 13:13

阅读:730

标签:实例   开头   context   activate   com   evel   自己   model   理念   

简洁明了的介绍下不用太多篇幅

activiti介绍

Activiti是一个工作流引擎,activiti可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言(BPMN2.0)进行定义,业务系统按照预先定义的流程进行执行,实现了业务系统的业务流程由activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系统的健壮性,同时也减少了系统开发维护成本。

BPM介绍

  • Bpm(Business Process Management),业务流程管理,是一种理念,以持续的提高组织业务绩效为目的系统化方法,常见商业管理教育如EMBA、MBA等均将BPM包含在内。

  • bpmn(Business Process Model and Notation),业务流程模型和符号。和bpm是两个不同的概念。Activiti使用bmpn标准进行流程建模。是由BPMI(Business Process Management Initiative)开发的一套标准的业务流程建模符号,使用BPMN提供的符号可以创建业务流程。

springboot整合activiti

其实就是要用activiti里面的逻辑完成实际中的业务问题,activiti定位是辅助业务系统的。

项目中activiti包含(后端的流程+自带的图形设计器(如果开放用户不建议使用))

推荐搭配:activiti工作流框架+bpmn-js或VUE版前端 github地址
开发测试的activiti插件 :

  • eclipse->help->install new software->name(Activiti BPMN designer),Location(http://www.activiti.org/designer/update) 安装即可
  • idea->file->setting->plugins->actibpm(编码有问题)

下图是bpmn-js

技术图片
是不是很友好

开始整合(概要)

  • pom引用
    org.activiti
        activiti-spring-boot-starter-basic
        5.22.0
  • 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使用。后续会更新……

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

标签:实例   开头   context   activate   com   evel   自己   model   理念   

原文地址:https://blog.51cto.com/4534309/2493714


评论


亲,登录后才可以留言!