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.JSONObject;
|
||||
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.ConditionModeEnum;
|
||||
import com.wflow.workflow.bean.process.enums.NodeTypeEnum;
|
||||
@ -29,6 +30,7 @@ import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* json -> bpmn核心转换器
|
||||
*
|
||||
* @author : willian fu
|
||||
* @date : 2022/8/19
|
||||
*/
|
||||
@ -54,6 +56,7 @@ public class WFlowToBpmnCreator {
|
||||
private boolean isSub;
|
||||
|
||||
private final static List<FlowableListener> taskListeners = new ArrayList<>();
|
||||
|
||||
static {
|
||||
System.setProperty("java.util.Arrays.useLegacyMergeSort", "true");
|
||||
FlowableListener taskListener = new FlowableListener();
|
||||
@ -65,6 +68,7 @@ public class WFlowToBpmnCreator {
|
||||
|
||||
/**
|
||||
* wflow -> bpmnModel 转换
|
||||
*
|
||||
* @param id 表单流程模型id
|
||||
* @param name 流程名
|
||||
* @param root 根节点
|
||||
@ -130,6 +134,7 @@ public class WFlowToBpmnCreator {
|
||||
|
||||
/**
|
||||
* 节点props属性强制转换
|
||||
*
|
||||
* @param node 节点
|
||||
*/
|
||||
public synchronized static void coverProps(ProcessNode<?> node) {
|
||||
@ -145,6 +150,7 @@ public class WFlowToBpmnCreator {
|
||||
|
||||
/**
|
||||
* 判断并加载分支末端所有的节点
|
||||
*
|
||||
* @param node 当前节点
|
||||
*/
|
||||
private void loadBranchEndNodes(ProcessNode<?> node) {
|
||||
@ -179,6 +185,7 @@ public class WFlowToBpmnCreator {
|
||||
|
||||
/**
|
||||
* 校验是否存在后续子节点
|
||||
*
|
||||
* @param node 当前节点
|
||||
* @return 1/0
|
||||
*/
|
||||
@ -188,6 +195,7 @@ public class WFlowToBpmnCreator {
|
||||
|
||||
/**
|
||||
* 递归加载所有流程树
|
||||
*
|
||||
* @param node 起始节点
|
||||
*/
|
||||
public void loadProcess(ProcessNode<?> node) {
|
||||
@ -520,6 +528,33 @@ public class WFlowToBpmnCreator {
|
||||
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) {
|
||||
MultiInstanceLoopCharacteristics loopCharacteristics = new MultiInstanceLoopCharacteristics();
|
||||
@ -527,42 +562,33 @@ public class WFlowToBpmnCreator {
|
||||
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 + "}");
|
||||
loopCharacteristics.setSequential(ApprovalModeEnum.NEXT.equals(props.getMode()));
|
||||
loopCharacteristics.setCompletionCondition("${uelTools.nodeIsComplete(execution, '" + props.getMode().toString() + "')}");
|
||||
return loopCharacteristics;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取ISO8601时间
|
||||
*
|
||||
* @param time 值
|
||||
* @param unit 单位
|
||||
* @return 格式化时间
|
||||
*/
|
||||
private String getISO8601Time(Integer time, String unit) {
|
||||
switch (unit) {
|
||||
case "D": return "P" + time + unit;
|
||||
case "H": return "PT" + time + unit;
|
||||
case "M": return "PT" + time + unit;
|
||||
case "D":
|
||||
return "P" + time + unit;
|
||||
case "H":
|
||||
return "PT" + time + unit;
|
||||
case "M":
|
||||
return "PT" + time + unit;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造主子流程变量传递参数
|
||||
*
|
||||
* @param vars 参数
|
||||
* @param reverse 是否为逆向传递
|
||||
* @return 参数列表
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user