REQ-2596-节点审批人大于指定人数,按指定数量截取

This commit is contained in:
yangqicheng 2024-07-04 16:22:31 +08:00
parent 196d9e61cd
commit 970e7e58ab
3 changed files with 21 additions and 2 deletions

View File

@ -156,4 +156,9 @@ public interface BpmnConstants {
* 用于 MQ Header 记录当前事件的归属应用 * 用于 MQ Header 记录当前事件的归属应用
*/ */
String MQ_OWNERSHIP_APP = "MQ_OWNERSHIP_APPLICATION"; String MQ_OWNERSHIP_APP = "MQ_OWNERSHIP_APPLICATION";
/**
* 审批人数量限制
*/
Integer ASSIGNER_LIMIT_NUMBER = 60;
} }

View File

@ -35,6 +35,7 @@ import java.util.List;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.axzo.workflow.common.constant.BpmnConstants.ASSIGNER_LIMIT_NUMBER;
import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.CALC_TASK_ASSIGNEE_ERROR; import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.CALC_TASK_ASSIGNEE_ERROR;
import static cn.axzo.workflow.core.common.code.ConvertorRespCode.CONVERTOR_META_DATA_FORMAT_ERROR; import static cn.axzo.workflow.core.common.code.ConvertorRespCode.CONVERTOR_META_DATA_FORMAT_ERROR;
import static cn.axzo.workflow.core.common.code.FlowableEngineRespCode.ENGINE_USER_TASK_CALC_ERROR; import static cn.axzo.workflow.core.common.code.FlowableEngineRespCode.ENGINE_USER_TASK_CALC_ERROR;
@ -72,7 +73,7 @@ public abstract class AbstractBpmnTaskAssigneeSelector implements BpmnTaskAssign
ApproverScopeEnum processor = ((NoticeFlowElement) flowElement).getProcessor(); ApproverScopeEnum processor = ((NoticeFlowElement) flowElement).getProcessor();
assigners.addAll(privateSelector(processor, flowElement, execution, throwException)); assigners.addAll(privateSelector(processor, flowElement, execution, throwException));
} }
return assigners.stream().filter(i -> StringUtils.hasText(i.getPersonId())).collect(Collectors.toList()); return getLimitedAssignerList(assigners.stream().filter(i -> StringUtils.hasText(i.getPersonId())).collect(Collectors.toList()));
} }
private List<BpmnTaskDelegateAssigner> privateSelector(ApproverScopeEnum processorType, FlowElement flowElement, private List<BpmnTaskDelegateAssigner> privateSelector(ApproverScopeEnum processorType, FlowElement flowElement,
@ -174,6 +175,19 @@ public abstract class AbstractBpmnTaskAssigneeSelector implements BpmnTaskAssign
} }
} }
/**
* 获取指定数量审批人
*
* @param assigners 原始的审批人列表
* @return 截取后的审批人列表
*/
protected List<BpmnTaskDelegateAssigner> getLimitedAssignerList(List<BpmnTaskDelegateAssigner> assigners) {
if (CollectionUtils.isEmpty(assigners) || assigners.size() <= ASSIGNER_LIMIT_NUMBER) {
return assigners;
}
return assigners.subList(0, ASSIGNER_LIMIT_NUMBER);
}
@Override @Override
public void setApplicationContext(ApplicationContext context) throws BeansException { public void setApplicationContext(ApplicationContext context) throws BeansException {
this.applicationContext = context; this.applicationContext = context;

View File

@ -39,7 +39,7 @@ public class BasedFixedPersonTaskAssigneeSelector extends AbstractBpmnTaskAssign
} }
BpmnMetaParserHelper.getApproverSpecifyValue((UserTask) flowElement) BpmnMetaParserHelper.getApproverSpecifyValue((UserTask) flowElement)
.ifPresent(s -> assigners.addAll(JSON.parseArray(s, BpmnTaskDelegateAssigner.class))); .ifPresent(s -> assigners.addAll(JSON.parseArray(s, BpmnTaskDelegateAssigner.class)));
return assigners; return getLimitedAssignerList(assigners);
} }
} }