From f19ea3233c9bcc93fbc7c5e70f112ee93e698dfa Mon Sep 17 00:00:00 2001 From: "446052889@qq.com" <446052889@qq.com> Date: Thu, 30 Jun 2022 14:18:48 +0800 Subject: [PATCH] =?UTF-8?q?aris=E5=AF=BC=E5=85=A5=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=97=B6=E8=BE=93=E5=87=BA=E5=B1=9E=E6=80=A7=E5=BD=A2=E7=8A=B6?= =?UTF-8?q?=E6=9C=AA=E5=88=A0=E9=99=A4=E3=80=81=E5=B1=9E=E6=80=A7=E6=9C=AA?= =?UTF-8?q?=E8=B5=8B=E5=80=BC=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ....actionsoft.apps.coe.pal.datamigration.jar | Bin 85340 -> 85339 bytes .../datamigration/web/DataMigrationWeb.java | 274 +++++++++--------- 2 files changed, 139 insertions(+), 135 deletions(-) diff --git a/com.actionsoft.apps.coe.pal.datamigration/lib/com.actionsoft.apps.coe.pal.datamigration.jar b/com.actionsoft.apps.coe.pal.datamigration/lib/com.actionsoft.apps.coe.pal.datamigration.jar index 96570bd30588583d126994f9e769c8d4499dfdb2..b029ebdacf29e077de28beb766f9ee4d1b09df8b 100644 GIT binary patch delta 30026 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 idRelationMap, JSONObject elements, ModelModel arisModel, Map> modelObjOccMap, - Map objDefMap) { - // 获取ARIS图形定义与PAL图形定义关系 - Map objDefMappingMap = ModelMappingAPIManager.getInstance().getObjDefMappingMap(); - ObjDefMappingModel objDefMappingModel = objDefMappingMap.get("OT_INFO_CARR-ST_DOC"); - // 获取当前ARIS模型下所有的图形信息 - List objOccModels = modelObjOccMap.get(arisModel.getId()); + private void handleShapeInputOutAttr(PALRepositoryModel palModel, JSONObject elements) { // 存放待删除图形的KEY List removeKey = new ArrayList<>(); - for (ObjOccModel objOccModel : objOccModels) { - ObjDefModel objDefModel = objDefMap.get(objOccModel.getDefId());// 形状定义 - // 根据ARIS图形定义信息判断当前模型下的所有形状里是否有输入 输出形状 - if (objDefModel.getTypeNum().equals(objDefMappingModel.getTypeNum()) && objDefModel.getSymbolNum().equals(objDefMappingModel.getSymbolNum())) { - // 如果有输入输出形状 取出关联的PAL模型ID - String shapeId = idRelationMap.get(objOccModel.getId()); - JSONObject inputOrOutObj = elements.getJSONObject(shapeId); - // 遍历所有的PAL形状 根据连线走向判断是输出还是输入 - for (String key : elements.keySet()) { - JSONObject shapeObj = elements.getJSONObject(key); - if ("linker".equals(shapeObj.getString("name"))) { - List attributeModels = CoeDesignerShapeAPIManager.getInstance() - .getValidAttributeModels(wsId, objDefMappingModel.getShapeMethod(), "process", objDefMappingModel.getShapeMethod()); -// System.out.println("所有图形model"); - if (shapeObj.getJSONObject("from").getString("id").equals(shapeId)) { - // 作为输入属性 - System.out.println("有输入属性"); - attributeModels = attributeModels.stream().filter(item -> Constant.METHOD_INPUT.equals(item.getKey())).collect(Collectors.toList()); - PALMethodAttributeModel attributeModel = attributeModels.get(0); - JSONObject inputObj = new JSONObject(); - inputObj.put("value", inputOrOutObj.getString("text")); - inputObj.put("key", attributeModel.getKey()); - inputObj.put("isRequired", attributeModel.getIsRequired()); - inputObj.put("ref", attributeModel.getRef()); - inputObj.put("readonly", attributeModel.getReadonly()); - inputObj.put("scope", attributeModel.getScope()); - inputObj.put("name", attributeModel.getTitle()); - inputObj.put("id", attributeModel.getKey()); - inputObj.put("textarea", attributeModel.getType()); - inputObj.put("groupPath", attributeModel.getGroupPath()); - inputObj.put("desc", attributeModel.getDesc()); - // 将转化后的信息放到相应位置 - String toShapeId = shapeObj.getJSONObject("to").getString("id"); - JSONArray dataAttributes = elements.getJSONObject(toShapeId).getJSONArray("dataAttributes"); - if (!dataAttributes.isEmpty() && dataAttributes.size() > 0) { - for (Object attribute : dataAttributes) { - JSONObject obj = (JSONObject) attribute; - if (obj.containsKey("attributesJsonArray")) { - JSONArray attributesJsonArray = obj.getJSONArray("attributesJsonArray"); - JSONArray tempJSONArr = attributesJsonArray.stream() - .filter(item -> ((JSONObject) item).getString("key").equals(attributeModel.getKey())) - .collect(Collectors.toCollection(JSONArray::new)); - if (tempJSONArr.size() > 0) { - for (Object o : attributesJsonArray) { - if (attributeModel.getKey().equals(((JSONObject) o).getString("key"))) { - String tempValue = new StringBuffer(((JSONObject) o).getString("value")) - .append(",").append(inputOrOutObj.getString("text")).toString(); - ((JSONObject) o).put("value", tempValue); - } - } - } else { - obj.getJSONArray("attributesJsonArray").add(inputObj); - } - break; - } else { - obj.put("attributesJsonArray", new JSONArray()); - obj.getJSONArray("attributesJsonArray").add(inputObj); - break; + Map> nextShapeMap = new HashMap<>();// 记录当前形状的下一个(多个)形状 + Map> prevShapeMap = new HashMap<>();// 记录当前形状的上一个(多个)形状 + for (String key : elements.keySet()) { + JSONObject shapeObj = elements.getJSONObject(key); + if ("linker".equals(shapeObj.getString("name"))) { + // 输入 + String shapeId = shapeObj.getString("id"); + // 查找入线 + String fromId = shapeObj.getJSONObject("from").getString("id"); + String toId = shapeObj.getJSONObject("to").getString("id"); + // 记录from->to Map + if (!nextShapeMap.containsKey(fromId)) { + nextShapeMap.put(fromId, new HashSet<>()); + } + nextShapeMap.get(fromId).add(toId); + + if (!prevShapeMap.containsKey(toId)) { + prevShapeMap.put(toId, new HashSet<>()); + } + prevShapeMap.get(toId).add(fromId); + } + } + + Map> shapeInputMap = new HashMap<>();// 记录形状的所有输出 + Map> shapeOutMap = new HashMap<>();// 记录形状的所有输入 + for (String key : elements.keySet()) { + JSONObject shapeObj = elements.getJSONObject(key); + if (!"linker".equals(shapeObj.getString("name"))) { + // 输入 + String shapeId = shapeObj.getString("id"); + // 查找入线(输入) + if (prevShapeMap.containsKey(shapeId)) { + for (Map.Entry> entry : prevShapeMap.entrySet()) { + if (key.equals(entry.getKey())) { + Set prevShapeIds = entry.getValue(); + for (String prevShapeId : prevShapeIds) { + JSONObject prevShape = elements.getJSONObject(prevShapeId); + if ("document".equals(prevShape.getString("name"))) { + if (!shapeInputMap.containsKey(shapeId)) { + shapeInputMap.put(shapeId, new HashSet<>()); } + shapeInputMap.get(shapeId).add(prevShape.getString("text")); } } - // 删除图形与连线 - removeKey.add(key); - removeKey.add(shapeId); - printMsg("输入属性【" + inputOrOutObj.getString("text") + "】处理完毕"); -// }else if (shapeObj.getJSONObject("to").getString("id").equals(shapeId)) { -// by shang --处理输出属性,不是else } - if (shapeObj.getJSONObject("to").getString("id").equals(shapeId)) { - // 作为输出属性 - System.out.println("有输出属性"); -// 输出属性,暂时写死为out,和常量没对应上,原因待解决 - attributeModels = attributeModels.stream().filter(item -> Constant.METHOD_OUTPUT.equals(item.getKey())).collect(Collectors.toList()); -// attributeModels = attributeModels.stream().filter(item -> "out".equals(item.getKey())).collect(Collectors.toList()); - if (attributeModels.size() == 0) { - continue; - } - PALMethodAttributeModel attributeModel = attributeModels.get(0); - JSONObject outObj = new JSONObject(); - outObj.put("value", inputOrOutObj.getString("text")); - outObj.put("key", attributeModel.getKey()); - outObj.put("isRequired", attributeModel.getIsRequired()); - outObj.put("ref", attributeModel.getRef()); - outObj.put("readonly", attributeModel.getReadonly()); - outObj.put("scope", attributeModel.getScope()); - outObj.put("name", attributeModel.getTitle()); - outObj.put("id", attributeModel.getKey()); - outObj.put("textarea", attributeModel.getType()); - outObj.put("groupPath", attributeModel.getGroupPath()); - outObj.put("desc", attributeModel.getDesc()); - // 将转化后的信息放到相应位置 - String fromShapeId = shapeObj.getJSONObject("from").getString("id"); - JSONArray dataAttributes = elements.getJSONObject(fromShapeId).getJSONArray("dataAttributes"); - if (!dataAttributes.isEmpty() && dataAttributes.size() > 0) { - for (Object attribute : dataAttributes) { - JSONObject obj = (JSONObject) attribute; - if (obj.containsKey("attributesJsonArray")) { - JSONArray attributesJsonArray = obj.getJSONArray("attributesJsonArray"); - JSONArray tempJSONArr = attributesJsonArray.stream() - .filter(item -> ((JSONObject) item).getString("key").equals(attributeModel.getKey())) - .collect(Collectors.toCollection(JSONArray::new)); - if (tempJSONArr.size() > 0) { - for (Object o : attributesJsonArray) { - if (attributeModel.getKey().equals(((JSONObject) o).getString("key"))) { - String tempValue = new StringBuffer(((JSONObject) o).getString("value")) - .append(",").append(inputOrOutObj.getString("text")).toString(); - ((JSONObject) o).put("value", tempValue); - } - } - } else { - obj.getJSONArray("attributesJsonArray").add(outObj); - } - break; - } else { - obj.put("attributesJsonArray", new JSONArray()); - obj.getJSONArray("attributesJsonArray").add(outObj); - break; + } + } + // 查找出线 + if (nextShapeMap.containsKey(shapeId)) { + for (Map.Entry> entry : nextShapeMap.entrySet()) { + if (key.equals(entry.getKey())) { + Set nextShapeIds = entry.getValue(); + for (String nextShapeId : nextShapeIds) { + JSONObject nextShape = elements.getJSONObject(nextShapeId); + if ("document".equals(nextShape.getString("name"))) { + if (!shapeOutMap.containsKey(shapeId)) { + shapeOutMap.put(shapeId, new HashSet<>()); } + shapeOutMap.get(shapeId).add(nextShape.getString("text")); } } - // 删除图形与连线 - removeKey.add(key); - removeKey.add(shapeId); - printMsg("输出属性【" + inputOrOutObj.getString("text") + "】处理完毕"); } } } } } + + + for (String key : elements.keySet()) { + JSONObject shapeObj = elements.getJSONObject(key); + if ("linker".equals(shapeObj.getString("name"))) { + JSONObject from = elements.getJSONObject(shapeObj.getJSONObject("from").getString("id")); + if ("document".equals(from.getString("name"))) { + removeKey.add(key); + removeKey.add(from.getString("id")); + } + JSONObject to = elements.getJSONObject(shapeObj.getJSONObject("to").getString("id")); + if ("document".equals(to.getString("name"))) { + removeKey.add(key); + removeKey.add(to.getString("id")); + } + } + } + // 删除画布上的输入输出和其连线 removeKey.stream().forEach(key -> elements.remove(key)); + + Map attrMap = new HashMap<>(); + JSONObject attrs1 = ShapeUtil.getProcessUseShapeMethodAttrByShapeName(palModel.getWsId(), palModel.getMethodId(), palModel.getMethodId(), "method_service_node"); + attrMap.put("method_service_node", attrs1); + JSONObject attrs2 = ShapeUtil.getProcessUseShapeMethodAttrByShapeName(palModel.getWsId(), palModel.getMethodId(), palModel.getMethodId(), "method_service_node4"); + attrMap.put("method_service_node4", attrs2); + JSONObject attrs3 = ShapeUtil.getProcessUseShapeMethodAttrByShapeName(palModel.getWsId(), palModel.getMethodId(), palModel.getMethodId(), "method_approval_node"); + attrMap.put("method_approval_node", attrs3); + JSONObject attrs4 = ShapeUtil.getProcessUseShapeMethodAttrByShapeName(palModel.getWsId(), palModel.getMethodId(), palModel.getMethodId(), "method_approval_node3"); + attrMap.put("method_approval_node3", attrs4); + + for (String key : elements.keySet()) { + JSONObject shapeObj = elements.getJSONObject(key); + if (!"linker".equals(shapeObj.getString("name"))) { + if (attrMap.containsKey(shapeObj.getString("name"))) { + JSONObject attrs = attrMap.get(shapeObj.getString("name")); + if (shapeInputMap.containsKey(key)) {// 有输入属性 + // 输入属性 + if (attrs != null && attrs.size() > 0 && attrs.containsKey(Constant.METHOD_INPUT)) { + JSONObject attrObj = JSONObject.parseObject(attrs.getJSONObject(Constant.METHOD_INPUT).toString()); + List contentList = new ArrayList<>(shapeInputMap.get(key)); + Collections.sort(contentList); + attrObj.put("value", StringUtils.join(contentList, ",")); + JSONArray dataAttributes = shapeObj.getJSONArray("dataAttributes"); + if (!dataAttributes.isEmpty() && dataAttributes.size() > 0) { + for (Object attribute : dataAttributes) { + JSONObject obj = (JSONObject) attribute; + if (obj.containsKey("attributesJsonArray")) { + JSONArray attributesJsonArray = obj.getJSONArray("attributesJsonArray"); + attributesJsonArray.add(attrObj); + printMsg("流程" + palModel.getName() + "的节点" + shapeObj.getString("text") + "输入属性内容" + attrObj.getString("value")); + } + } + } + } else { + printMsg("流程" + palModel.getName() + "的节点" + shapeObj.getString("text") + "没有配置输入属性"); + } + } + if (shapeOutMap.containsKey(key)) {// 有输出属性 + // 输出属性 + if (attrs != null && attrs.size() > 0 && attrs.containsKey(Constant.METHOD_OUTPUT)) { + JSONObject attrObj = JSONObject.parseObject(attrs.getJSONObject(Constant.METHOD_OUTPUT).toString()); + List contentList = new ArrayList<>(shapeOutMap.get(key)); + Collections.sort(contentList); + attrObj.put("value", StringUtils.join(contentList, ",")); + JSONArray dataAttributes = shapeObj.getJSONArray("dataAttributes"); + if (!dataAttributes.isEmpty() && dataAttributes.size() > 0) { + for (Object attribute : dataAttributes) { + JSONObject obj = (JSONObject) attribute; + if (obj.containsKey("attributesJsonArray")) { + JSONArray attributesJsonArray = obj.getJSONArray("attributesJsonArray"); + attributesJsonArray.add(attrObj); + printMsg("流程" + palModel.getName() + "的节点" + shapeObj.getString("text") + "输出属性内容" + attrObj.getString("value")); + } + } + } + } else { + printMsg("流程" + palModel.getName() + "的节点" + shapeObj.getString("text") + "没有配置输出属性"); + } + } + + } + } + } } /**