原文转载:https://blog.csdn.net/c1225992531/article/details/81181017
https://blog.csdn.net/Cs_hnu_scw/article/details/79059965
一、管理流程定义
-
涉及的对象及表
对象: ProcessEngine 、RepositoryService、Deployment 、ProcessDefinition
表:
act_re_deployment:部署对象表
act_re_procdef:流程定义表
act_ge_bytearray: 字节资源表
act_ge_property:主键生成策略表,next_dbId 作为部署表的id -
设置流程定义图
* 流程图设计
* bpmn与png文件
- 部署流程定义
* 通过bpmn和png格式加载及部署
* 通过Zip格式加载及部署
* 查看流程定义
* 删除流程定义
* 获取流程定义文档的资源(查看流程图附加)
* 查看最新版本的流程定义
二、流程实例、任务执行
- 涉及的对象及表
Execution 执行对象
按流程定义的规则执行一次的过程.
对应的表:
act_ru_execution: 正在执行的信息
act_hi_procinst:已经执行完的历史流程实例信息
ProcessInstance 流程实例
特指流程从开始到结束的那个最大的执行分支,一个执行的流程中,流程实例只有1个。
注意
(1)如果是单例流程,执行对象ID就是流程实例ID
(2)如果一个流程有分支和聚合,那么执行对象ID和流程实例ID就不相同
(3)一个流程中,流程实例只有1个,执行对象可以存在多个。
Task 任务
执行到某任务环节时生成的任务信息。
对应的表:
act_ru_task:正在执行的任务信息
act_hi_taskinst:已经执行完的历史任务信息
- 启动流程实例
- 查看我的个人任务
- 办理任务(完成任务)
- 查询流程实例状态(判断流程正在执行,还是结束)
- 查询历史任务
- 查看历史流程实例
三、流程变量
涉及到的表
act_ru_variable:正在执行的流程变量表
act_hi_varinst:流程变量历史表
- 流程变量作用
- 传递业务参数(申请人、天数、事件、原因)
- 动态指定办理人
- 指定连接,完成任务(同意或者拒绝)
- 设置简易的bpmn流程图
- 部署流程定义及启动流程实例
- 设置流程变量
- 通过 TaskService 和 RuntimeService 服务设置变量
- Execution 与 ProcessInstance 区别
- Execution:只一个流程实例具体要执行的过程对象
- ProcessInstance:流程实例 ProcessInstance(1)–>Execution(N) ,且N>=1
- 值等情况: act_ru_execution 的id和 proc_inst_id 相同 ,该流程没有子流程
- 值不等情况: 只会出现在子流程中(嵌套、引入),act_ru_execution 的id和 proc_inst_id 不相同,但parent_id 等于当前流程实例的 id 和proc_inst_id
- 比如一个购物流程中除了下单、出库节点,
可能还有一个付款子流程,一般付款流程都是作为公用的流程,当任务达到子流程时,引擎会自动创建一个付款子流程
- setValiable 与 setLocalValiable区别
- 获取流程变量
- 查询历史的流程变量
- 流程变量支持的类型
四、连线
- 设置bpmn流程图
- 部署和执行流程
- 查询和完成任务
- 如何设置条件变量
连线–>main config–>condition
表达式的结果必须是布尔型- #{variable==‘value’}
- ${variable==value}
- 总结
一个活动中可以指定一个或多个SequenceFlow(Start中有一个,End中没有)。
- 开始活动中有一个SequenceFlow 。
- 结束活动中没有SequenceFlow 。
- 其他活动中有1条或多条SequenceFlow
如果只有一个,则可以不使用流程变量设置codition的名称;
五、排他网关(ExclusiveGateWay)
- 设置bpmn流程图
- 部署与执行流程
- 查询和完成任务
- 总结
1.一个排他网关对应一个以上的顺序流
2.由排他网关流出的顺序流都有个conditionExpression元素,在内部维护返回boolean类型的决策结果。
3.决策网关只会返回一条结果。当流程执行到排他网关时,流程引擎会自动检索网关出口,从上到下检索如果发现 第一条决策结果为true或者没有设置条件的(默认为成立),则流出。
4.如果没有任何一个出口符合条件,则抛出异常
5.使用流程变量,设置连线的条件,并按照连线的条件执行工作流,如果没有条件符合的条件,则以默认的连线离开,但是默认的连线不能设置条件
六、用户任务(userTask)
- 个人任务
- 个人分配任务方式1:直接指定
- 个人分配任务方式2:采用流程变量
在bpmn 的 assignee 设置 ${userID}