学校网站设计实验报告,互动营销的案例有哪些,重庆cms建站系统,做网站好看的背景图片更多ruoyi-nbcio功能请看演示系统
gitee源代码地址
前后端代码#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio
演示地址#xff1a;RuoYi-Nbcio后台管理系统
这个章节来完成并行网关与排它条件网关的功能
1、前端 目前就修改了排它条件网关的前端条件部分#xf…更多ruoyi-nbcio功能请看演示系统
gitee源代码地址
前后端代码 https://gitee.com/nbacheng/ruoyi-nbcio
演示地址RuoYi-Nbcio后台管理系统
这个章节来完成并行网关与排它条件网关的功能
1、前端 目前就修改了排它条件网关的前端条件部分简化条件公式考虑与原有流程设计器兼容。 主要是以下部分修改 !-- 条件 --section classcondition-pane v-ifvalue isConditionNode()!-- 字符串条件 --el-input placeholder请输入条件表达式 v-modelpconditionstemplate slotprepend条件表达式:/template/el-input/section/*** 条件节点确认保存得回调*/conditionNodeComfirm() {this.properties.conditions this.pconditions// 发起人虽然是条件 但是这里把发起人放到外部单独判断this.properties.initiator this.initiator[depuser]//this.initiator[depuser] (nodeContent [发起人: ${this.getOrgSelectLabel(condition)}] \n nodeContent)this.$emit(confirm, this.properties, this.pconditions || 请设置条件表达式);this.visible false;},/*** 初始化条件节点数据*/initConditionNodeData(){this.pconditions this.value.content},
2、排它条件网关后端修改
String createExclusiveGatewayBuilder(String formId, JSONObject flowNode) throws InvocationTargetException, IllegalAccessException {//String name flowNode.getString(nodeName);String exclusiveGatewayId id(exclusiveGateway);ExclusiveGateway exclusiveGateway new ExclusiveGateway();exclusiveGateway.setId(exclusiveGatewayId);exclusiveGateway.setName(排它条件网关);ddProcess.addFlowElement(exclusiveGateway);ddProcess.addFlowElement(connect(formId, exclusiveGatewayId));if (Objects.isNull(flowNode.getJSONArray(conditionNodes)) Objects.isNull(flowNode.getJSONObject(childNode))) {return exclusiveGatewayId;}ListJSONObject flowNodes Optional.ofNullable(flowNode.getJSONArray(conditionNodes)).map(e - e.toJavaList(JSONObject.class)).orElse(Collections.emptyList());ListString incoming Lists.newArrayListWithCapacity(flowNodes.size());ListJSONObject conditions Lists.newCopyOnWriteArrayList();for (JSONObject element : flowNodes) {JSONObject childNode element.getJSONObject(childNode);JSONObject properties element.getJSONObject(properties);String nodeName properties.getString(title);String expression properties.getString(conditions);if (Objects.isNull(childNode)) {incoming.add(exclusiveGatewayId);JSONObject condition new JSONObject();condition.fluentPut(nodeName, nodeName).fluentPut(expression, expression);conditions.add(condition);continue;}// 只生成一个任务同时设置当前任务的条件childNode.put(incoming, Collections.singletonList(exclusiveGatewayId));String identifier create(exclusiveGatewayId, childNode);ListSequenceFlow flows ddSequenceFlows.stream().filter(flow - StringUtils.equals(exclusiveGatewayId, flow.getSourceRef())).collect(Collectors.toList());flows.stream().forEach(e - {if (StringUtils.isBlank(e.getName()) StringUtils.isNotBlank(nodeName)) {e.setName(nodeName);}// 设置条件表达式if (Objects.isNull(e.getConditionExpression()) StringUtils.isNotBlank(expression)) {e.setConditionExpression(expression);}});if (Objects.nonNull(identifier)) {incoming.add(identifier);}}JSONObject childNode flowNode.getJSONObject(childNode);if (Objects.nonNull(childNode)) {if (incoming null || incoming.isEmpty()) {return create(exclusiveGatewayId, childNode);} else {// 所有 service task 连接 end exclusive gatewaychildNode.put(incoming, incoming);FlowElement flowElement ddBpmnModel.getFlowElement(incoming.get(0));// 1.0 先进行边连接, 暂存 nextNodeJSONObject nextNode childNode.getJSONObject(childNode);childNode.put(childNode, null);String identifier create(flowElement.getId(), childNode);for (int i 1; i incoming.size(); i) {ddProcess.addFlowElement(connect(incoming.get(i), identifier));}// 针对 gateway 空任务分支 添加条件表达式if (!conditions.isEmpty()) {FlowElement flowElement1 ddBpmnModel.getFlowElement(identifier);// 获取从 gateway 到目标节点 未设置条件表达式的节点ListSequenceFlow flows ddSequenceFlows.stream().filter(flow - StringUtils.equals(flowElement1.getId(), flow.getTargetRef())).filter(flow - StringUtils.equals(flow.getSourceRef(), exclusiveGatewayId)).collect(Collectors.toList());flows.stream().forEach(sequenceFlow - {if (!conditions.isEmpty()) {JSONObject condition conditions.get(0);String nodeName condition.getString(content);String expression condition.getString(expression);if (StringUtils.isBlank(sequenceFlow.getName()) StringUtils.isNotBlank(nodeName)) {sequenceFlow.setName(nodeName);}// 设置条件表达式if (Objects.isNull(sequenceFlow.getConditionExpression()) StringUtils.isNotBlank(expression)) {sequenceFlow.setConditionExpression(expression);}conditions.remove(0);}});}// 1.1 边连接完成后在进行 nextNode 创建if (Objects.nonNull(nextNode)) {return create(identifier, nextNode);} else {return identifier;}}}return exclusiveGatewayId;}
4、效果图如下 还是有bug后面的审批人连接有问题后续修改吧。