update - 优化 mock 选人的逻辑,是通过 category 是控制,而非实例 ID
This commit is contained in:
parent
7adc60231a
commit
78d62bbadb
@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user