update - 候选审批人中,出现过没有 personId 的数据,为保障系统的健壮性,统一后拿到外部的候选审批人时,优先过滤掉 personId 为空的数据

This commit is contained in:
wangli 2024-03-04 16:22:24 +08:00
parent 2a5e7f16eb
commit 8b4b51da82
2 changed files with 5 additions and 1 deletions

View File

@ -312,6 +312,7 @@ public class CustomTaskHelper {
return delegateAssigners;
}
return new ArrayList<>(delegateAssigners.stream()
.filter(i -> StringUtils.hasText(i.getPersonId()))
.collect(Collectors.toMap(BpmnTaskDelegateAssigner::getPersonId, Function.identity(), (s, t) -> s))
.values());
}

View File

@ -20,6 +20,7 @@ import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.util.StopWatch;
import org.springframework.util.StringUtils;
import java.util.Collections;
import java.util.List;
@ -46,7 +47,8 @@ public abstract class AbstractBpmnTaskAssigneeSelector implements BpmnTaskAssign
@Override
public List<BpmnTaskDelegateAssigner> select(UserTask userTask, DelegateExecution execution,
Boolean throwException) {
return (List<BpmnTaskDelegateAssigner>) BpmnMetaParserHelper.getApproverScope(userTask)
List<BpmnTaskDelegateAssigner> assigners =
(List<BpmnTaskDelegateAssigner>) BpmnMetaParserHelper.getApproverScope(userTask)
.map(approverScopeEnum -> {
if (Objects.isNull(approverScopeEnum.getProcessor())) {
return Collections.emptyList();
@ -67,6 +69,7 @@ public abstract class AbstractBpmnTaskAssigneeSelector implements BpmnTaskAssign
}
}
}).orElseGet(Collections::emptyList);
return assigners.stream().filter(i -> StringUtils.hasText(i.getPersonId())).collect(Collectors.toList());
}
protected List<BpmnTaskDelegateAssigner> invokeService(UserTask userTask, DelegateExecution execution,