瀏覽代碼

流程编辑器逻辑修改

zhenglingfeng 8 年之前
父節點
當前提交
a808a91171

+ 14 - 4
src/main/java/com/yihu/hos/system/service/ProcessEditor.java

@ -22,6 +22,7 @@ public class ProcessEditor {
    private StringBuilder bodyBuilder = new StringBuilder();
    private List<String> packageList = new ArrayList<>();
    private StringBuilder otherRouteBuilder = new StringBuilder();
    private StringBuilder preferBuilder = new StringBuilder();
    public String generate(String javaName, String packageName) throws IOException {
        Boolean isFirstNodeFlg = true;
@ -30,8 +31,8 @@ public class ProcessEditor {
//        packageBuilder.append("import org.apache.camel.Exchange;\n");
        addPackageList("import org.apache.camel.builder.RouteBuilder;\n");
        bodyBuilder.append("public class "+javaName+" extends RouteBuilder {\n");
        bodyBuilder.append("public void configure() throws Exception {\n");
        preferBuilder.append("public class "+javaName+" extends RouteBuilder {\n");
        preferBuilder.append("public void configure() throws Exception {\n");
        String nodeName = "";
        while(nodeIt.hasNext()) {
            if (isFirstNodeFlg) {
@ -56,7 +57,7 @@ public class ProcessEditor {
        StringBuilder packageBuilder = new StringBuilder();
        packageBuilder.append("package " + packageName + ";\n\n");
        packageList.forEach(packageBuilder::append);
        allBuilder.append(packageBuilder).append(bodyBuilder);
        allBuilder.append(packageBuilder).append(preferBuilder).append(bodyBuilder);
        System.out.println(allBuilder.toString());
        return allBuilder.toString();
    }
@ -67,7 +68,7 @@ public class ProcessEditor {
        String value = node.get("value").asText();
        String name = node.get("name").asText();
        StringBuilder bodyBuilderTemp = new StringBuilder();
        if (nodeType.equals("default")) {
        if (nodeType.equals("start")) {
            bodyBuilder.append("from(\"");
            bodyBuilder.append(value + "\")");
            if (!StringUtil.isEmpty(code)) {
@ -91,6 +92,8 @@ public class ProcessEditor {
            aggregate(value, bodyBuilderTemp);
        } else if (nodeType.equals("multicast")) {
            multicast(value, nodeName, bodyBuilderTemp);
        } else if (nodeType.equals("format")) {
            format(value, nodeName, bodyBuilderTemp);
        } else {
//                    bodyBuilder.append("\n.setHeader(Exchange.HTTP_METHOD, constant(\"POST\"))");
            bodyBuilderTemp.append("\n.to(\"");
@ -172,6 +175,13 @@ public class ProcessEditor {
        builder.append("\n.multicast().stopOnException().to("+directs+").end()");
    }
    public void format(String value, String nodeName, StringBuilder builder) {
        addPackageList("import org.apache.camel.model.dataformat.XmlJsonDataFormat;\n");
        preferBuilder.append("XmlJsonDataFormat xmlJsonFormat = new XmlJsonDataFormat();\n");
        builder.append("\n."+value + "(xmlJsonFormat)");
    }
    public void addPackageList(String pack) {
        if (!packageList.contains(pack)) {
            packageList.add(pack);

+ 56 - 98
src/main/java/com/yihu/hos/system/service/ProcessManager.java

@ -66,12 +66,21 @@ public class ProcessManager {
            List<ProcessResultModel> resultModelList = appServiceMap.get(app.getId());
            List<ProcessResultModel> resultModelListListTemp = new ArrayList<>();
            if (app.getName().equals("起始端点")) {
                for (ProcessResultModel resultModel : resultModelList) {
                    resultModel.setNodeType("default");
                    resultModel.setNodeType("start");
                    resultModelListListTemp.add(resultModel);
                }
                jsonObject.put("list", resultModelListListTemp);
                jsonArray.add(0, jsonObject);
            } else if (app.getName().equals("结束端点")) {
                for (ProcessResultModel resultModel : resultModelList) {
                    resultModel.setNodeType("end");
                    resultModelListListTemp.add(resultModel);
                }
                jsonObject.put("list", resultModelListListTemp);
                jsonArray.add(1, jsonObject);
            } else {
                resultModelListListTemp = resultModelList;
                jsonObject.put("list", resultModelListListTemp);
@ -102,6 +111,18 @@ public class ProcessManager {
    public Result getAllProcessor(String processorName) throws Exception {
        List<SystemServiceFlowProcessor> processorList = processorDao.getListByName(processorName);
        List<ProcessResultModel> resultModelList = new ArrayList<>();
        ProcessResultModel json2xml = new ProcessResultModel();
        json2xml.setName("json转xml格式转换器");
        json2xml.setValue("unmarshal");
        json2xml.setNodeType("format");
        ProcessResultModel xml2json = new ProcessResultModel();
        xml2json.setName("xml转json格式转换器");
        xml2json.setValue("marshal");
        xml2json.setNodeType("format");
        resultModelList.add(json2xml);
        resultModelList.add(xml2json);
        for (SystemServiceFlowProcessor processor : processorList) {
            ProcessResultModel resultModel = new ProcessResultModel();
            resultModel.setName(processor.getName());
@ -122,115 +143,52 @@ public class ProcessManager {
        processDao.saveEntity(process);
    }
    public static void main(String[] args) throws Exception {
    public void main(String[] args) throws Exception {
        String flowJsonStr = "{\n" +
                "    \"nodes\": {\n" +
                "        \"esb_node_0\": {\n" +
                "            \"name\": \"SDf\",\n" +
                "            \"value\": \"sd\",\n" +
                "            \"nodeType\": \"default\"\n" +
                "        },\n" +
                "        \"esb_node_1\": {\n" +
                "            \"name\": \"crawler转换器\",\n" +
                "            \"value\": \"CrawlerProcessor0\",\n" +
                "        \"node_1\": {\n" +
                "            \"name\": \"Quartz\",\n" +
                "            \"value\": \"quartz://myGroup/myTimerName?cron=0/3 * * * * ?\",\n" +
                "            \"nodeType\": \"start\"\n" +
                "        },\n" +
                "        \"node_2\": {\n" +
                "            \"name\": \"DefaultHttpProcessor0\",\n" +
                "            \"value\": \"com.yihu.hos.broker.common.processor.DefaultHttpProcessor\",\n" +
                "\t\t\t\"param\": \"{\\\"jobId\\\":\\\"5ad5c11655d443c30155d477a6b10000\\\"}\",\n" +
                "            \"nodeType\": \"processor\"\n" +
                "        },\n" +
                "        \"esb_node_2\": {\n" +
                "            \"name\": \"判断\",\n" +
                "            \"value\": \"\",\n" +
                "            \"nodeType\": \"judgement\"\n" +
                "        },\n" +
                "        \"esb_node_3\": {\n" +
                "            \"name\": \"循环\",\n" +
                "            \"value\": \"\",\n" +
                "            \"nodeType\": \"circle\"\n" +
                "        },\n" +
                "        \"esb_node_4\": {\n" +
                "            \"name\": \"全流程-用户信息\",\n" +
                "            \"value\": \"全流程-用户信息\",\n" +
                "            \"nodeType\": \"service\"\n" +
                "        },\n" +
                "        \"esb_node_5\": {\n" +
                "            \"name\": \"全流程-就诊信息\",\n" +
                "            \"value\": \"jetty:http://localhost:8080/clinicInfo\",\n" +
                "        \"node_3\": {\n" +
                "            \"name\": \"Crawler0\",\n" +
                "            \"value\": \"http4://localhost:8088/crawler/patientList?method=post\",\n" +
                "            \"nodeType\": \"service\"\n" +
                "        },\n" +
                "        \"esb_node_6\": {\n" +
                "            \"name\": \"分流\",\n" +
                "            \"value\": \"\",\n" +
                "            \"nodeType\": \"multicast\"\n" +
                "\t\t\"node_4\": {\n" +
                "            \"name\": \"xml2json\",\n" +
                "            \"value\": \"marshal\",\n" +
                "            \"nodeType\": \"format\"\n" +
                "        },\n" +
                "        \"esb_node_7\": {\n" +
                "            \"name\": \"crawler转换器\",\n" +
                "            \"value\": \"CrawlerProcessor0\",\n" +
                "            \"nodeType\": \"processor\"\n" +
                "        },\n" +
                "        \"esb_node_8\": {\n" +
                "            \"name\": \"crawler转换器\",\n" +
                "            \"value\": \"CrawlerProcessor0\",\n" +
                "            \"nodeType\": \"processor\"\n" +
                "        },\n" +
                "        \"esb_node_9\": {\n" +
                "            \"name\": \"crawler转换器\",\n" +
                "            \"value\": \"CrawlerProcessor0\",\n" +
                "            \"nodeType\": \"processor\"\n" +
                "        },\n" +
                "        \"esb_node_10\": {\n" +
                "            \"name\": \"聚合\",\n" +
                "            \"value\": \"\",\n" +
                "            \"nodeType\": \"aggregate\"\n" +
                "\t\t\"node_5\": {\n" +
                "            \"name\": \"Stream\",\n" +
                "            \"value\": \"stream:out\",\n" +
                "            \"nodeType\": \"end\"\n" +
                "        }\n" +
                "    },\n" +
                "    \"lines\": {\n" +
                "        \"esb_line_0\": {\n" +
                "            \"from\": \"esb_node_0\",\n" +
                "            \"to\": \"esb_node_1\",\n" +
                "            \"value\": \"\"\n" +
                "        },\n" +
                "        \"esb_line_1\": {\n" +
                "            \"from\": \"esb_node_1\",\n" +
                "            \"to\": \"esb_node_2\",\n" +
                "            \"value\": \"\"\n" +
                "        },\n" +
                "        \"esb_line_2\": {\n" +
                "            \"from\": \"esb_node_2\",\n" +
                "            \"to\": \"esb_node_3\",\n" +
                "            \"value\": \"correct\"\n" +
                "        },\n" +
                "        \"esb_line_3\": {\n" +
                "            \"from\": \"esb_node_3\",\n" +
                "            \"to\": \"esb_node_5\",\n" +
                "            \"value\": \"自定义内容\"\n" +
                "        },\n" +
                "        \"esb_line_4\": {\n" +
                "            \"from\": \"esb_node_3\",\n" +
                "            \"to\": \"esb_node_4\",\n" +
                "            \"value\": \"自定义内容\"\n" +
                "        },\n" +
                "        \"esb_line_5\": {\n" +
                "            \"from\": \"esb_node_2\",\n" +
                "            \"to\": \"esb_node_6\",\n" +
                "            \"value\": \"自定义内容\"\n" +
                "        },\n" +
                "        \"esb_line_6\": {\n" +
                "            \"from\": \"esb_node_6\",\n" +
                "            \"to\": \"esb_node_8\",\n" +
                "            \"value\": \"\"\n" +
                "        \"line_1\": {\n" +
                "            \"from\": \"node_1\",\n" +
                "            \"to\": \"node_2\"\n" +
                "        },\n" +
                "        \"esb_line_7\": {\n" +
                "            \"from\": \"esb_node_6\",\n" +
                "            \"to\": \"esb_node_7\",\n" +
                "            \"value\": \"\"\n" +
                "        \"line_2\": {\n" +
                "            \"from\": \"node_2\",\n" +
                "            \"to\": \"node_3\"\n" +
                "        },\n" +
                "        \"esb_line_8\": {\n" +
                "            \"from\": \"esb_node_6\",\n" +
                "            \"to\": \"esb_node_9\",\n" +
                "            \"value\": \"\"\n" +
                "        \"line3\": {\n" +
                "            \"from\": \"node_3\",\n" +
                "            \"to\": \"node_4\"\n" +
                "        },\n" +
                "        \"esb_line_9\": {\n" +
                "            \"from\": \"esb_node_9\",\n" +
                "            \"to\": \"esb_node_10\",\n" +
                "            \"value\": \"\"\n" +
                "\t\t\"line4\": {\n" +
                "            \"from\": \"node_4\",\n" +
                "            \"to\": \"node_5\"\n" +
                "        }\n" +
                "    }\n" +
                "}";
@ -256,7 +214,7 @@ public class ProcessManager {
            Map.Entry<String, JsonNode> map = nodeIterator.next();
            nodeMap.put(map.getKey(), map.getValue());
            String type = map.getValue().get("nodeType").asText();
            if (StringUtil.isEmpty(root) && type.equals("default")) {
            if (StringUtil.isEmpty(root) && type.equals("start")) {
                root = map.getKey();
            }
            mDG.add(map.getKey());