feat(REQ-7125) - 查找审批人策略实现,适配“管理员指定审批人”
This commit is contained in:
parent
b04f9d00eb
commit
4313158f48
@ -247,9 +247,11 @@ public class EngineExecutionStartListener implements ExecutionListener {
|
||||
if (categoryVersion < 2) {
|
||||
assigners.addAll(approverSelect(ApproverEmptyHandleTypeEnum.transferToAdmin.getType(), userTask,
|
||||
execution, true));
|
||||
finalEmptyAssigneeHandle(assigners, userTask, execution, "未找到审批人且转交管理员失败,系统终止", "karma: " + (refreshProperties.getUseNewToAdminApi() ? "api/flow/listTaskAssignerAdmin/v2" : "api/flow/listTaskAssignerAdmin"));
|
||||
break;
|
||||
}
|
||||
|
||||
finalEmptyAssigneeHandle(assigners, userTask, execution, "未找到审批人且转交管理员失败,系统终止", "karma: " + (refreshProperties.getUseNewToAdminApi() ? "api/flow/listTaskAssignerAdmin/v2" : "api/flow/listTaskAssignerAdmin"));
|
||||
finalEmptyAssigneeHandle(assigners, userTask, execution, "未找到审批人且转交管理员失败,系统终止", "org-gateway: api/node-user/flow-task-assigner/v2/list");
|
||||
// 新版配置,是在上 v2 版本的 selector 中实现的。/api/node-user/flow-task-assigner/v2/list
|
||||
break;
|
||||
case specifyAssignee:
|
||||
assigners.addAll(approverSelect(ApproverEmptyHandleTypeEnum.specifyAssignee.getType(), userTask,
|
||||
@ -258,8 +260,7 @@ public class EngineExecutionStartListener implements ExecutionListener {
|
||||
break;
|
||||
case transferToAdminSpecify:
|
||||
// REQ-7125 新增管理员指定审批人策略
|
||||
assigners.addAll(approverSelect(ApproverEmptyHandleTypeEnum.transferToAdminSpecify.getType(), userTask, execution, true));
|
||||
finalEmptyAssigneeHandle(assigners, userTask, execution, "未找到审批人且转交管理员失败,系统终止", "karma: " + (refreshProperties.getUseNewToAdminApi() ? "api/flow/listTaskAssignerAdmin/v2" : "api/flow/listTaskAssignerAdmin"));
|
||||
finalEmptyAssigneeHandle(assigners, userTask, execution, "未找到审批人且转交管理员失败,系统终止", "org-gateway: api/node-user/flow-task-assigner/v2/list");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@ -322,6 +322,7 @@ public abstract class AbstractBpmnTaskAssigneeSelector implements BpmnTaskAssign
|
||||
.ouId(String.valueOf(i.getOuId()))
|
||||
.avatar(i.getAvatarUrl())
|
||||
.nodeId(i.getNodeId())
|
||||
// TODO 将接口返回的管理员数据映射到 isTransferToAdminSpecify
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@ -38,6 +38,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.CLOSE_PROCESS_ASSIG
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_LOG_NODE_HAS_BEEN_HIDDEN;
|
||||
import static cn.axzo.workflow.common.enums.ApproverEmptyHandleTypeEnum.transferToAdmin;
|
||||
import static cn.axzo.workflow.common.enums.ApproverEmptyHandleTypeEnum.transferToAdminSpecify;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverEmptyHandleType;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyRange;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyRangeOrgLimit;
|
||||
@ -82,7 +83,7 @@ public class BasedIdentityV2TaskAssigneeSelector extends AbstractBpmnTaskAssigne
|
||||
.areaCodes(getAreaFilterEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeAreaCodes())) : Sets.newHashSet())
|
||||
.specialtyCodes(getSpecialtyFilterEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeSpecialtyCodes())) : Sets.newHashSet())
|
||||
.projectIds(getOnlyInProjectEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getProjectIds())) : Sets.newHashSet())
|
||||
.querySupervisorWhileMissMatched(getApproverEmptyHandleType(flowElement).filter(type -> Objects.equals(type, transferToAdmin)).isPresent());
|
||||
.querySupervisorWhileMissMatched(getApproverEmptyHandleType(flowElement).filter(type -> Objects.equals(type, transferToAdmin) || Objects.equals(type, transferToAdminSpecify)).isPresent());
|
||||
switch (optRange.get()) {
|
||||
case within_the_project:
|
||||
log.info("executing role v2 with within_the_project");
|
||||
|
||||
@ -28,6 +28,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.BIZ_ORG_RELATION;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_LOG_NODE_HAS_BEEN_HIDDEN;
|
||||
import static cn.axzo.workflow.common.enums.ApproverEmptyHandleTypeEnum.transferToAdmin;
|
||||
import static cn.axzo.workflow.common.enums.ApproverEmptyHandleTypeEnum.transferToAdminSpecify;
|
||||
import static cn.axzo.workflow.common.enums.ApproverSpecifyRangeUnitEnum.in_project;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverEmptyHandleType;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getAreaFilterEnable;
|
||||
@ -75,7 +76,7 @@ public class BasedInitiatorLeaderV2TaskAssigneeSelector extends AbstractBpmnTask
|
||||
.areaCodes(getAreaFilterEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeAreaCodes())) : Sets.newHashSet())
|
||||
.specialtyCodes(getSpecialtyFilterEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeSpecialtyCodes())) : Sets.newHashSet())
|
||||
.projectIds(getOnlyInProjectEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getProjectIds())) : Sets.newHashSet())
|
||||
.querySupervisorWhileMissMatched(getApproverEmptyHandleType(flowElement).filter(type -> Objects.equals(type, transferToAdmin)).isPresent());
|
||||
.querySupervisorWhileMissMatched(getApproverEmptyHandleType(flowElement).filter(type -> Objects.equals(type, transferToAdmin) || Objects.equals(type, transferToAdminSpecify)).isPresent());
|
||||
|
||||
FlowTaskAssignerV2Req request = v2ReqBuilder.build();
|
||||
List<FlowTaskAssignerV2Resp> apiResultUsers = new ArrayList<>();
|
||||
|
||||
@ -38,6 +38,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.CLOSE_PROCESS_ASSIG
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_LOG_NODE_HAS_BEEN_HIDDEN;
|
||||
import static cn.axzo.workflow.common.enums.ApproverEmptyHandleTypeEnum.transferToAdmin;
|
||||
import static cn.axzo.workflow.common.enums.ApproverEmptyHandleTypeEnum.transferToAdminSpecify;
|
||||
import static cn.axzo.workflow.common.enums.ApproverSpecifyRangeUnitEnum.in_project;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverEmptyHandleType;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyRange;
|
||||
@ -86,7 +87,7 @@ public class BasedPositionV2TaskAssigneeSelector extends AbstractBpmnTaskAssigne
|
||||
.areaCodes(getAreaFilterEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeAreaCodes())) : Sets.newHashSet())
|
||||
.specialtyCodes(getSpecialtyFilterEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeSpecialtyCodes())) : Sets.newHashSet())
|
||||
.projectIds(getOnlyInProjectEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getProjectIds())) : Sets.newHashSet())
|
||||
.querySupervisorWhileMissMatched(getApproverEmptyHandleType(flowElement).filter(type -> Objects.equals(type, transferToAdmin)).isPresent());
|
||||
.querySupervisorWhileMissMatched(getApproverEmptyHandleType(flowElement).filter(type -> Objects.equals(type, transferToAdmin) || Objects.equals(type, transferToAdminSpecify)).isPresent());
|
||||
switch (optRange.get()) {
|
||||
case within_the_project:
|
||||
log.info("executing position v2 with within_the_project");
|
||||
|
||||
@ -39,6 +39,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.CLOSE_PROCESS_ASSIG
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_LOG_NODE_HAS_BEEN_HIDDEN;
|
||||
import static cn.axzo.workflow.common.enums.ApproverEmptyHandleTypeEnum.transferToAdmin;
|
||||
import static cn.axzo.workflow.common.enums.ApproverEmptyHandleTypeEnum.transferToAdminSpecify;
|
||||
import static cn.axzo.workflow.common.enums.ApproverSpecifyRangeUnitEnum.in_project;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverEmptyHandleType;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyRange;
|
||||
@ -88,7 +89,7 @@ public class BasedRoleV2TaskAssigneeSelector extends AbstractBpmnTaskAssigneeSel
|
||||
.areaCodes(getAreaFilterEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeAreaCodes())) : Sets.newHashSet())
|
||||
.specialtyCodes(getSpecialtyFilterEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeSpecialtyCodes())) : Sets.newHashSet())
|
||||
.projectIds(getOnlyInProjectEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getProjectIds())) : Sets.newHashSet())
|
||||
.querySupervisorWhileMissMatched(getApproverEmptyHandleType(flowElement).filter(type -> Objects.equals(type, transferToAdmin)).isPresent());
|
||||
.querySupervisorWhileMissMatched(getApproverEmptyHandleType(flowElement).filter(type -> Objects.equals(type, transferToAdmin) || Objects.equals(type, transferToAdminSpecify)).isPresent());
|
||||
switch (optRange.get()) {
|
||||
case within_the_project:
|
||||
log.info("executing role v2 with within_the_project");
|
||||
|
||||
@ -1,56 +0,0 @@
|
||||
package cn.axzo.workflow.server.controller.delegate;
|
||||
|
||||
import cn.axzo.workflow.common.enums.ApproverEmptyHandleTypeEnum;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||
import cn.axzo.workflow.core.conf.SupportRefreshProperties;
|
||||
import cn.axzo.workflow.core.deletage.approverscope.ApproverScopeDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.flowable.bpmn.model.FlowElement;
|
||||
import org.flowable.engine.delegate.DelegateExecution;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 基于"转交给管理员"查询审批人
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2023/11/16 11:44
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class TransferToAdminSpecifyTaskAssigneeSelector extends TransferToAdminTaskAssigneeSelector {
|
||||
|
||||
@Resource
|
||||
private SupportRefreshProperties supportRefreshProperties;
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return ApproverEmptyHandleTypeEnum.transferToAdminSpecify.getType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution,
|
||||
Boolean throwException) {
|
||||
return super.select(flowElement, execution, throwException);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<BpmnTaskDelegateAssigner> invokeService(FlowElement flowElement, DelegateExecution execution,
|
||||
ApproverScopeDTO scopeDto) {
|
||||
|
||||
log.info("transferToAdmin invokeService executing...");
|
||||
List<BpmnTaskDelegateAssigner> assigners = new ArrayList<>();
|
||||
if (Boolean.TRUE.equals(supportRefreshProperties.getUseNewToAdminApi())) {
|
||||
assigners.addAll(invokeNewQuery(flowElement, execution, scopeDto));
|
||||
} else {
|
||||
assigners.addAll(invokeOldQuery(flowElement, execution, scopeDto));
|
||||
}
|
||||
// 这里的审批人仅只能有“指定审批人”按钮的权限
|
||||
assigners.forEach(i -> i.setIsTransferToAdminSpecify(true));
|
||||
return assigners;
|
||||
}
|
||||
|
||||
}
|
||||
@ -38,6 +38,8 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_PROCESS_WO
|
||||
/**
|
||||
* 基于"转交给管理员"查询审批人
|
||||
*
|
||||
* 仅适用于旧版本模型配置,新版本配置又 v2 的 selector 实现。
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2023/11/16 11:44
|
||||
*/
|
||||
|
||||
Loading…
Reference in New Issue
Block a user