REQ-3502: 过滤流程按钮
This commit is contained in:
parent
bb1e67513c
commit
f70b7b20d2
@ -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 {
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user