OpenAuth.Net/docs/core/flowinstance.md

112 lines
4.2 KiB
Markdown
Raw Normal View History

2024-04-17 11:34:59 +08:00
# 概念
## 会签
2024-04-17 14:05:58 +08:00
会签又称为联名签署,指需要得到两个或多个相关参与者的签名批准。目前支持两种模式:全部通过和至少一个通过,在【会签开始】节点进行配置。如下:
2024-04-17 11:34:59 +08:00
![20240417112438](http://img.openauth.net.cn/20240417112438.png)
全部通过:会签中的所有人员都通过,节点审批通过。
至少一个通过:会签中任何一个人通过,节点即审批通过。
2024-10-22 15:46:13 +08:00
具体的会签人员或角色需要在【会签开始】和【会签结束】之间的节点配置如上图中的admin、test。
2024-06-24 10:14:31 +08:00
2024-04-17 11:34:59 +08:00
::: warning 特别注意
2024-06-24 10:14:31 +08:00
【会签开始】【会签结束】执行权限配置为所有人
2024-04-17 11:34:59 +08:00
会签不能在分支上加判断条件
:::
2024-10-22 15:46:13 +08:00
## 加签
有时需要在原有审批流程中**临时**增加一个或多个审批节点,这时就需要用到加签的功能。它通常有以下特性:
* 临时性:加签是在流程执行过程中临时增加的,并非流程设计时就已经固定的审批节点。
* 发起主体:加签通常由当前审批人发起,他们认为需要额外的人员进行审核或批准。
* 新增审批节点:加签会在当前审批节点之后,插入一个或多个新的审批节点,这些节点需要审批通过后,原流程才能继续执行。
* 不改变流程结构:加签不会改变原有流程的整体逻辑或终点,只是插入临时节点,完成后流程继续按原定路径执行。
#### 与会签的区别:
* 加签:在已有审批流程上临时添加审批人,原审批人仍有审批权。
* 会签:多个审批人同时审批,所有会签人均需审批,才能通过节点。
加签功能常用在遇到不明确的情况时,需要其他人协助处理。
![2024-10-22-15-24-08](http://img.openauth.net.cn/2024-10-22-15-24-08.png)
2024-04-17 14:05:58 +08:00
## 条件分支
有时需要根据提交数据不同(如报销金额、请假天数等)流程转向不同的审批者。这时需要在连线上面配置分支条件,如下图:
![20240417114340](http://img.openauth.net.cn/20240417114340.png)
2024-10-22 15:46:13 +08:00
## 知会
知会指的是在流程执行过程中,将审批结果通知给指定人员,但这些人员不参与实际审批或决策过程。知会的目的是确保相关人员知晓流程的进展或结果,但他们不会影响流程的走向。如下图:
![2024-10-22-15-42-49](http://img.openauth.net.cn/2024-10-22-15-42-49.png)
2023-08-11 17:47:02 +08:00
# 基本操作
一个完整的工作流包括流程设计及流程实例处理。分别对应系统中【基础配置/流程设计】及【流程中心】两个板块。具体包含以下几个步骤:
1. 在【基础配置/表单设计】中添加一个用于流程的表单开源版可使用动态表单企业版支持拖动表单及自定义的vue组件表单
1. 在【基础配置/流程设计】中添加一个流程模版,流程模版选择刚刚建的表单。建好流程模版,拥有该模版权限的用户就可以基于改模版创建流程实例了;
1. 在【流程中心/我的流程】中【新的申请】创建一个流程实例。创建成功后就可以在列表中看到该流程。流程节点对应的执行用户会在【流程中心/待处理流程】中看到该流程,选中需要审批的流程,点击【处理】按钮即可进行审批操作;
# 流程审批逻辑
当最终用户在【待处理流程】中审批一个流程实例时,流程实例会经过下面步骤进行处理:
@startuml
skinparam handwritten true
skinparam backgroundColor #EEEBDC
start
if (当前活动节点类型为会签) then (yes)
:标识当前节点状态;
:从所有的分支中找到一个用户可以审批的节点canCheckId;
if (没找到?) then (yes)
stop
endif
:标识canCheckId节点状态;
#HotPink:进行会签,结果为res;
if(res == TagState.No) then (yes)
:修改流程最终状态为不同意;
else if(res != string.Empty) then (yes)
stop
else (no)
:修改流程最终状态,修改活动节点,修改可执行人;
:添加扭转记录;
endif
else (no)
:标识当前节点状态;
if (同意) then (yes)
:修改流程最终状态,修改活动节点,修改可执行人;
:添加扭转记录;
else
:修改流程最终状态为不同意;
endif
:操作记录;
endif
stop
@enduml