feat(REQ-3769) - 发起人自选功能,增加二级规则限制逻辑分支定义

This commit is contained in:
wangli 2025-04-01 17:06:44 +08:00
parent cb53f84473
commit 624fa7560f

View File

@ -2,7 +2,9 @@ package cn.axzo.workflow.server.controller.delegate;
import cn.axzo.workflow.common.enums.ApproverSpecifyEnum; import cn.axzo.workflow.common.enums.ApproverSpecifyEnum;
import cn.axzo.workflow.common.exception.WorkflowEngineException; import cn.axzo.workflow.common.exception.WorkflowEngineException;
import cn.axzo.workflow.common.model.request.bpmn.BpmnSignApproverLimit;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.model.FlowElement; import org.flowable.bpmn.model.FlowElement;
@ -16,6 +18,7 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.axzo.workflow.common.code.FlowableEngineRespCode.ENGINE_USER_TASK_CALC_ERROR; import static cn.axzo.workflow.common.code.FlowableEngineRespCode.ENGINE_USER_TASK_CALC_ERROR;
@ -48,7 +51,14 @@ public class BasedInitiatorSpecifiedTaskAssigneeSelector extends AbstractBpmnTas
public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution, Boolean throwException) { public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution, Boolean throwException) {
List<BpmnTaskDelegateAssigner> assigners = new ArrayList<>(); List<BpmnTaskDelegateAssigner> assigners = new ArrayList<>();
try { try {
populateAssigneeByInitiatorSpecify(assigners, flowElement, execution); Optional<BpmnSignApproverLimit> signApproverLimit = BpmnMetaParserHelper.getSignApproverLimit(flowElement);
if (signApproverLimit.isPresent()) {
// 签署业务节点设置发起人自选后会设置限制范围
// TODO
} else {
// 最初的发起人自选
populateAssigneeByInitiatorSpecify(assigners, flowElement, execution);
}
} catch (Throwable t) { } catch (Throwable t) {
if (Boolean.TRUE.equals(throwException)) { if (Boolean.TRUE.equals(throwException)) {
log.warn("执行查询发起时指定审批人时发现异常, 审批节点:{}, 异常信息:{}", flowElement.getId(), t.getMessage()); log.warn("执行查询发起时指定审批人时发现异常, 审批节点:{}, 异常信息:{}", flowElement.getId(), t.getMessage());