REQ-3502: 过滤流程按钮

This commit is contained in:
yanglin 2025-01-14 14:31:04 +08:00
parent bb1e67513c
commit f70b7b20d2
2 changed files with 14 additions and 26 deletions

View File

@ -11,13 +11,11 @@ import cn.axzo.workflow.common.enums.ButtonVisibleScopeEnum;
import cn.axzo.workflow.common.model.request.bpmn.BpmnButtonMetaInfo;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskButtonVo;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskButtonVo.BpmnButtonMetaInfoWithVisibleScope;
import com.alibaba.fastjson.JSON;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
import java.util.Set;
@ -31,9 +29,8 @@ import static java.util.stream.Collectors.toSet;
@RequiredArgsConstructor
class WorkflowTodoCardButtonInterceptor implements CardButtonInterceptor {
private final WorkflowTodoCardButtonInterceptorFactory factory;
private final Todo todo;
private BpmnTaskButtonVo workflowButtons;
private final BpmnTaskButtonVo workflowButtons;
@Override
public DecisionValue<Boolean> isPerformActionAvailable(ButtonV3 button) {
@ -103,7 +100,6 @@ class WorkflowTodoCardButtonInterceptor implements CardButtonInterceptor {
}
private Optional<BpmnButtonMetaInfoWithVisibleScope> findWorkflowButton(ButtonV3 button) {
fetchWorkflowButtons();
List<BpmnButtonMetaInfoWithVisibleScope> workflowButtons = this.workflowButtons.getButtons();
if (workflowButtons == null)
workflowButtons = Collections.emptyList();
@ -113,11 +109,10 @@ class WorkflowTodoCardButtonInterceptor implements CardButtonInterceptor {
}
private Set<String> getWorkflowHideButtonKeys() {
fetchWorkflowButtons();
return getWorkflowHideButtonKeys(workflowButtons);
}
private Set<String> getWorkflowHideButtonKeys(BpmnTaskButtonVo workflowButtons) {
static Set<String> getWorkflowHideButtonKeys(BpmnTaskButtonVo workflowButtons) {
List<BpmnButtonMetaInfo> workflowHiddenButtons = workflowButtons.getCustomHiddenButtons();
if (workflowHiddenButtons == null)
workflowHiddenButtons = Collections.emptyList();
@ -126,12 +121,7 @@ class WorkflowTodoCardButtonInterceptor implements CardButtonInterceptor {
.collect(toSet());
}
private Set<WorkflowButtonInfo> getWorkflowButtons() {
fetchWorkflowButtons();
return getWorkflowButtons(workflowButtons);
}
private Set<WorkflowButtonInfo> getWorkflowButtons(BpmnTaskButtonVo workflowButtons) {
static Set<WorkflowButtonInfo> getWorkflowButtons(BpmnTaskButtonVo workflowButtons) {
List<BpmnButtonMetaInfoWithVisibleScope> workflowHiddenButtons = workflowButtons.getButtons();
if (workflowHiddenButtons == null)
workflowHiddenButtons = Collections.emptyList();
@ -140,18 +130,6 @@ class WorkflowTodoCardButtonInterceptor implements CardButtonInterceptor {
.collect(toSet());
}
private void fetchWorkflowButtons() {
if (workflowButtons == null) {
workflowButtons = factory.fetchWorkflowButtons(todo);
HashMap<String, Object> workflowButtonInfo = new HashMap<>();
workflowButtonInfo.put("workflowHideButtonKeys", getWorkflowHideButtonKeys(workflowButtons));
workflowButtonInfo.put("workflowButtons", getWorkflowButtons(workflowButtons));
log.info("fetchWorkflowButtons, todoIdentityCode={}, workflowButtonInfo: {}",
todo.getIdentityCode(), JSON.toJSONString(workflowButtonInfo));
}
}
@Getter
@RequiredArgsConstructor
public static class WorkflowButtonInfo {

View File

@ -13,11 +13,13 @@ import cn.axzo.msg.center.service.pending.request.CardContent;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskButtonSearchDTO;
import cn.axzo.workflow.common.model.response.bpmn.task.BpmnTaskButtonVo;
import cn.axzo.workflow.starter.api.WorkflowCoreService;
import com.alibaba.fastjson.JSON;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Nullable;
import java.util.HashMap;
/**
* @author yanglin
@ -44,7 +46,15 @@ class WorkflowTodoCardButtonInterceptorFactory implements CardButtonInterceptorF
log.warn("todo not found. identityCode={}", card.getBizParam());
return null;
}
return new WorkflowTodoCardButtonInterceptor(this, todo);
BpmnTaskButtonVo workflowButtons = fetchWorkflowButtons(todo);
HashMap<String, Object> workflowButtonInfo = new HashMap<>();
workflowButtonInfo.put("workflowHideButtonKeys", WorkflowTodoCardButtonInterceptor
.getWorkflowHideButtonKeys(workflowButtons));
workflowButtonInfo.put("workflowButtons", WorkflowTodoCardButtonInterceptor
.getWorkflowButtons(workflowButtons));
log.info("fetchWorkflowButtons, todoIdentityCode={}, workflowButtonInfo: {}",
todo.getIdentityCode(), JSON.toJSONString(workflowButtonInfo));
return new WorkflowTodoCardButtonInterceptor(todo, workflowButtons);
}
BpmnTaskButtonVo fetchWorkflowButtons(Todo todo) {