Leo's blog Leo's blog
首页
  • Java基础

    • JavaSE
    • JVM
    • Spring
  • Java进阶

    • SSM
    • SpringBoot
    • SpringCloud
    • SpringCloud Alibaba
  • 中间件

    • Nginx
    • Redis
    • FastDFS
    • RocketMQ
  • 框架

    • Netty
    • Shiro
    • Activiti
  • 数据库

    • MySQL
    • Oracle
  • 微服务

    • Dubbo
    • Nacos
  • 大叔据

    • ELK
    • Hadoop
  • 工具

    • Jenkins
    • Docker
  • 算法

    • 数据结构与算法
    • 设计模式
  • 计算机科学

    • 计算机网络
    • 操作系统原理
    • Linux
    • 网络安全
  • IDLE

    • IntelliJ IDEA
    • Visual Studio Code
  • 野生技能

    • Git
  • 娱乐

    • 读书
    • 电影
    • 音乐
    • 节目
  • 投资

    • 宏观
    • 周期
    • 加密货币
    • 量化交易
  • 思考

    • 观点
    • 随笔
  • 网站

    • 日常访问
    • 学习资源
  • 博客

    • 推荐博客
    • 友情链接
关于
  • 分类
  • 标签
  • 归档
GitHub

Leo Lee

Use Java with love.
首页
  • Java基础

    • JavaSE
    • JVM
    • Spring
  • Java进阶

    • SSM
    • SpringBoot
    • SpringCloud
    • SpringCloud Alibaba
  • 中间件

    • Nginx
    • Redis
    • FastDFS
    • RocketMQ
  • 框架

    • Netty
    • Shiro
    • Activiti
  • 数据库

    • MySQL
    • Oracle
  • 微服务

    • Dubbo
    • Nacos
  • 大叔据

    • ELK
    • Hadoop
  • 工具

    • Jenkins
    • Docker
  • 算法

    • 数据结构与算法
    • 设计模式
  • 计算机科学

    • 计算机网络
    • 操作系统原理
    • Linux
    • 网络安全
  • IDLE

    • IntelliJ IDEA
    • Visual Studio Code
  • 野生技能

    • Git
  • 娱乐

    • 读书
    • 电影
    • 音乐
    • 节目
  • 投资

    • 宏观
    • 周期
    • 加密货币
    • 量化交易
  • 思考

    • 观点
    • 随笔
  • 网站

    • 日常访问
    • 学习资源
  • 博客

    • 推荐博客
    • 友情链接
关于
  • 分类
  • 标签
  • 归档
GitHub
  • Nginx

  • Redis

  • Activiti

    • Activiti - 最成熟的JAVA工作流框架
      • 1、工作流概念
      • 2、Activiti介绍
        • 1)工作流相关概念
        • 2)为什么需要工作流
        • 3)如何学习工作流
      • 3、Activiti工作流引擎
      • 4、Activiti数据库
        • (1)资源库流程规则表
        • (2)运行时数据库表
        • (3)历史数据库表
        • (4)组织机构表
        • (5)通用数据表
        • (6)全局日志表
      • 5、Activiti接口
      • 1、工作流技术选型
        • 1)jBPM和Activiti的对比
        • 2)为什么选择Activiti6.0
      • 2、部署Activiti6.0环境
        • 1)体验Activiti官网
        • 2)准备环境并部署Activiti6.0
      • 1、SpringBoot集成Activiti7
        • 1)快速生成SpringBoot项目包
        • 2)添加Activiti7相关依赖
        • 3)数据库配置
      • 2、SpringBoot集成Activiti6(推荐)
      • 3、SpringBoot集成Acitiviti在线设计工具
    • Activiti使用手册(1)- 案例与配置
    • Activiti使用手册(2)- Java API
    • Activiti使用手册(3)- 数据库设计
    • Activiti使用手册(4)- Bpmn2规范
  • MySQL

  • Oracle

  • Docker

  • 基础设施
  • Activiti
leee
2020-06-11

Activiti - 最成熟的JAVA工作流框架

# Activiti - 最成熟的JAVA工作流框架

# 一、Activiti(工作流)基础

# 1、工作流概念

工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。

# 2、Activiti介绍

Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。
Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss jBPM的项目架构师,它特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务流程图。

# 1)工作流相关概念

  • 工作流:WorkFlow,是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。
  • 工作流建模:将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型表达并对其实施计算。
  • 工作流解决的问题:为实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。
  • 工作流管理系统:WorkFlow Management System(WfMS),处理工作流的电脑软件系统。
    • 主要功能:通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间、群体成员之间的信息交互。
    • 工作流需要以靠工作流管理系统来实现。
  • 计算机支持的协同工作:Computer Supported Cooperation Work(CSCW),普遍地研究一个群体如何在计算机的帮助下实现协同工作的。
    • 工作流属于计算机支持的协同工作(CSCW)的一部分
  • 工作流管理联盟:WorkFlow Management Coalition(WfMC),工作流技术标准化的工业组织,成立于1993年8月。
    • 工作流管理联盟发布了用于工作流管理系统之间互操作的工作流参考模型,并相继制定了一系列工业标准。

# 2)为什么需要工作流

  • 业务开发的烦恼(现存问题)
    • 产品需求遗留,开发上线后需求经常改
    • 业务代码复杂,版本修改需要尽快迭代上线
    • 老项目二次开发,文档缺失,PM经常让RD刨代码梳理流程
  • 工作流引擎对业务和开发的改变(工作流的好处)
    • 可以快速响应,灵活调整线上流程
    • 业务和开发基于流程模型沟通,基于业务建模快速部署
    • 流程可视化,方便查看流程的运行进展
  • 工作流对团队的作用
    • 提高效率,减少等待
    • 规范行为,落实制度
    • 协同内外,快速响应
    • 监控全面,提升执行

# 3)如何学习工作流

  • 工作流引擎的技术选型(Activiti vs Jbpm)
  • Activiti6.0的快速体验
  • 初步认识BPMN2.0的元素

# 3、Activiti工作流引擎

ProcessEngine对象,这是Activiti工作的核心。
负责生成流程运行时的各种实例及数据、监控和管理流程的运行。

# 4、Activiti数据库

Activiti数据库支持:
Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。

  • ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
  • ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
  • ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。
  • ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
  • ACT_GE_*: 通用数据, 用于不同场景下,如存放资源文件。

表结构

# (1)资源库流程规则表

  1. act_re_deployment 部署信息表
    2) act_re_model   流程设计模型部署表
    3) act_re_procdef   流程定义数据表
    4) act_procdef_info 流程定义信息表

# (2)运行时数据库表

  1. act_ru_execution 运行时流程执行实例表
    2) act_ru_identitylink 运行时流程人员表,主要存储任务节点与参与者的相关信息
    3) act_ru_task 运行时任务节点表
    4) act_ru_variable 运行时流程变量数据表
    (下述是不常用的表)
    5) act_ru_job
    6) act_ru_deadletter_job
    7) act_ru_suspended_job
    8) act_ru_timer_job
    9) act_ru_event_subscr

# (3)历史数据库表

  1. act_hi_actinst 历史节点表
    2) act_hi_attachment 历史附件表
    3) act_hi_comment 历史意见表
    4) act_hi_identitylink 历史流程人员表
    5) act_hi_detail 历史详情表,提供历史变量的查询
    6) act_hi_procinst 历史流程实例表
    7) act_hi_taskinst 历史任务实例表
    8) act_hi_varinst 历史变量表

# (4)组织机构表

  1. act_id_group 用户组信息表
    2) act_id_info 用户扩展信息表
    3) act_id_membership 用户与用户组对应信息表
    4) act_id_user 用户信息表

    这四张表很常见,基本的组织机构管理,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足

# (5)通用数据表

  1. act_ge_bytearray 二进制数据表
    2) act_ge_property 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录

# (6)全局日志表

1)act_evt_log 日志记录表

# 5、Activiti接口

7大接口

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

# 二、Activiti(工作流)简单体验

# 1、工作流技术选型

  • Activiti
  • Flowable
  • jBPM
  • BPMN2.0
  • ccflow
  • Snaker

# 1)jBPM和Activiti的对比

image.png

# 2)为什么选择Activiti6.0

  • 老牌、成熟、稳定、满足BPMN2.0规范
  • 用户众多,社区活跃,趋势良好
  • 易于上手,基于Spring、MyBatis等常用互联网技术栈

# 2、部署Activiti6.0环境

# 1)体验Activiti官网

Activiti官网 地址:https://www.activiti.org/

# 2)准备环境并部署Activiti6.0

  • 物料
    • Activiti软件包,activiti-6.0.0.zip
    • Java环境,JDK 1.8.0_161
    • Servlet容器 apache-tomcat-8.0.50.zip
  • 运行Activiti War
  • 登陆localhost:8080/activiti-app
    • 用户名/密码:admin/test
  • 进入activiti-app,进行相关操作

# 三、SpringBoot2 集成 Activiti

# 1、SpringBoot集成Activiti7

官方文档:https://activiti.gitbook.io/activiti-7-developers-guide/getting-started/getting-started-activiti-core
_注意:_官方当前Activiti7版本为 7.1.0.M5,经验证,此版本在SpringBoot 2.1.x运行稳定,并且本人不建议将SpringBoot升级到 2.2.x。

# 1)快速生成SpringBoot项目包

访问连接:https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.1.11.RELEASE&packaging=jar&jvmVersion=1.8&groupId=xyz.pip4&artifactId=activiti7&name=activiti7&description=Demo%20project%20for%20Spring%20Boot&packageName=xyz.pip4.activiti7&dependencies=configuration-processor,web,lombok,thymeleaf,data-jpa

# 2)添加Activiti7相关依赖

①Activiti7 - SpringBoot2核心依赖

<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>
1
2
3
4
5
6
7
8

②Activiti7 Core 版本依赖

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.activiti.dependencies</groupId>
            <artifactId>activiti-dependencies</artifactId>
            <version>7.1.0.M5</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>
1
2
3
4
5
6
7
8
9
10
11

③Activiti7 官方repo

  <repositories>
    <repository>
      <id>alfresco</id>
      <name>Activiti Releases</name>
      <url>https://artifacts.alfresco.com/nexus/content/repositories/activiti-releases/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
    </repository>
  </repositories>
1
2
3
4
5
6
7
8
9
10

# 3)数据库配置

create schema activiti7 default character set utf8 collate utf8_general_ci;

GRANT ALL ON activiti7.* TO 'cat'@'%';

flush  privileges;
1
2
3
4
5

# 2、SpringBoot集成Activiti6(推荐)

# 3、SpringBoot集成Acitiviti在线设计工具

(基于Activiti 5.22 中的 Activiti Modeler)

# 四、Activiti案例与配置

参考:Activiti使用手册(1)- 案例与配置 ,https://www.yuque.com/leee/spring-boot/activiti-config 。

# 五、Activiti Java API

参考:Activiti使用手册(2)- Java API ,https://www.yuque.com/leee/spring-boot/activiti-api

# 六、Activiti 数据库设计

参考:Activiti使用手册(3)- 数据库设计 ,https://www.yuque.com/leee/spring-boot/activiti-database

# 七、Bpmn2.0 流程定义规范

参考:Activiti使用手册(4)- Bpmn2.0规范 ,https://www.yuque.com/leee/spring-boot/activiti-bpmn20

# 八、Activiti6 + SpringBoot2 实战

参考资料

  1. activiti(工作流)初步学习记录 ,博客园
  2. Activiti6详细教程 ,CSDN,ZhaoYingChao88
  3. Activit-7-developers-guide ,Activiti
  4. Acitiviti核心API ,简书
编辑
#Activiti #Workflow
上次更新: 2020/06/11, 15:06:00
Redis 安装
Activiti使用手册(1)- 案例与配置

← Redis 安装 Activiti使用手册(1)- 案例与配置 →

最近更新
01
Activiti使用手册(4)- Bpmn2规范
06-11
02
linux手动RPM安装gcc,g++
06-11
03
config - 通过@ConfigurationProperties读取yml配置
06-11
更多文章>
Theme by Vdoing | Copyright © 2020-2020 Leo Lee | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式