Merge branch 'feature/REQ-1309' into dev

This commit is contained in:
wangli 2023-10-07 14:22:49 +08:00
commit ad4a31c046
3 changed files with 27 additions and 12 deletions

View File

@ -1,15 +1,15 @@
package cn.axzo.workflow.common.enums;
public enum BpmFlowMultiMode {
//0 发起人 1审批 2抄送 3条件 4路由
public enum BpmnFlowNodeMode {
GENERAL("GENERAL", "普通"),
OR("OR", "或签"),
AND("AND", "会签");
private String type;
private String desc;
BpmFlowMultiMode(String type, String desc) {
BpmnFlowNodeMode(String type, String desc) {
this.type = type;
this.desc = desc;
}

View File

@ -1,6 +1,6 @@
package cn.axzo.workflow.common.model.request.bpmn;
import cn.axzo.workflow.common.enums.BpmFlowMultiMode;
import cn.axzo.workflow.common.enums.BpmnFlowNodeMode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -22,7 +22,7 @@ public class BpmnJsonNodeProperty {
* Task 多实例模式OR"或签"AND"会签"
*/
@ApiModelProperty(value = "Task 多实例模式OR或签AND会签")
private BpmFlowMultiMode multiMode;
private BpmnFlowNodeMode multiMode;
/**
* 审批人为空是否允许自动跳过

View File

@ -1,7 +1,7 @@
package cn.axzo.workflow.core.common.utils;
import cn.axzo.workflow.common.enums.BpmFlowMultiMode;
import cn.axzo.workflow.common.enums.BpmFlowNodeType;
import cn.axzo.workflow.common.enums.BpmnFlowNodeMode;
import cn.axzo.workflow.common.model.request.bpmn.BpmnJsonNode;
import cn.axzo.workflow.common.model.request.bpmn.BpmnJsonNodeProperty;
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
@ -11,13 +11,28 @@ import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.flowable.bpmn.BpmnAutoLayout;
import org.flowable.bpmn.converter.BpmnXMLConverter;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.EndEvent;
import org.flowable.bpmn.model.ExclusiveGateway;
import org.flowable.bpmn.model.FlowElement;
import org.flowable.bpmn.model.FlowableListener;
import org.flowable.bpmn.model.MultiInstanceLoopCharacteristics;
import org.flowable.bpmn.model.Process;
import org.flowable.bpmn.model.*;
import org.flowable.bpmn.model.SequenceFlow;
import org.flowable.bpmn.model.ServiceTask;
import org.flowable.bpmn.model.StartEvent;
import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.engine.repository.Model;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import java.util.stream.Collectors;
import static cn.axzo.workflow.common.constant.BpmConstants.BPM_ALLOW_SKIP_USER_TASK;
@ -351,7 +366,7 @@ public class BpmTransformUtil {
if (!ObjectUtils.isEmpty(flowNode.getProperty()) && Boolean.TRUE.equals(flowNode.getProperty().getIsMultiTask())) {
BpmnJsonNodeProperty property = flowNode.getProperty();
BpmFlowMultiMode mode = property.getMultiMode();
BpmnFlowNodeMode mode = property.getMultiMode();
MultiInstanceLoopCharacteristics multiInstanceLoopCharacteristics =
new MultiInstanceLoopCharacteristics();
@ -364,9 +379,9 @@ public class BpmTransformUtil {
userTask.setAssignee("${assigneeName}");
// 设置多实例属性
userTask.setLoopCharacteristics(multiInstanceLoopCharacteristics);
if (BpmFlowMultiMode.OR.getType().equals(mode.getType())) {
if (BpmnFlowNodeMode.OR.getType().equals(mode.getType())) {
multiInstanceLoopCharacteristics.setCompletionCondition("${nrOfCompletedInstances > 0}");
} else if (BpmFlowMultiMode.AND.getType().equals(mode.getType())) {
} else if (BpmnFlowNodeMode.AND.getType().equals(mode.getType())) {
multiInstanceLoopCharacteristics.setCompletionCondition("${nrOfInstances == " +
"nrOfCompletedInstances}");
}