Activiti
简介
- 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。
工作流管理系统(Workflow Management System, WfMS)是一个软件系统,它完成工作量的定义和管理,并按照在系统中预先定义好的工作流逻辑进行工作流实例的执行。工作流管理系统不是企业的业务系统,而是为企业的业务系统的运行提供了一个软件的支撑环境。- 常见的工作流框架
Activity5.13、JBPM4.4、OSWorkFlow、WorkFlow
工作流框架底层需要有数据库提供支持,activiti5.13版本,有23张表。JBPM4.4框架底层有数据库支持,18张表。JBPM底层使用hibernate操作数据库。Activiti框架底层使用的mybatis操作数据库。- 安装插件
解压安装包,复制到eclipse中的dropins目录中- 初始化表结构
- 使用activiti框架提供的建表语句
- 使用activiti框架的自动建表功能
不使用配置文件(不推荐使用)
使用配置文件 要求配置文件名称必须为activiti-context.xml或者activiti.cfg.xml
- 可以进一步简化
- 了解23张表
Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。
- ACT_RE_*: ‘RE’表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
- ACT_RU_*: ‘RU’表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
- ACT_ID_*: ‘ID’表示identity。 这些表包含身份信息,比如用户,组等等。
- ACT_HI_*: ‘HI’表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
- ACT_GE_*: 通用数据, 用于不同场景下。
使用框架提供的API完成流程操作
- 部署流程定义
- 查询部署表
- 查询流程定义列表
- 删除部署信息(删除流程定义依赖删除部署信息)
- 查询一次部署对应的流程定义文件名称和对应的输入流(bmpn png)
只获取图片文件:
- 启动流程实例
根据一个流程定义具体的一次执行过程就是一个流程实例,一个流程定义对应多个流程实例(一对多关系)
ByKey启动流程(推荐使用。因为他会选择最新版的)
- 查询流程实例列表
结束流程实例
查询个人任务列表
- 办理任务
- 直接把任务向下执行一步
- 查询最新版本的流程定义列表
- 查询历史数据查询
- Activiti框架提供的Service对象
RepositoryService—-操作静态的资源(流程定义,bpmn、png)
RuntimeService—–操作流程实例(启动流程实例、查询流程实例、结束流程实例)
TaskService—–操作任务(查询任务、办理任务)
HistoryService—-操作历史数据- Activiti框架提供的对象(和表有对应关系)
Deployment—–act_re_deployment
ProcessDefinition—-act_re_procdef
ProcessInstance—–act_ru_execution
Task—–act_ru_task
流程变量
Jdk中提供的数据类型(String、Integer、List 、Map…)
自定义的实体类(要求实现序列化接口)
设置流程变量
- 在启动流程实例时设置
- 在办理任务时设置
- 使用RuntimeService的方法设置
- 使用TaskService的方法设置
获取流程变量
- 使用RuntimeService的方法获取
- 使用TaskService的方法
任务的类型
- 个人任务
由某一个负责办理,在任务表中通过assignee字段记录- 公共任务(组任务)
- 接收任务
接收任务不是由某个人负责办理,通过signal方法让流程执行的
监听器(执行、任务)
- 执行监听器
第一步:按照框架的规则编写监听器类
第二步:设计流程图,注册监听器类
第三步:启动流程实例,Activiti框架通过反射调用监听器类- 任务监听器
第一步:按照activiti框架的规则编写一个任务监听器类
第二步:注册监听类
第三步:办理任务,由框架通过反射调用监听器类
网关(并行、排他)
- 排他网关
第一步:设计流程图,使用排他网关
第二步:执行流程,由框架根据设置的流程变量选择执行其中的一个分支- 并行网关