外观
节点人员相关插件
简介
在流程设计中可以通过节点人员相关插件很方便的为节点设置候选人。人员插件有以下几种:
- 表单人员插件
- 相对岗位插件
- 业务权责矩阵人员
- 流程历史审批人
- 相同节点执行人
- 人员脚本
- 组选择
- 用户选择
配置
- 类型,配置
人员配置选择类型支持,表单人员,相对岗位,业务权责矩阵,流程历史审批人,相同节点执行人,人员脚本,组选择。用户选择
- 定位到用户
【抽取】则在任务创建的时候直接获取该组下的所有用户,人员分配后,如果组织内人员发生变化、该任务候选人不会发生改变
【不抽取】不会具体到人,组内人员变化不会受影响
- 人员条件
人员条件为Groovy脚本,可以使用 流程插件变量, return false; 则将返回空的候选人。
- 运算配置
人员设置支持,用户、组、脚本等设置形式,可以添加多条人员设置,多条人员配置可以进行 “与”、“或”、“排除” 运算 运算形式均是与前一列运算结果进行运算
如: 配置三条人员设置
1:用户A、用户B、用户C
2:用户B、用户C; 运算类型 【与】
3:用户C;运算类型【排除】
第二条与第一条进行 “与” 运算 结果为 :用户B、用户C
第三条与之前结果进行 “排除” 所以运算最终结果为:用户B
INFO
抽取、不抽取还会影响人员运算,如角色“财务”下有用户A,那么“财务”与“用户A” 进行 “与运算” 抽取时结果为 用户A,不抽取结果为空
表单人员插件
表单人员插件顾名思义就是利用表单中的人员作为流程节点的候选人 ,用于直接从表单中取出当前节点任务候选人。
使用步骤
1、首先选择一个表单字段,作为取值的目标字段,支持逗号分隔,若为子表,则取出子表该字段所有记录的字段值。
2、然后指定字段的人员类型,如:用户id、用户账户、组织id、岗位ID。
然后会根据所选表单字段以及人员类型解析具体任务候选人,赋值给当前任务
相对岗位插件
通过发起人,上一步执行人,表单人员作为相对值,查找与他们相关联的岗位用户作为任务候选人。
配置步骤:
- 指定一个相对岗位的组织
发起人所在组织: 使用发起人的当前组织作为相对计算值,即取值自 bpmInstance.createOrgId
上一步任务处理着所在组织: 使用上一步任务提交者的当前组织作为相对计算值,即取值自 ContextUtil.getCurrnetOrgId()
表单中某个组织id的字段: 使用表单中的组织id字段作为相对计算值,若逗号分隔则以多个组织来计算
- 指定相对关系
所在组织: 即相对组织的当前组织
上一级: 即相对组织的上一级,以组织树向上查找。
上级中指定类型的组织: 根据组织树向上查找,匹配设置的组织类型(公司、部门、班组),当第一个满足匹配后停止向上查找
上级中指定级别的组织: 根据组织树向上查找,比如上两级,则查找当前组织的上级的上级。如果级别太高可能导致匹配失败,请根据组织约定合理设置。
下一级: 即相对组织的下一级,以组织树向下查找。
注
下中指定类型的组织:根据组织树向下查找,匹配设置的组织类型(公司、部门、班组),由于组织是树形,所以大概率会匹配多个组织,如集团下指定查找分公司类型组织,那么会定位到集团所有分公司组织。
- 指定岗位角色
当通过相对岗位定位到具体组织后,可以通过职务角色过滤出所需要的具体岗位的人
业务权责矩阵人员插件
业务矩阵支持对某一业务指定负责人(审批人),进行权责的划分,根据业务负责人去配置选节点候选人。 详情请参考 业务权责矩阵插件
流程历史审批人
使用流程审批历史中所有参与过的人员作为任务候选人,若当前节点开启了会签,则所有人参与会签
相同节点执行人
使用指定节点历史执行人作为当前节点的任务候选人。
用在某些特殊业务场景,比如某两个节点需要相同的人审批时
人员脚本
人员脚本为Groovy
脚本,可以使用 流程插件变量,脚本必须返回 Set<SysIdentity> identityList
类型的集合
通常用来实现复杂业务需求如:
- 获取排班表的人员作为候选人
- 调用排班服务接口
- 获取当前处理者的上级作为下一步任务候选人
如:获取当前处理人上级的部门负责人。请自行控制当前组织为空,或者父组织不存在的场景
java
import com.dstz.base.common.utils.UserContextUtils;
import com.dstz.org.api.model.IGroup;
String parentGroupId = null;
IGroup iGroup =UserContextUtils.getGroup();
if (iGroup!= null) {
parentGroupId = iGroup.getParentId();
}
return orgScript.getSisByGroupAndRole(parentGroupId,"部门负责人角色CODE");
获取当前处理者所在部门的 部门经理,或者指定岗位人员作为候选人
java
return orgScript.getSisByGroupAndRole(null,"部门负责人角色CODE"); //若为null 默认取当前部门
组选择
选择组类型并选择一个具体的组,如:角色、岗位、组织
如果人员定位设置为【抽取】,则在任务创建的时候直接获取该组下的所有用户,人员分配后,如果组织内人员发生变化、该任务候选人不会发生改变
如果人员定位设置为【 不抽取】,那么任务候选人为 该组,不会具体到人,组内人员变化不会受影响
人员选择
通过人员选择器,选择一个指定的用户