瀏覽代碼

流程编辑器逻辑修改

zhenglingfeng 8 年之前
父節點
當前提交
9a0b715ca6

+ 9 - 9
src/main/java/com/yihu/hos/common/graph/DGraphImpl.java

@ -92,12 +92,12 @@ public class DGraphImpl<V> implements IDGraph<V> {
    /**
     * 广度优先的迭代器
     */
    private class BFSIterator implements Iterator<V> {
    public class BFSIterator implements Iterator<V> {
        /**已访问过的顶点列表*/
        private List<V> mVisitList = null;
        /**待访问的顶点队列*/
        private Queue<V> mVQueue = null;
        
        /**
         * 构造广度优先迭代器
         * @param root
@ -105,11 +105,11 @@ public class DGraphImpl<V> implements IDGraph<V> {
        public BFSIterator(V root) {
            mVisitList = new LinkedList<V>();
            mVQueue = new LinkedList<V>();
            
            //将初始节点入队列
            mVQueue.offer(root);
        }
        
        @Override
        public boolean hasNext() {
            if(mVQueue.size() > 0) {
@ -123,7 +123,7 @@ public class DGraphImpl<V> implements IDGraph<V> {
        public V next() {
            //1.取队列元素
            V v = mVQueue.poll();
            
            if(v != null) {
                //2.将此元素的邻接边中对应顶点入队列,这些顶点需要符合以下条件:
                //1)没访问过;
@ -139,11 +139,11 @@ public class DGraphImpl<V> implements IDGraph<V> {
                        }
                    }
                }
                
                //3.将此顶点添加到已访问过的顶点列表中
                mVisitList.add(v);
            }
            
            //4.返回出队列的元素
            return v;
        }
@ -152,9 +152,9 @@ public class DGraphImpl<V> implements IDGraph<V> {
        public void remove() {
            // 暂时不实现
        }
        
    }
    
    /**顶点列表,由于会经常进行插入删除,使用链表队列*/
    private LinkedList<VE> mVEList;
    /**

+ 5 - 5
src/main/java/com/yihu/hos/system/controller/ProcessController.java

@ -31,9 +31,9 @@ public class ProcessController  extends BaseController {
    @RequestMapping(value = "/getAllEndpoints", method = RequestMethod.GET)
    @ResponseBody
    public Result getEndpoints(String endpointName) {
    public Result getAllEndpoints(String endpointName) {
        try {
            return processManager.getEndpoints(endpointName);
            return processManager.getAllEndpoints(endpointName);
        } catch (Exception e) {
            return Result.error("查找端点失败");
        }
@ -53,11 +53,11 @@ public class ProcessController  extends BaseController {
    @ResponseBody
    public Result formatJson(String code, String name, String positionJson, String flowJson) {
        try {
            String fileName = processManager.generateFile(code, name, flowJson);
            if (StringUtil.isEmpty(fileName)) {
            Integer flowId = processManager.generateFlow(code, name, flowJson);
            if (flowId == null) {
                return Result.error("生成业务流程失败");
            }
            processManager.saveProcess(code, name, fileName, positionJson);
            processManager.saveProcess(code, name, flowId, positionJson);
            return Result.error("生成业务流程成功");
        } catch (Exception e) {

+ 9 - 0
src/main/java/com/yihu/hos/system/model/ProcessResultModel.java

@ -8,6 +8,7 @@ public class ProcessResultModel implements java.io.Serializable {
	private String name;
	private String value;
	private String nodeType;
	public String getName() {
		return name;
@ -24,4 +25,12 @@ public class ProcessResultModel implements java.io.Serializable {
	public void setValue(String value) {
		this.value = value;
	}
	public String getNodeType() {
		return nodeType;
	}
	public void setNodeType(String nodeType) {
		this.nodeType = nodeType;
	}
}

+ 5 - 5
src/main/java/com/yihu/hos/system/model/SystemServiceFlowProcess.java

@ -4,7 +4,7 @@ public class SystemServiceFlowProcess implements java.io.Serializable {
    private Integer id;
    private String code;
    private String name;
    private String fileName;
    private Integer flowId;
    private String result;
    public Integer getId() {
@ -39,11 +39,11 @@ public class SystemServiceFlowProcess implements java.io.Serializable {
        this.result = result;
    }
    public String getFileName() {
        return fileName;
    public Integer getFlowId() {
        return flowId;
    }
    public void setFileName(String fileName) {
        this.fileName = fileName;
    public void setFlowId(Integer flowId) {
        this.flowId = flowId;
    }
}

+ 25 - 26
src/main/java/com/yihu/hos/system/service/FlowManager.java

@ -644,7 +644,7 @@ public class FlowManager {
        return null;
    }
    public Boolean sendAddRoute(String code, String name, String javaName, String packageName, String fileInfo) throws Exception {
    public Integer sendAddRoute(String code, String name, String javaName, String packageName, String fileInfo) throws Exception {
        String fileName = javaName + ".java";
        String filePath = this.getClass().getProtectionDomain().getClassLoader().getResource("").getPath() + "temp/" + fileName;
@ -652,20 +652,20 @@ public class FlowManager {
        if (succ) {
            fileName = GridFSUtil.uploadFile(filePath, fileName, null);
        } else {
            return false;
            return null;
        }
        SystemServiceFlow systemServiceFlow = new SystemServiceFlow();
        systemServiceFlow.setName(name);
        systemServiceFlow.setCode(code);
        systemServiceFlow.setCreateDate(new Date());
        systemServiceFlow.setValid(1);
        systemServiceFlow.setFileType(ServiceFlowConstant.JAVA);
        flowDao.saveEntity(systemServiceFlow);
        if (fileName != null) {
            SystemServiceFlow systemServiceFlow = new SystemServiceFlow();
            systemServiceFlow.setName(name);
            systemServiceFlow.setCode(code);
            systemServiceFlow.setCreateDate(new Date());
            systemServiceFlow.setValid(1);
            systemServiceFlow.setFileType(ServiceFlowConstant.JAVA);
            flowDao.saveEntity(systemServiceFlow);
        String enFileName = DES.encrypt(fileName, DES.COMMON_PASSWORD);//加密文件名
            String enFileName = DES.encrypt(fileName, DES.COMMON_PASSWORD);//加密文件名
        if (fileName != null) {
            ServiceFlow serviceFlow = new ServiceFlow();
            serviceFlow.setRouteCode(code);
            serviceFlow.setFlowType(ServiceFlowConstant.CLASS);
@ -679,24 +679,23 @@ public class FlowManager {
            ArrayList<ServiceFlow.HandleFile> handleFiles = new ArrayList<>();
            handleFiles.add(handleFile);
            serviceFlow.setHandleFiles(handleFiles);
            serviceFlowEventService.serviceFlowModifiedAdd(serviceFlow);
            serviceFlowEventService.serviceFlowAdded(serviceFlow);
            String enClassName = DES.encrypt(javaName + ".class", DES.COMMON_PASSWORD);//生成加密过的classPath
            SystemServiceFlowClass flowClass = new SystemServiceFlowClass();
            flowClass.setPackageName(packageName);
            flowClass.setClassName(javaName);
            flowClass.setClassPath(enClassName);
            flowClass.setFlowId(systemServiceFlow.getId());
            flowClass.setType(ServiceFlowConstant.FLOW_TYPE_ROUTE);
            flowClass.setIsUpdate("1");
            flowClassDao.saveEntity(flowClass);
            return systemServiceFlow.getId();
        } else {
            System.out.println("生成route的java文件过程出错");
            return false;
            return null;
        }
        String enClassName = DES.encrypt(javaName + ".class", DES.COMMON_PASSWORD);//生成加密过的classPath
        SystemServiceFlowClass flowClass = new SystemServiceFlowClass();
        flowClass.setPackageName(packageName);
        flowClass.setClassName(javaName);
        flowClass.setClassPath(enClassName);
        flowClass.setFlowId(systemServiceFlow.getId());
        flowClass.setType(ServiceFlowConstant.FLOW_TYPE_ROUTE);
        flowClass.setIsUpdate("1");
        flowClassDao.saveEntity(flowClass);
        return true;
    }
    public Integer sendAddProcessor(String jobId, Integer flowId, Long timestamp) throws Exception {

+ 51 - 28
src/main/java/com/yihu/hos/system/service/ProcessEditor.java

@ -1,8 +1,9 @@
package com.yihu.hos.system.service;
import com.fasterxml.jackson.databind.JsonNode;
import com.yihu.hos.common.graph.IDGraph;
import com.yihu.hos.common.graph.Edge;
import com.yihu.hos.common.graph.IDGraph;
import com.yihu.hos.core.datatype.CollectionUtil;
import com.yihu.hos.core.datatype.StringUtil;
import java.io.IOException;
@ -19,16 +20,15 @@ public class ProcessEditor {
    private Iterator<String> nodeIt;
    private IDGraph<String> mDG;
    private StringBuilder bodyBuilder = new StringBuilder();
    private StringBuilder packageBuilder = new StringBuilder();
    private List<String> packageList = new ArrayList<>();
    private StringBuilder otherRouteBuilder = new StringBuilder();
    public String generate(String javaName, String packageName) throws IOException {
        Boolean isFirstNodeFlg = true;
        StringBuilder allBuilder = new StringBuilder();
        packageBuilder.append("package " + packageName + ";\n\n");
//        packageBuilder.append("import org.apache.camel.Exchange;\n");
        packageBuilder.append("import org.apache.camel.builder.RouteBuilder;\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");
@ -40,6 +40,9 @@ public class ProcessEditor {
                bodyBuilder.append(montage(nodeName));
            } else {
                List<Edge<String>> edgeList = mDG.getEdgeList(nodeName);
                if (CollectionUtil.isEmpty(edgeList)) {
                    nodeIt.next();
                }
                for (Edge<String> edge : edgeList) {
                    nodeIt.next();
                    nodeName = edge.getDest();
@ -50,6 +53,9 @@ public class ProcessEditor {
        bodyBuilder.append(";");
        bodyBuilder.append(otherRouteBuilder);
        bodyBuilder.append("\n}\n}");
        StringBuilder packageBuilder = new StringBuilder();
        packageBuilder.append("package " + packageName + ";\n\n");
        packageList.forEach(packageBuilder::append);
        allBuilder.append(packageBuilder).append(bodyBuilder);
        System.out.println(allBuilder.toString());
        return allBuilder.toString();
@ -69,7 +75,8 @@ public class ProcessEditor {
            }
        } else if (nodeType.equals("processor")) {
            String className = value.substring(value.lastIndexOf(".") + 1, value.length());
            packageBuilder.append("import " + value + ";\n");
            addPackageList("import " + value + ";\n");
            JsonNode param = node.get("param");
            if (param == null) {
                bodyBuilderTemp.append("\n.process(new "+className+"())");
@ -89,13 +96,23 @@ public class ProcessEditor {
            bodyBuilderTemp.append("\n.to(\"");
            bodyBuilderTemp.append(value + "\")");
        }
        while (nodeIt.hasNext()) {
            List<Edge<String>> edgeList = mDG.getEdgeList(nodeName);
            if (CollectionUtil.isEmpty(edgeList)) {
                return bodyBuilderTemp;
            }
            for (Edge<String> edge : edgeList) {
                nodeIt.next();
                nodeName = edge.getDest();
                bodyBuilderTemp.append(montage(nodeName));
            }
        }
        return bodyBuilderTemp;
    }
    public void judgement(String value, String nodeName, StringBuilder bodyBuilderTemp) {
        bodyBuilderTemp.append("\n.choice()");
        bodyBuilderTemp.append("\n.when("+value+")");
    public void judgement(String value, String nodeName, StringBuilder builder) {
        builder.append("\n.choice()");
        builder.append("\n.when("+value+")");
        String trueNodeName = "";
        String falseNodeName = "";
        for (Edge<String> edge : mDG.getEdgeList(nodeName)) {
@ -110,29 +127,29 @@ public class ProcessEditor {
            }
        }
        JsonNode node1 = nodeMap.get(trueNodeName);
        JsonNode node2 = nodeMap.get(falseNodeName);
        String firstValue = node1.get("value").asText();
        String secondValue =  node2.get("value").asText();
        bodyBuilderTemp.append("\n.to(\"");
        bodyBuilderTemp.append(firstValue + "\")");
        bodyBuilderTemp.append(".otherwise()");
        bodyBuilderTemp.append("\n.to(\"");
        bodyBuilderTemp.append(secondValue + "\")");
        bodyBuilderTemp.append("\n.end()");
        builder.append("\n.to(\"direct:ja\")");
        builder.append("\n.otherwise()");
        builder.append("\n.to(\"direct:jb\")");
        builder.append("\n.end()");
        StringBuilder trueBuilder = montage(trueNodeName);
        StringBuilder falseBuilder = montage(falseNodeName);
        otherRouteBuilder.append("\nfrom(\"direct:ja\")").append(trueBuilder).append(";");
        otherRouteBuilder.append("\nfrom(\"direct:jb\")").append(falseBuilder).append(";");
    }
    public void split(String value, StringBuilder bodyBuilderTemp) {
        packageBuilder.append("import com.yihu.hos.broker.util.Split;\n");
        bodyBuilderTemp.append("\n.split().method(Split.class, \""+value+"\")");
    public void split(String value, StringBuilder builder) {
        addPackageList("import com.yihu.hos.broker.util.Split;\n");
        builder.append("\n.split().method(Split.class, \""+value+"\")");
    }
    public void aggregate(String value, StringBuilder bodyBuilderTemp) {
        packageBuilder.append("import com.yihu.hos.broker.util.Aggregate;\n");
        bodyBuilderTemp.append("\n.aggregate(header(\""+value+"\"), new Aggregate()).completionSize(3)");
    public void aggregate(String value, StringBuilder builder) {
        addPackageList("import com.yihu.hos.broker.util.Aggregate;\n");
        builder.append("\n.aggregate(header(\""+value+"\"), new Aggregate()).completionSize(3)");
    }
    public void multicast(String value, String nodeName, StringBuilder bodyBuilderTemp) {
    public void multicast(String value, String nodeName, StringBuilder builder) {
        String directs = "";
        int i = 'a';
@ -140,7 +157,7 @@ public class ProcessEditor {
        List<Edge<String>> edgeList = mDG.getEdgeList(nodeName);
        for (Edge<String> edge : edgeList) {
            nodeIt.next();
            String direct = "direct:" + (char)i++;
            String direct = "direct:m" + (char)i++;
            directList.add(direct);
            directs += "\"" + direct + "\",";
            StringBuilder directBuilder = new StringBuilder();
@ -152,7 +169,13 @@ public class ProcessEditor {
        directs = StringUtil.substring(directs, 0, directs.length() - 1);
        bodyBuilderTemp.append("\n.multicast().stopOnException().to("+directs+").end()");
        builder.append("\n.multicast().stopOnException().to("+directs+").end()");
    }
    public void addPackageList(String pack) {
        if (!packageList.contains(pack)) {
            packageList.add(pack);
        }
    }
    public void setCode(String code) {

+ 124 - 29
src/main/java/com/yihu/hos/system/service/ProcessManager.java

@ -37,7 +37,7 @@ public class ProcessManager {
    private ObjectMapper objectMapper = new ObjectMapper();
    public Result getEndpoints(String endpointName) throws Exception {
    public Result getAllEndpoints(String endpointName) throws Exception {
        List<SystemServiceEndpoint> serviceEndpointList = appServiceDao.getListByName(endpointName);
        List<String> appIdList = new ArrayList<>();
@ -46,7 +46,9 @@ public class ProcessManager {
            ProcessResultModel resultModel = new ProcessResultModel();
            resultModel.setName(endpoint.getName());
            resultModel.setValue(endpoint.getEndpoint());
            resultModel.setNodeType("service");
            appIdList.add(endpoint.getAppId());
            List<ProcessResultModel> endpointList;
            if (appServiceMap.get(endpoint.getAppId()) != null) {
                endpointList = appServiceMap.get(endpoint.getAppId());
@ -61,10 +63,21 @@ public class ProcessManager {
        for (SystemApp app : appList) {
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("title", app.getName());
            jsonObject.put("list", appServiceMap.get(app.getId()));
            jsonArray.add(jsonObject);
            List<ProcessResultModel> resultModelList = appServiceMap.get(app.getId());
            List<ProcessResultModel> resultModelListListTemp = new ArrayList<>();
            if (app.getName().equals("常用端点")) {
                for (ProcessResultModel resultModel : resultModelList) {
                    resultModel.setNodeType("default");
                    resultModelListListTemp.add(resultModel);
                }
                jsonObject.put("list", resultModelListListTemp);
                jsonArray.add(0, jsonObject);
            } else {
                resultModelListListTemp = resultModelList;
                jsonObject.put("list", resultModelListListTemp);
                jsonArray.add(jsonObject);
            }
        }
        return Result.success(jsonArray.toString());
    }
@ -82,56 +95,142 @@ public class ProcessManager {
            ProcessResultModel resultModel = new ProcessResultModel();
            resultModel.setName(processor.getName());
            resultModel.setValue(processor.getPackageName() + "." + processor.getClassName());
            resultModel.setNodeType("processor");
            resultModelList.add(resultModel);
        }
        String result = objectMapper.writeValueAsString(resultModelList);
        return Result.success(result);
    }
    public void saveProcess(String code, String name, String fileName, String positionJsonStr) throws Exception {
    public void saveProcess(String code, String name, Integer flowId, String positionJsonStr) throws Exception {
        SystemServiceFlowProcess process = new SystemServiceFlowProcess();
        process.setCode(code);
        process.setName(name);
        process.setResult(positionJsonStr);
        process.setFileName(fileName);
        process.setFlowId(flowId);
        processDao.saveEntity(process);
    }
    public static void main(String[] args) throws Exception {
        String flowJsonStr = "{\n" +
                "    \"nodes\": {\n" +
                "        \"node_1\": {\n" +
                "            \"name\": \"Quartz\",\n" +
                "            \"value\": \"quartz://myGroup/myTimerName?cron=0/3 * * * * ?\",\n" +
                "        \"esb_node_0\": {\n" +
                "            \"name\": \"SDf\",\n" +
                "            \"value\": \"sd\",\n" +
                "            \"nodeType\": \"default\"\n" +
                "        },\n" +
                "        \"node_2\": {\n" +
                "           \"name\": \"常用HTTP转换器\",\n" +
                "        \"esb_node_1\": {\n" +
                "            \"name\": \"DefaultHttpProcessor\",\n" +
                "            \"value\": \"com.yihu.hos.broker.common.processor.DefaultHttpProcessor\",\n" +
                "\t\t\t\"param\": \"{\\\"jobId\\\":\\\"5ad5c11655d443c30155d477a6b10000\\\"}\",\n" +
                "            \"param\": \"{\\\"jobId\\\":\\\"5ad5c11655d443c30155d477a6b10000\\\"}\",\n" +
                "            \"nodeType\": \"processor\"\n" +
                "        },\n" +
                "        \"node_3\": {\n" +
                "            \"name\": \"Crawler0\",\n" +
                "            \"value\": \"http4://localhost:8088/crawler/patientList?method=post\",\n" +
                "        \"esb_node_2\": {\n" +
                "            \"name\": \"判断\",\n" +
                "            \"value\": \"header(\\\"event\\\").isEqualTo(\\\"1\\\")\",\n" +
                "            \"nodeType\": \"judgement\"\n" +
                "        },\n" +
                "        \"esb_node_3\": {\n" +
                "            \"name\": \"循环\",\n" +
                "            \"value\": \"splitJsonArray\",\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" +
                "            \"nodeType\": \"service\"\n" +
                "        },\n" +
                "        \"esb_node_6\": {\n" +
                "            \"name\": \"分流\",\n" +
                "            \"value\": \"key1\",\n" +
                "            \"nodeType\": \"multicast\"\n" +
                "        },\n" +
                "        \"esb_node_7\": {\n" +
                "            \"name\": \"DefaultHttpProcessor\",\n" +
                "            \"value\": \"com.yihu.hos.broker.common.processor.DefaultHttpProcessor\",\n" +
                "            \"param\": \"{ \\\"jobId\\\": \\\"5ad5c11655d443c30155d477a6b10000\\\"}\",\n" +
                "            \"nodeType\": \"processor\"\n" +
                "        },\n" +
                "        \"esb_node_8\": {\n" +
                "            \"name\": \"DefaultHttpProcessor\",\n" +
                "            \"value\": \"com.yihu.hos.broker.common.processor.DefaultHttpProcessor\",\n" +
                "            \"param\": \"{\\\"jobId\\\": \\\"5ad5c11655d443c30155d477a6b10000\\\"}\",\n" +
                "            \"nodeType\": \"processor\"\n" +
                "        },\n" +
                "        \"esb_node_9\": {\n" +
                "            \"name\": \"DefaultHttpProcessor\",\n" +
                "            \"value\": \"com.yihu.hos.broker.common.processor.DefaultHttpProcessor\",\n" +
                "            \"param\": \"{\\\"jobId\\\": \\\"5ad5c11655d443c30155d477a6b10000\\\"}\",\n" +
                "            \"nodeType\": \"processor\"\n" +
                "        },\n" +
                "        \"esb_node_10\": {\n" +
                "            \"name\": \"聚合\",\n" +
                "\t\t\t\"value\": \"key1\",\n" +
                "            \"nodeType\": \"aggregate\"\n" +
                "        }\n" +
                "    },\n" +
                "    \"lines\": {\n" +
                "        \"line_1\": {\n" +
                "            \"from\": \"node_1\",\n" +
                "            \"to\": \"node_2\"\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" +
                "        \"line_2\": {\n" +
                "            \"from\": \"node_2\",\n" +
                "            \"to\": \"node_3\"\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" +
                "        },\n" +
                "        \"esb_line_7\": {\n" +
                "            \"from\": \"esb_node_6\",\n" +
                "            \"to\": \"esb_node_7\",\n" +
                "            \"value\": \"\"\n" +
                "        },\n" +
                "        \"esb_line_8\": {\n" +
                "            \"from\": \"esb_node_6\",\n" +
                "            \"to\": \"esb_node_9\",\n" +
                "            \"value\": \"\"\n" +
                "        },\n" +
                "        \"esb_line_9\": {\n" +
                "            \"from\": \"esb_node_9\",\n" +
                "            \"to\": \"esb_node_10\",\n" +
                "            \"value\": \"\"\n" +
                "        }\n" +
                "    }\n" +
                "}";
//        generateFile("crawler", "业务流程图", flowJsonStr);
//        generateFlow("crawler", "业务流程图", flowJsonStr);
    }
    public String generateFile(String code, String name, String flowJsonStr) throws Exception {
    public Integer generateFlow(String code, String name, String flowJsonStr) throws Exception {
        String root = "";
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode flowJson = objectMapper.readValue(flowJsonStr, JsonNode.class);
@ -176,12 +275,8 @@ public class ProcessManager {
        String fileInfo = editor.generate(javaName, packageName);
        Boolean flag = flowManager.sendAddRoute(code, name, javaName, packageName, fileInfo);
        if (flag) {
            return javaName;
        } else {
            return null;
        }
        Integer flowId = flowManager.sendAddRoute(code, name, javaName, packageName, fileInfo);
        return flowId;
    }
    //首字母转大写