Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度。
工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。

介绍

  1. 工作流引擎

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

  1. BPMN

业务流程建模与标注(Business Process Model and Notation,BPMN) ,描述流程的基本符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram)

  1. 数据库

activiti所有的表都以ACT_开头,第二部分是表示表用途的两个字母标识


  1. 核心API

    1. ProcessEngine
      1. 说明:Activiti的最核心的类,所有其他类由他而来
      2. 产生方式:两种
      3. 可以产生 RepositoryService:管理流程定义
      4. 可以产生 RuntimeService:执行管理,包括启动、推进、删除流程实例等操作
      5. 可以产生 TaskService:任务管理
      6. HistoryService 历史管理(执行完的数据的管理)
      7. IdentityService 组织机构管理
      8. FormService 一个可选服务,任务表单管理
      9. ManagerService


    2. 核心组件介绍

      关键对象

  2. Deployment:流程部署对象,部署一个流程时创建

  3. ProcessDefinitions:流程定义,部署成功后自动创建
  4. ProcessInstances:流程实例,启动流程时创建
  5. Task:任务,在activiti中的task指有角色参与的任务,即定义中的userTask
  6. Execution:执行计划,流程实例和流程执行中的所有节点都是Exetution,如UserTask、ServiceTask等

服务接口

  1. ProcessEngine:流程引擎的抽象,通过它可以获得我们需要的一切服务
  2. RepositoryService:管理流程定义,提供了对repository的存取服务
  3. RuntimeService:执行管理,包括启动、推进、删除流程实例等操
  4. TaskService:任务管理
  5. IdentityService :用户和组的管理
  6. ManagementService:用于系统的日常维护
  7. HistoryService:获取正在运行或已经完成的流程实例的信息
  1. ProcessEngine:流程引擎的抽象,通过它我们可以获得我们需要的一切服务。
    2. RepositoryService:Activiti中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据(例如BPMN2.0 XML文件,表单定义文件,流程定义图像文件等),这些文件都存储在Activiti内建的Repository中。RepositoryService提供了对 repository的存取服务。
    3. RuntimeService:在Activiti中,每当一个流程定义被启动一次之后,都会生成一个相应的流程对象实例。RuntimeService提供了启动流程、查询流程实例、设置获取流程实例变量等功能。此外它还提供了对流程部署,流程定义和流程实例的存取服务。
    4. TaskService: 在Activiti中业务流程定义中的每一个执行节点被称为一个Task,对流程中的数据存取,状态变更等操作均需要在Task中完成。TaskService提供了对用户Task 和Form相关的操作。它提供了运行时任务查询、领取、完成、删除以及变量设置等功能。
    5. IdentityService: Activiti中内置了用户以及组管理的功能,必须使用这些用户和组的信息才能获取到相应的Task。IdentityService提供了对Activiti 系统中的用户和组的管理功能。
    6. ManagementService: ManagementService提供了对Activiti流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于Activiti系统的日常维护。
    7. HistoryService: HistoryService用于获取正在运行或已经完成的流程实例的信息,与RuntimeService中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化。
    现在至少要知道有这些对象和接口。并结合Activiti Api这一章节来看,你就会对部署流程、启动流程、执行任务等操作有一个基本的概念。之后编写一个简单的单元测试,主要为了测试activiti.cfg.xml配置的是否正确,流程是否可以被部署即可。
    至于与Spring的集成,一定要熟悉基于Spring配置Activiti,以及事务的处理。

    流程任务

数据库设计

命名规则

Activiti 使用到的表都是 ACT 开头的。表名的第二部分用两个字母表明表的用途。
ACT_GE
(GE) 表示 general 全局通用数据及设置,各种情况都使用的数据。
ACTHI (HI) 表示 history 历史数据表,包含着程执行的历史相关数据,如结束的流程实例,变量,任务,等等
ACTRE (RE) 表示 repository 存储,包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。
ACTRU (RU) 表示 runtime 运行时,运行时的流程变量,用户任务,变量,职责(job)等运行时的数据。Activiti 只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就保证了这些运行时的表小且快。

数据表详情

全局通用数据 (ACTGE*)

表名 解释
ACT_GE_BYTEARRAY 二进制数据表,存储通用的流程定义和流程资源。
ACT_GE_PROPERTY 系统相关属性,属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录。

历史数据表(ACTHI*)

表名 解释
ACT_HI_ACTINST 历史节点表
ACT_HI_ATTACHMENT 历史附件表
ACT_HI_COMMENT 历史意见表
ACT_HI_DETAIL 历史详情表,提供历史变量的查询
ACT_HI_IDENTITYLINK 历史流程人员表
ACT_HI_PROCINST 历史流程实例表
ACT_HI_TASKINST 历史任务实例表
ACT_HI_VARINST 历史变量表

静态信息表 (ACTRE*)

表名 解释
ACT_RE_DEPLOYMENT 部署信息表
ACT_RE_MODEL 流程设计模型部署表
ACT_RE_PROCDEF 流程定义数据表

运行数据 (ACTRU*)

表名 解释
ACT_RU_DEADLETTER_JOB 无法执行工作表: 如果一个任务执行了很多次,都无法执行,那么这个任务会写到
ACT_RU_EVENT_SUBSCR 运行时事件 throwEvent、catchEvent 时间监听信息表
ACT_RU_EXECUTION 运行时流程执行实例
ACT_RU_IDENTITYLINK 运行时流程人员表,主要存储任务节点与参与者的相关信息
ACT_RU_INTEGRATION 运行时积分表
ACT_RU_JOB 运行时定时任务数据表
ACT_RU_SUSPENDED_JOB 暂停的工作,流程中有一个定时任务,如果把这个任务停止工作了,这个任务会在act_ru_suspended_job中写入数据
ACT_RU_TASK 运行时任务节点表
ACT_RU_TIMER_JOB 运行时定时器作业表
ACT_RU_VARIABLE 运行时流程变量数据表

其它表

表名 解释
ACT_EVT_LOG 事件日志
ACT_PROCDEF_INFO 流程定义的动态变更信息

部署流程定义的方法有很多种,包括:
1 classpath方式:addClasspathResource() 2 InputStream方式:addInputStream() 3 字符串方式:addString() 4 zip/bar方式:addZipInputStream()

注意两个区别

  • @PathVariable是获取url上数据的。
  • @RequestParam获取请求参数的(包括post表单提交)

通用数据表
流程存储数据表
身份数据表
运行时数据表
历史数据表
DMNP规则引擎数据表

1. 通用数据表(ACT_GE)

用于存放一些通用的数据
通用数据表有两个
资源表(ACT_GE_BYTEARRAY)
用于保存与流程引擎相关的资源,只要调用了activiti存储服务的API,涉及的资源均会转换为byte数组保存到这个表中
字符串、流程文件的内容、流程图片内容等
属性表(ACT_GE_PROPERTY)
activiti将全部属性抽象为key-value对,该表用于保存这些属性

2. 流程存储数据表(ACT_RE)

部署数据表(ACT_RE_DEPLOYMENT)
用于保存部署信息
流程定义表(ACT_RE_PROCDEF)
保存流程定义数据(流程文件的解析内容)
流程设计模型表(ACT_RE_MODEL)
创建流程的设计模型时,保存在该数据表中

3. 身份数据表(ACT_ID)

身份数据模块可以独立于流程引擎而存在
用户表(ACT_ID_USER)
用于保存流程引擎用户的信息
用户账号(信息)表(ACT_ID_INFO)

用户组表(ACT_ID_GROUP)
用于保存用户组的数据

关系表(ACT_ID_MEMBERSHIP)
一个用户组下有多个用户,一个用户可以属于不同的用户组,这种多对多的关系,就使用关系表来进行描述

4. 运行时数据表

流程实例(执行流)表

流程任务表

流程参数表

流程与身份关系表

工作数据表

事件描述表

5. 历史数据表

6. DMNP规则引擎数据表