# 动态并行
# 概念
并行:在业务需求规则中,已知多个固定用户或部门进行同时对表单查看或操作
动态并行:根据特定条件或表单数据变量,计算出任意多个用户或部门进行同时对表单查看或操作
# 基础篇
# 需求场景
- 申请人发起,添加指定成员,成员各自完成本人部分数据填写并提交
- 使用groupMember重复节进行动态处理,无需messenger干预处理
# 开发要点
- 成员自行填写部分数据应在groupMember重复节中做相互隔离
- 并行节点使用动态分支绑定groupMember
- 并行节点步骤 设置 “扩展显示名”
- “扩展显示名” 优化效果
# 进阶篇
# 需求场景
- 申请人发起,添加指定成员,成员各自完成本人部分数据填写并提交
- 根据groupMember成员所属单位,计算审批单位groupDeptApprove并行审批,同单位多个成员只审一次
- 有单位审批不通过提前结束,再次提交审批已通过单位无需再审批
- 单位审批节点,仅查看本单位成员信息
# 开发要点
- 根据groupMember成员所属单位,计算审批单位groupDeptApprove并行审批
- 并行审批动态分支 groupDeptApprove
已审批通过单位 无需再审批
$${fieldDeptApproveResult} 为获取重复节当前行“审批结果”字段,结果为“1”表示为同意
- 并行审批提前结束设置
校验重复节中“审批结果”字段集合,任意用户有提交非同意意见,提前结束
- 并行审批完成后 判断是否需要自动退回
校验重复节中“审批结果”字段集合,任意用户有提交非同意意见,自动退回
# 单位审批节点,仅查看本单位成员信息
- 新增CurrentDept隐藏字段作为临时变量使用;成员列表itemVisible属性在审批节点时,动态显示本单位成员
- 临时变量CurrentDept通过单位审批并行节点Rendering事件进行赋值
public InfoPlusResponse onStepDeptApproveRendering(InfoPlusEvent e) {
InfoPlusExampleParallelAdvanced form = e.toBean(InfoPlusExampleParallelAdvanced.class);
for(InfoPlusExampleParallelAdvancedDeptApprove d:form.getDeptApprove()){
//此处利用重复节并行 数据隔离特点 仅当前分支才有审批人信息
//遍历 审批人不为空 设置临时变量CurrentDept 用于前端显示对应单位成员
if(d.getDeptApprover()!=null && StringUtils.isNotEmpty(d.getDeptApprover().getAccount())){
form.setCurrentDept(new CodeItemImpl(d.getDeptApproveTitle()));
}
}
InfoPlusResponse response=new InfoPlusResponse(e, form);
return response;
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
- 单位并行节点DeptApprover初值,该字段只在当前节点有写权限
# 案例地址
← 交我办JsSdk 动态DataSource →