bug修复
This commit is contained in:
parent
38dca48323
commit
14b3c88d57
@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import com.alibaba.fastjson2.JSONArray;
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.wflow.workflow.bean.process.ProcessNode;
|
import com.wflow.workflow.bean.process.ProcessNode;
|
||||||
|
import com.wflow.workflow.bean.process.enums.ApprovalModeEnum;
|
||||||
import com.wflow.workflow.bean.process.enums.ApprovalTypeEnum;
|
import com.wflow.workflow.bean.process.enums.ApprovalTypeEnum;
|
||||||
import com.wflow.workflow.bean.process.enums.ConditionModeEnum;
|
import com.wflow.workflow.bean.process.enums.ConditionModeEnum;
|
||||||
import com.wflow.workflow.bean.process.enums.NodeTypeEnum;
|
import com.wflow.workflow.bean.process.enums.NodeTypeEnum;
|
||||||
@ -29,6 +30,7 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* json -> bpmn核心转换器
|
* json -> bpmn核心转换器
|
||||||
|
*
|
||||||
* @author : willian fu
|
* @author : willian fu
|
||||||
* @date : 2022/8/19
|
* @date : 2022/8/19
|
||||||
*/
|
*/
|
||||||
@ -54,6 +56,7 @@ public class WFlowToBpmnCreator {
|
|||||||
private boolean isSub;
|
private boolean isSub;
|
||||||
|
|
||||||
private final static List<FlowableListener> taskListeners = new ArrayList<>();
|
private final static List<FlowableListener> taskListeners = new ArrayList<>();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
System.setProperty("java.util.Arrays.useLegacyMergeSort", "true");
|
System.setProperty("java.util.Arrays.useLegacyMergeSort", "true");
|
||||||
FlowableListener taskListener = new FlowableListener();
|
FlowableListener taskListener = new FlowableListener();
|
||||||
@ -65,6 +68,7 @@ public class WFlowToBpmnCreator {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* wflow -> bpmnModel 转换
|
* wflow -> bpmnModel 转换
|
||||||
|
*
|
||||||
* @param id 表单流程模型id
|
* @param id 表单流程模型id
|
||||||
* @param name 流程名
|
* @param name 流程名
|
||||||
* @param root 根节点
|
* @param root 根节点
|
||||||
@ -130,6 +134,7 @@ public class WFlowToBpmnCreator {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 节点props属性强制转换
|
* 节点props属性强制转换
|
||||||
|
*
|
||||||
* @param node 节点
|
* @param node 节点
|
||||||
*/
|
*/
|
||||||
public synchronized static void coverProps(ProcessNode<?> node) {
|
public synchronized static void coverProps(ProcessNode<?> node) {
|
||||||
@ -145,6 +150,7 @@ public class WFlowToBpmnCreator {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断并加载分支末端所有的节点
|
* 判断并加载分支末端所有的节点
|
||||||
|
*
|
||||||
* @param node 当前节点
|
* @param node 当前节点
|
||||||
*/
|
*/
|
||||||
private void loadBranchEndNodes(ProcessNode<?> node) {
|
private void loadBranchEndNodes(ProcessNode<?> node) {
|
||||||
@ -179,6 +185,7 @@ public class WFlowToBpmnCreator {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验是否存在后续子节点
|
* 校验是否存在后续子节点
|
||||||
|
*
|
||||||
* @param node 当前节点
|
* @param node 当前节点
|
||||||
* @return 1/0
|
* @return 1/0
|
||||||
*/
|
*/
|
||||||
@ -188,6 +195,7 @@ public class WFlowToBpmnCreator {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 递归加载所有流程树
|
* 递归加载所有流程树
|
||||||
|
*
|
||||||
* @param node 起始节点
|
* @param node 起始节点
|
||||||
*/
|
*/
|
||||||
public void loadProcess(ProcessNode<?> node) {
|
public void loadProcess(ProcessNode<?> node) {
|
||||||
@ -520,6 +528,33 @@ public class WFlowToBpmnCreator {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//多人签署设置-会签/或签
|
||||||
|
// private MultiInstanceLoopCharacteristics createAndOrMode(String nodeId, ApprovalProps props) {
|
||||||
|
// MultiInstanceLoopCharacteristics loopCharacteristics = new MultiInstanceLoopCharacteristics();
|
||||||
|
// loopCharacteristics.setId(IdUtil.randomUUID());
|
||||||
|
// loopCharacteristics.setElementVariable("assignee");
|
||||||
|
// loopCharacteristics.setInputDataItem("${processTaskService.getNodeApprovalUsers(execution)}");
|
||||||
|
// //设置完成条件,先判断会签还是或签
|
||||||
|
// String completionCondition = "";
|
||||||
|
// switch (props.getMode()) {
|
||||||
|
// case OR: //有任意一个人处理过就结束
|
||||||
|
// completionCondition = "nrOfCompletedInstances >= 1";
|
||||||
|
// loopCharacteristics.setSequential(false);
|
||||||
|
// break;
|
||||||
|
// case AND: //所有任务都结束
|
||||||
|
// completionCondition = "nrOfActiveInstances == 0";
|
||||||
|
// loopCharacteristics.setSequential(false);
|
||||||
|
// break;
|
||||||
|
// case NEXT:
|
||||||
|
// completionCondition = "nrOfActiveInstances == 0";
|
||||||
|
// loopCharacteristics.setSequential(true);
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// loopCharacteristics.setCompletionCondition("${" + completionCondition + "}");
|
||||||
|
// return loopCharacteristics;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
//多人签署设置-会签/或签
|
//多人签署设置-会签/或签
|
||||||
private MultiInstanceLoopCharacteristics createAndOrMode(String nodeId, ApprovalProps props) {
|
private MultiInstanceLoopCharacteristics createAndOrMode(String nodeId, ApprovalProps props) {
|
||||||
MultiInstanceLoopCharacteristics loopCharacteristics = new MultiInstanceLoopCharacteristics();
|
MultiInstanceLoopCharacteristics loopCharacteristics = new MultiInstanceLoopCharacteristics();
|
||||||
@ -527,42 +562,33 @@ public class WFlowToBpmnCreator {
|
|||||||
loopCharacteristics.setElementVariable("assignee");
|
loopCharacteristics.setElementVariable("assignee");
|
||||||
loopCharacteristics.setInputDataItem("${processTaskService.getNodeApprovalUsers(execution)}");
|
loopCharacteristics.setInputDataItem("${processTaskService.getNodeApprovalUsers(execution)}");
|
||||||
//设置完成条件,先判断会签还是或签
|
//设置完成条件,先判断会签还是或签
|
||||||
String completionCondition = "";
|
loopCharacteristics.setSequential(ApprovalModeEnum.NEXT.equals(props.getMode()));
|
||||||
switch (props.getMode()) {
|
loopCharacteristics.setCompletionCondition("${uelTools.nodeIsComplete(execution, '" + props.getMode().toString() + "')}");
|
||||||
case OR: //有任意一个人处理过就结束
|
|
||||||
completionCondition = "nrOfCompletedInstances >= 1";
|
|
||||||
loopCharacteristics.setSequential(false);
|
|
||||||
break;
|
|
||||||
case AND: //所有任务都结束
|
|
||||||
completionCondition = "nrOfActiveInstances == 0";
|
|
||||||
loopCharacteristics.setSequential(false);
|
|
||||||
break;
|
|
||||||
case NEXT:
|
|
||||||
completionCondition = "nrOfActiveInstances == 0";
|
|
||||||
loopCharacteristics.setSequential(true);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
loopCharacteristics.setCompletionCondition("${" + completionCondition + "}");
|
|
||||||
return loopCharacteristics;
|
return loopCharacteristics;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取ISO8601时间
|
* 获取ISO8601时间
|
||||||
|
*
|
||||||
* @param time 值
|
* @param time 值
|
||||||
* @param unit 单位
|
* @param unit 单位
|
||||||
* @return 格式化时间
|
* @return 格式化时间
|
||||||
*/
|
*/
|
||||||
private String getISO8601Time(Integer time, String unit) {
|
private String getISO8601Time(Integer time, String unit) {
|
||||||
switch (unit) {
|
switch (unit) {
|
||||||
case "D": return "P" + time + unit;
|
case "D":
|
||||||
case "H": return "PT" + time + unit;
|
return "P" + time + unit;
|
||||||
case "M": return "PT" + time + unit;
|
case "H":
|
||||||
|
return "PT" + time + unit;
|
||||||
|
case "M":
|
||||||
|
return "PT" + time + unit;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构造主子流程变量传递参数
|
* 构造主子流程变量传递参数
|
||||||
|
*
|
||||||
* @param vars 参数
|
* @param vars 参数
|
||||||
* @param reverse 是否为逆向传递
|
* @param reverse 是否为逆向传递
|
||||||
* @return 参数列表
|
* @return 参数列表
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user