Tasks
User Task:用户任务用于建模需要由人工参与者完成的工作。当流程执行到达此类用户任务时,将在分配给该任务的用户或组的任务列表中创建新任务。
Service Task
流转到服务任务(serviceTask)节点时会自动执行某些操作然后向下流转
排他网关-ExclusiveGateway
排他网关,流程中实现是否执行的决策。
逻辑:
当流程执行到这个网关,所有分支都会进行条件判断,如果判断为true则执行该分支。
注意:
经过排他网关时必须有一条且只有一条分支走
若排他网关中有多个条件同时满足,则走id最小的那个条件
并行网关-ParallelGeteway
并行的意思是都会进入 比如都会进入ReceivePayment 和Ship order分支
并行网关可将流程分成多条分支,也可以把多条分支汇聚到一起。
逻辑:
并行网关是基于进入和外出顺序流:
fork流出:
并行后的所有外出顺序流,为每个顺序流都创建一个并发分支。
join注入:
所有到达并行网关,在此等待的进入分支, 直到所有进入顺序流的分支都到达后,流程才会通过汇聚网关。
注意:
并行网关不会解析条件,即使定义了条件,也会被忽略
包含网关-InclusiveGateway
包含的意思是可以选择多条分支进入
排他网关和并行网关的结合体。
逻辑:
包含网关的功能是基于进入和外出顺序流的:
分支:
所有外出顺序流都会被进行判断,结果为true的顺序流以并行方式继续执行, 并且会为每个顺序流创建一个分支。
汇聚:
在汇聚时,包含网关只会等待被选中执行了的进入顺序流。 在汇聚之后,流程会穿过包含网关继续执行。
事件网关-EventGateway
基于事件网关允许根据事件判断流向。网关的每个外出顺序流都要连接到一个中间捕获事件。
逻辑:
当流程到达一个基于事件网关,网关会进入等待状态;会为每个外出顺序流创建相对的事件订阅。注意基于事件网关的外出顺序流和普通顺序流不同。这些顺序流不会真的"执行"。 相反,它们让流程引擎去决定执行到基于事件网关的流程需要订阅哪些事件。
注意:
基于事件网关必须有两条或以上外出顺序流。
基于事件网关后,只能使用intermediateCatchEvent类型。 (activiti不支持基于事件网关后连接ReceiveTask。)
连接到基于事件网关的intermediateCatchEvent只能有一条进入顺序流。
activity工作流表
-- 部署流程用到的表
select * from act_re_deployment; -- 部署信息表
select * from act_re_model ; -- 流程设计模型部署表
select * from act_re_procdef ; -- 流程定义数据表
-- 启动流程用到的表
select * from act_ru_execution; -- 运行时流程执行实例表
select * from act_ru_identitylink; -- 运行时人员表,主要存储任务节点与参与者的相关信息
select * from act_ru_task; -- 运行时任务节点表
select * from act_ru_variable; -- 运行时流程变量数据表
-- 历史数据库表
select * from act_hi_actinst; -- 历史节点表(启动流程有值)
select * from act_hi_attachment; -- 历史附件表
select * from act_hi_comment; -- 历史意见表
select * from act_hi_identitylink; -- 历史流程人员表(启动流程有值)
select * from act_hi_detail; -- 历史详情表,提供历史变量的查询
select * from act_hi_procinst; -- 历史流程实例表(启动流程有值)
select * from act_hi_taskinst; -- 历史任务实例表(启动流程有值)
select * from act_hi_varinst; -- 历史变量表
-- 组织机构表
select * from act_id_group; -- 用户组信息表
select * from act_id_info; -- 用户拓展信息表
select * from act_id_membership; -- 用户与用户组对应信息表
select * from act_id_user; -- 用户信息表
-- 一般数据表
select * from act_ge_bytearray; -- 二进制数据表
select * from act_ge_property; -- 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录,
核心API
1,ProcessEngine
说明:Activiti中最核心的类,其他的类都是由他而来。
//用法
ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine();//例如:生成RepositoryService(管理流程定义 )
RepositoryService
repositoryService=processEngine.getRepositoryService();//例如:生成RuntimeService (执行管理,包括启动,推进,删除流程实例 等操作)
RuntimeService
runtimeService=processEngine.getRuntimeService();//例如:生成TaskService(任务管理)
TaskService
taskService=processEngine.getTaskService();
2,RepositoryService
说明:Activiti的仓库服务类。所谓的仓库指流程定义文档的两个文件:bpmn文件和流程图片 该service可以用来删除部署的流程定义
3,RuntimeService
说明:Activiti的流程执行服务类,可以从这个服务类中获取很多关于流程执行的相关的信息。
4,TaskService
说明:是Activiti的任务服务类。可以从这个类中获取任务的相关信息,如当前正在执行的个人待办和用户组待办任务。
5,HistoryService
说明:Activiti的查询历史信息的类,在一个流程执行完成后,这个对象为我们提供查询历史信息,可以跟踪流程实例对应所有待办节点的运行情况。
6,ProcessDefinition
说明:流程定义类,可以从这里获得资源文件等。
7,ProcessInstance
说明:代表流程定义的执行实例,当一个部署的流程图启动后,该流程只有一条流程实例数据,但是它的流程任务可以有多个,
每个任务对应流程图中相应的流程节点。
流程变量
流程变量的使用场景是什么
给assignee赋值(${holiday.applyName} 、 ${holiday.managerName})
给分支条件赋值,当满足某个分支条件后,流转到对应的分支。
使用方式就是通过占位符。${holiday.num > 3} 、 ${holiday.num <= 3}
流程变量支持的数据类型
- string
- integer
- short
- long
- double
- boolean
- date
- binary
- serializable