壹 基本概念
一、任务类型
1、user task 强制必须用户(人)处理
2、java service task 调用一个java delegate的代码
3、web service 调用rest接口
4、manual 代表线下业务,比如打包货物,引擎不做任何处理
5、receive task:等待runtimeService.signal 来触发的任务
6、multiInstanceLoopCharacteristics 不确定数目的多个实例,一定会给相关的人同时发送任务(都是平级的),而不是一般意义上的上下级审批。使用场景:不确定人数的会签、投票
二、assignee VS owner(委派时很有用)
assignee:办理人 使用claim:签收,改变办理人
owner:拥有人,只有拥有人才能complete一个任务,拥有者确定办理者
CandidateUser:候选人,潜在的可以成为asignee的人,可以自己进行任务签收
参与人:仅仅能查看和评论
三、委派和改派:
委派:领导把任务分给小弟,小弟处理完之后,由领导完成任务(claim VS complete delegate VS resolve)
改派:直接扔给别人,别人可以完成这个任务,(先claim null,再claim新人)
委派(delegate)的逻辑:设置owner为自己,更新状态为PENDING,设置新的办理人assignee
resolveTask:办理人自己办理完了,更改状态为RESOLVED,owner可以complete了
会签(多实例任务):在流程业务管理中,任务是通常都是由一个人去处理的,而多个人同时处理一个任务,这种任务我们称之为会签任务。
会签的种类
a) 按数量通过:达到一定数量的通过表决后,会签通过。
b) 按比例通过:达到一定比例的通过表决后,会签通过。
c) 一票否决:只要有一个表决时否定的,会签通过。
d) 一票通过:只要有一个表决通过的,会签通过。
加签:动态增加节点
四、task execution instance job
task:当前任务
execution:一个执行的分支
instance:多个分支构成的整体
job:一般指长时间在后台运行的作业,比如定时作业。一个job可能会触发多个流程实例。
贰 流程驱动机制(pvm)
一、工作流基本步骤
1、创建bpmn格式的xml文件
2、把bpmn部署到engine上,部署的内部逻辑是把 BpmnModelInstance转变成ProcessDefinition
3、启动流程实例
4、engine调度每个activity(task)依次执行,需要实现bpmn中userTask、网关、事件等语义
二、pvm :process virtual machine
pvm:解释ProcessDefinition,实现bpmn的语义
1、入口:PvmExecutionImpl.start
2、ActivityBehavior 为每个activity提供语义,类似于jvm对每个虚拟机指令的解释