feat(REQ-4586) - 调整检测下个节点内部的逻辑异常问题

This commit is contained in:
wangli 2025-07-11 18:40:48 +08:00
parent 78be7e5a45
commit 0a74e0c4cd

View File

@ -80,12 +80,13 @@ public class NextActivityConfigCheckJobHandler extends AbstractJobHandler implem
ListUtils.emptyIfNull(flowElements).stream()
.filter(i -> i instanceof UserTask || i instanceof ReceiveTask || i instanceof ServiceTask)
.findFirst().ifPresent(flowElement -> {
log.info("NextActivityConfigCheckJobHandler 计算节点为:{}", flowElement.getId());
log.info("NextActivityConfigCheckJobHandler, 实例 ID{}, 计算节点为:{}", job.getJobHandlerConfiguration(), flowElement.getId());
getApprovalMethod(flowElement).ifPresent(method -> {
switch (method) {
case autoPassed:
case autoRejection:
case bizSpecify:
case nobody:
break;
default:
List<Execution> executions = processEngineConfiguration.getRuntimeService().createExecutionQuery()
@ -101,7 +102,7 @@ public class NextActivityConfigCheckJobHandler extends AbstractJobHandler implem
});
// 审批候选人为空时的兜底
emptyAssigneeHandle(assigners, (UserTask) flowElement, (DelegateExecution) executions.get(0));
emptyAssigneeHandle(assigners, flowElement, (DelegateExecution) executions.get(0));
break;
}
});
@ -130,17 +131,17 @@ public class NextActivityConfigCheckJobHandler extends AbstractJobHandler implem
* 计算节点的待审批人为空时, 执行模型配置中的审批人为空时的处理方式
*
* @param assigners 节点计算的待审批人集合, 可能为空
* @param userTask 当前节点
* @param flowElement 当前节点
* @param execution 当前执行实例
*/
private void emptyAssigneeHandle(List<BpmnTaskDelegateAssigner> assigners, UserTask userTask,
private void emptyAssigneeHandle(List<BpmnTaskDelegateAssigner> assigners, FlowElement flowElement,
DelegateExecution execution) {
// 审批人为空并且当前节点设置了自动跳过条件
if (!CollectionUtils.isEmpty(assigners)) {
return;
}
log.info("NextActivityConfigCheckJobHandler-当前节点id: [{}], name: [{}] 审批人为空, 将执行审批人为空的兜底配置!", userTask.getId(), userTask.getName());
getApproverEmptyHandleType(userTask).ifPresent(type -> {
log.info("NextActivityConfigCheckJobHandler-当前节点id: [{}], name: [{}] 审批人为空, 将执行审批人为空的兜底配置!", flowElement.getId(), flowElement.getName());
getApproverEmptyHandleType(flowElement).ifPresent(type -> {
log.info("NextActivityConfigCheckJobHandler-节点兜底的配置模式:[{}]", type.getType());
switch (type) {
case autoPassed:
@ -148,7 +149,7 @@ public class NextActivityConfigCheckJobHandler extends AbstractJobHandler implem
break;
case transferToAdmin:
try {
assigners.addAll(approverSelect(ApproverEmptyHandleTypeEnum.transferToAdmin.getType(), userTask,
assigners.addAll(approverSelect(ApproverEmptyHandleTypeEnum.transferToAdmin.getType(), flowElement,
execution, true));
if (CollectionUtils.isEmpty(assigners)) {
throw new IllegalArgumentException("审批人为空后转交管理员仍然为空");
@ -163,7 +164,7 @@ public class NextActivityConfigCheckJobHandler extends AbstractJobHandler implem
break;
case specifyAssignee:
try {
assigners.addAll(approverSelect(ApproverEmptyHandleTypeEnum.specifyAssignee.getType(), userTask,
assigners.addAll(approverSelect(ApproverEmptyHandleTypeEnum.specifyAssignee.getType(), flowElement,
execution, true));
if (CollectionUtils.isEmpty(assigners)) {
throw new IllegalArgumentException("审批人为空后转交指定人员仍然为空,可能被指定人员已离职");