【代码评审】BPM:review simple 字段、seq 连线

This commit is contained in:
YunaiV 2024-06-03 12:50:07 +08:00
parent d9a2849cce
commit c87bea5a72
3 changed files with 7 additions and 64 deletions

View File

@ -29,6 +29,7 @@ public class BpmSimpleModelNodeVO {
private String name; private String name;
// TODO @jason要不改成 placeholder 和一般 Element-Plus 组件一致占位符用于展示@芋艿这个不是 placeholder 占位符的含义节点配置后节点展示的内容不知道取什么名字好??? // TODO @jason要不改成 placeholder 和一般 Element-Plus 组件一致占位符用于展示@芋艿这个不是 placeholder 占位符的含义节点配置后节点展示的内容不知道取什么名字好???
// TODO @jason回复占位文本showText是指当一个文本框没有被 focus 的时候显示的是提示文字当他被点击之后就显示空白虽然不是完全精准但是 placeholder 相对正式点~
@Schema(description = "节点展示内容", example = "指定成员: 芋道源码") @Schema(description = "节点展示内容", example = "指定成员: 芋道源码")
private String showText; private String showText;

View File

@ -95,27 +95,21 @@ public class SimpleModelUtils {
return bpmnModel; return bpmnModel;
} }
// TODO @芋艿在优化下这个注释
private static void traverseNodeToBuildSequenceFlow(Process process, BpmSimpleModelNodeVO node, String targetNodeId) { private static void traverseNodeToBuildSequenceFlow(Process process, BpmSimpleModelNodeVO node, String targetNodeId) {
// 1.无效节点返回 // 1.1 无效节点返回
if (!isValidNode(node)) { if (!isValidNode(node)) {
return; return;
} }
// 1.2 END_NODE 直接返回
// 如果是网关分支节点. 后续节点可能为 null但不是 END_EVENT 节点
// TODO-DONE @芋艿这个要不要挪到 START_NODE - INCLUSIVE_BRANCH_JOIN_NODE 待定感觉 switch 那最终是分三个情况branch子节点结束了每种情况的注释需要写的更完整
// if (!BpmSimpleModelNodeType.isBranchNode(node.getType()) && (childNode == null || childNode.getId() == null)) {
// SequenceFlow sequenceFlow = buildBpmnSequenceFlow(node.getId(), targetNodeId, null, null, null);
// process.addFlowElement(sequenceFlow);
// return;
// }
BpmSimpleModelNodeType nodeType = BpmSimpleModelNodeType.valueOf(node.getType()); BpmSimpleModelNodeType nodeType = BpmSimpleModelNodeType.valueOf(node.getType());
Assert.notNull(nodeType, "模型节点类型不支持"); Assert.notNull(nodeType, "模型节点类型不支持");
if (nodeType == END_NODE) { if (nodeType == END_NODE) {
return; return;
} }
// 2.1 情况一普通节点
BpmSimpleModelNodeVO childNode = node.getChildNode(); BpmSimpleModelNodeVO childNode = node.getChildNode();
// 2.1 普通节点
if (!BpmSimpleModelNodeType.isBranchNode(node.getType())) { if (!BpmSimpleModelNodeType.isBranchNode(node.getType())) {
if (!isValidNode(childNode)) { if (!isValidNode(childNode)) {
// 2.1.1 普通节点且无孩子节点分两种情况 // 2.1.1 普通节点且无孩子节点分两种情况
@ -130,7 +124,7 @@ public class SimpleModelUtils {
traverseNodeToBuildSequenceFlow(process, childNode, targetNodeId); traverseNodeToBuildSequenceFlow(process, childNode, targetNodeId);
} }
} else { } else {
// 2.2 分支节点 // 2.2 情况二分支节点
List<BpmSimpleModelNodeVO> conditionNodes = node.getConditionNodes(); List<BpmSimpleModelNodeVO> conditionNodes = node.getConditionNodes();
Assert.notEmpty(conditionNodes, "分支节点的条件节点不能为空"); Assert.notEmpty(conditionNodes, "分支节点的条件节点不能为空");
// 分支终点节点 Id // 分支终点节点 Id
@ -177,57 +171,6 @@ public class SimpleModelUtils {
// 4.递归调用后续节点 继续递归建立 D->E 的连线 // 4.递归调用后续节点 继续递归建立 D->E 的连线
traverseNodeToBuildSequenceFlow(process, childNode, targetNodeId); traverseNodeToBuildSequenceFlow(process, childNode, targetNodeId);
} }
// TODO @jason下面的 PARALLEL_BRANCH_FORK_NODECONDITION_BRANCH_NODEINCLUSIVE_BRANCH_FORK_NODE 是不是就是 isBranchNode如果是的话貌似不用 swtich而是 if else 分类处理呢
// switch (nodeType) {
// case START_NODE:
// case APPROVE_NODE:
// case COPY_NODE:
// case PARALLEL_BRANCH_JOIN_NODE:
// case INCLUSIVE_BRANCH_JOIN_NODE: {
// SequenceFlow sequenceFlow = buildBpmnSequenceFlow(node.getId(), childNode.getId(), null, null, null);
// process.addFlowElement(sequenceFlow);
// // 递归调用后续节点
// buildAndAddBpmnSequenceFlow(process, childNode, targetNodeId);
// break;
// }
// case PARALLEL_BRANCH_FORK_NODE:
// case CONDITION_BRANCH_NODE:
// case INCLUSIVE_BRANCH_FORK_NODE: {
// // TODO @jason这里 sequenceFlowTargetId 不建议做这样的 default万一可能有 bug 直接弄到对应的 136- 146 会更安全一点
// String sequenceFlowTargetId = (childNode == null || childNode.getId() == null) ? targetNodeId : childNode.getId();
// List<BpmSimpleModelNodeVO> conditionNodes = node.getConditionNodes();
// Assert.notEmpty(conditionNodes, "网关节点的条件节点不能为空");
// for (BpmSimpleModelNodeVO item : conditionNodes) {
// // 构建表达式
// // TODO @jason条件分支的情况下需要分 item 搞的条件 conditionNodes 搞的条件
// String conditionExpression = buildConditionExpression(item);
//
// BpmSimpleModelNodeVO nextNodeOnCondition = item.getChildNode();
// // TODO @jasonisValidNode
// if (nextNodeOnCondition != null && nextNodeOnCondition.getId() != null) {
// // TODO @jason会存在 item.name 未空的情况么这个时候要不要兜底处理拼接
// SequenceFlow sequenceFlow = buildBpmnSequenceFlow(node.getId(), nextNodeOnCondition.getId(),
// item.getId(), item.getName(), conditionExpression);
// process.addFlowElement(sequenceFlow);
// // 递归调用后续节点
// // TODO @jason最好也有个例子嘿嘿S4
// buildAndAddBpmnSequenceFlow(process, nextNodeOnCondition, sequenceFlowTargetId);
// } else {
// SequenceFlow sequenceFlow = buildBpmnSequenceFlow(node.getId(), sequenceFlowTargetId,
// item.getId(), item.getName(), conditionExpression);
// process.addFlowElement(sequenceFlow);
// }
// }
// // 递归调用后续节点 TODO @jason最好有个例子哈
// buildAndAddBpmnSequenceFlow(process, childNode, targetNodeId);
// break;
// }
// default: {
// // TODO 其它节点类型的实现
// }
// }
} }
/** /**

View File

@ -238,7 +238,6 @@ public class BpmModelServiceImpl implements BpmModelService {
saveModelSimpleJson(model.getId(), JsonUtils.toJsonByte(reqVO.getSimpleModel())); saveModelSimpleJson(model.getId(), JsonUtils.toJsonByte(reqVO.getSimpleModel()));
} }
/** /**
* 校验流程表单已配置 * 校验流程表单已配置
* *