`
eric_weitm
  • 浏览: 235075 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

camunda 源代码解析(一)

阅读更多

壹 基本概念

一、任务类型

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对每个虚拟机指令的解释

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics