update - 优化 mock 选人的逻辑,是通过 category 是控制,而非实例 ID

This commit is contained in:
wangli 2023-12-06 10:24:35 +08:00
parent 7adc60231a
commit 78d62bbadb
2 changed files with 7 additions and 7 deletions

View File

@ -21,16 +21,16 @@ import java.util.Objects;
*/
public class MockTaskAssigneeSelector implements BpmnTaskAssigneeSelector {
private final Map<String, List<BpmnTaskDelegateAssigner>> assigneeMap = new HashMap<>();
private final String processInstanceId;
private final String category;
private final Boolean global;
public MockTaskAssigneeSelector(Map<String, String> map, Boolean global, String processInstanceId) {
public MockTaskAssigneeSelector(Map<String, String> map, Boolean global, String category) {
map.forEach((k, v) -> {
List<BpmnTaskDelegateAssigner> assigners = new ArrayList<>();
JSON.parseArray(v, String.class).forEach(i -> assigners.add(JSON.parseObject(i, BpmnTaskDelegateAssigner.class)));
assigneeMap.put(k, assigners);
});
this.processInstanceId = processInstanceId;
this.category = category;
this.global = global;
}
@ -64,7 +64,7 @@ public class MockTaskAssigneeSelector implements BpmnTaskAssigneeSelector {
private void firstParseNacos(UserTask userTask, DelegateExecution execution, List<BpmnTaskDelegateAssigner> users) {
if (global) {
users.addAll(assigneeMap.getOrDefault(userTask.getId(), Collections.emptyList()));
} else if (Objects.equals(processInstanceId, execution.getProcessInstanceId())) {
} else if (Objects.equals(category, execution.getProcessDefinitionId().split(":")[0])) {
users.addAll(assigneeMap.getOrDefault(userTask.getId(), Collections.emptyList()));
}
}

View File

@ -63,8 +63,8 @@ public class EngineExecutionStartListener implements ExecutionListener {
private Boolean mock;
@Value("${workflow.assignee.global:true}")
private Boolean global;
@Value("${workflow.assignee.instanceId:''}")
private String processInstanceId;
@Value("${workflow.assignee.category:''}")
private String category;
@Value("#{${workflow.assignee.map:{}}}")
private Map<String, String> assigneeMap;
@ -171,7 +171,7 @@ public class EngineExecutionStartListener implements ExecutionListener {
// 如果开启了 mock 模式workflow.mock=true, 则直接返回 mock 的审批人
if (mock) {
assigners.addAll(new MockTaskAssigneeSelector(assigneeMap, global, processInstanceId).select(userTask, execution));
assigners.addAll(new MockTaskAssigneeSelector(assigneeMap, global, category).select(userTask, execution));
} else {
selectors.forEach(select -> {
if (select.support(type)) {