activiti 工作流基本使用

Activiti 介绍

Activiti 是一个开源架构的工作流引擎,基于bpmn2.0 标准进行流程定义。其前身是JBPM,Activiti 通过嵌入到业务系统开发中进行使用。

官方是这样介绍 activiti的:

Activiti 是领先的轻量级、以 Java 为中心的开源 BPMN 引擎,支持现实世界的流程自动化需求。Activiti Cloud现在是新一代业务自动化平台,提供一组旨在在分布式基础架构上运行的云原生构建块。

Activiti的服务接口

Activiti 提供了 7 个服务接口,都通过 ProcessEngine 来获取,并且支持链式编程风格:

服务接口说明
RepositoryService提供一系列管理流程部署和流程定义的API。
RuntimeService在流程运行时对流程实例进行管理与控制
TaskService对流程任务进行管理,例如任务提醒、任务完成和创建任务等
IdentityService提供对流程角色数据进行管理的API,这些角色数据包括用户组、用户及它们之间的关系。
ManagementService提供对流程引擎进行管理和维护的服务。
HistoryService对流程的历史数据进行操作,包括查询、删除这些历史数据。
FormService表单服务,管理流程和任务相关的表单

Activiti 实战

该次的目的,主要是完成一个请假流程,请假流程如图所示:

引入依赖

因为5.x版本和7.x版本相差较大,这次分享的是5.x版本,其次因为5.x版本简单点

<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring-boot-starter-basic</artifactId>
    <version>5.23.0</version>
</dependency>

1 2 3 4 5

配置文件

注意两个配置项:database-schema-update、check-process-definitions

数据库表的更新或创建

database-schema-update 设置为TRUE,将会创建所需要的数据库表,首次建议设置为TRUE

生成的数据库表总共有28张,分为了5类

数据表说明
act_ge_ 通用数据表ge是general的缩写
act_hi_ 历史数据表hi是history的缩写,对应HistoryService接口
act_id_ 身份数据表id是identity的缩写,对应IdentityService接口
act_re_ 流程存储表re是repository的缩写,对应RepositoryService接口,存储流程部署和流程定义等静态数据
act_ru_ 运行时数据表ru是runtime的缩写,对应RuntimeService接口和TaskService接口,存储流程实例和用户任务等动态数据

流程的部署

自动部署

check-process-definitions: 设置为true,将会部署process/下所有流程,首次建议设置为TRUE

手动部署

需要自己写代码实现,通过读取资源文件进行部署:

  1. png文件和bpmn文件
  2. 通过 inputstream完成部署
  3. 通过读取zip文件流进行部署
  4. 通过读取bytes进行部署

整体的配置以及说明

  activiti:
    #    flase:       默认值。activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常。(生产环境常用)
    #    true:        activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建。(开发时常用)
    #    create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)。(单元测试常用)
    #    drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)。
    # todo 首次设置为true,将会创建所需要的表
    database-schema-update: false  #数据库更新策略
    # 自动部署验证设置:true-开启(默认)、false-关闭
    # todo 首次设置为true,将会部署process/下所有流程
    check-process-definitions: false
    #    指定activiti流程描述文件的前缀(即路径)
    process-definition-location-prefix: classpath*:process/
    # suffix 是一个String数组,表示描述文件的默认后缀名,默认以上两种。
    # process-definition-location-suffixes:
    # - **.bpmn
    # - **.bpmn20.xml
    #保存历史数据级别设置为full最高级别,便于历史数据的追溯
    #    none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。
    #    activity:级别高于none,保存流程实例与流程行为,其他数据不保存。
    #    audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。
    #    full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。
    history-level: full

idea 使用 BPMN 流程图

下载插件 

命名格式为 xxx.bpmn20.xml 即可在idea查看编辑流程

比较容易混淆的ID

ID说明
processDefinitionId是流程定义Id,在部署完成之后会产生;
processInstanceId是流程实例Id,启动流程的时候生成,可以通过流程定义Id来启动流程实例;
executionId

当流程中没有分支时,Execution等同于ProcessInstance,甚至连ID也相同;

当流程中存在分支(fork, parallel gateway),则在分支口会形成子Execution,在下一个gateway才会合并(joined)

activityId当前运行活动标识ID

学习案例:RuoYi-activiti: 基于Activiti6.0,集流程设计、流程部署、流程执行、任务办理、流程监控于一体的开源工作流开发平台。

 实践案例:

activiti: 自学activiti的demo

swagger路径:

http://localhost.huawei.com:8080/doc.html#/home

postman 调用接口图片返回流展示

postman 验证码 图片返回流 stream 如何展示?_postman stream-CSDN博客

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值