浏览代码

Merge branch 'master' of http://192.168.1.220:10080/esb/esb

Airhead 8 年之前
父节点
当前提交
83a7e428ef
共有 30 个文件被更改,包括 689 次插入195 次删除
  1. 2 3
      hos-arbiter/src/main/java/com/yihu/hos/arbiter/services/ServiceFlowService.java
  2. 137 16
      hos-broker/src/main/java/com/yihu/hos/common/compiler/CamelCompiler.java
  3. 3 2
      hos-broker/src/main/java/com/yihu/hos/common/dao/BrokerDao.java
  4. 6 4
      hos-broker/src/main/java/com/yihu/hos/common/listener/ApplicationStartListener.java
  5. 24 6
      hos-broker/src/main/java/com/yihu/hos/controllers/ESBCamelController.java
  6. 9 0
      hos-broker/src/main/java/com/yihu/hos/models/SystemServiceFlow.java
  7. 27 12
      hos-broker/src/main/java/com/yihu/hos/services/ESBCamelService.java
  8. 1 1
      hos-broker/src/main/resources/application.yml
  9. 18 19
      hos-camel/hos-camel.iml
  10. 1 1
      hos-camel/src/main/java/com/yihu/hos/api/processor/ApiProcessor.java
  11. 16 0
      hos-camel/src/main/java/api/route/ApiRouteBulider.java
  12. 44 0
      hos-camel/src/main/java/api1/processor/ApiProcessor.java
  13. 16 0
      hos-camel/src/main/java/api1/route/ApiRouteBulider.java
  14. 44 0
      hos-camel/src/main/java/api2/processor/ApiProcessor.java
  15. 16 0
      hos-camel/src/main/java/api2/route/ApiRouteBulider.java
  16. 42 0
      hos-camel/src/main/java/api3/processor/ApiProcessor.java
  17. 3 3
      hos-camel/src/main/java/com/yihu/hos/api/route/ApiRouteBulider.java
  18. 1 0
      hos-core/src/main/java/com/yihu/hos/core/datatype/ClassFileUtil.java
  19. 14 18
      hos-web-framework/hos-web-framework.iml
  20. 0 5
      pom.xml
  21. 21 8
      src/main/java/com/yihu/hos/datacollect/service/DatacollectManager.java
  22. 19 16
      src/main/java/com/yihu/hos/monitor/service/ServiceMonitorService.java
  23. 5 2
      src/main/java/com/yihu/hos/system/controller/AppController.java
  24. 13 18
      src/main/java/com/yihu/hos/system/controller/FlowController.java
  25. 174 47
      src/main/java/com/yihu/hos/system/service/FlowManager.java
  26. 20 1
      src/main/java/com/yihu/hos/system/service/intf/IFlowManage.java
  27. 9 9
      src/main/resources/application.yml
  28. 1 0
      src/main/webapp/WEB-INF/ehr/jsp/datacollect/editorJobJs.jsp
  29. 2 2
      src/main/webapp/WEB-INF/ehr/jsp/system/flow/editorFlowJs.jsp
  30. 1 2
      src/main/webapp/WEB-INF/ehr/jsp/system/flow/flowJs.jsp

+ 2 - 3
hos-arbiter/src/main/java/com/yihu/hos/arbiter/services/ServiceFlowService.java

@ -81,7 +81,7 @@ public class ServiceFlowService {
                }
                case "routeDefineAdded": {
                    HttpPost httpPost = new HttpPost(brokerServer.getURL() + "/esb/processor");
                    HttpPost httpPost = new HttpPost(brokerServer.getURL() + "/esb/route");
                    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairList, Consts.UTF_8));
                    CloseableHttpResponse response = httpclient.execute(httpPost);
                    response.close();
@ -100,11 +100,10 @@ public class ServiceFlowService {
                        URI uri = new URIBuilder()
                                .setScheme("http")
                                .setHost(brokerServer.getHostAddress() + ":" + brokerServer.getPort())
                                .setPath("/route")
                                .setPath("/esb/route")
                                .setParameter("serviceFlow", serviceFlow.getServiceFlow())
                                .setParameter("packageName", serviceFlow.getPackageName())
                                .setParameter("className", serviceFlow.getClassName())
                                .setParameter("path", serviceFlow.getPath())
                                .build();
                        HttpDelete httpDelete = new HttpDelete(uri);

+ 137 - 16
hos-broker/src/main/java/com/yihu/hos/common/compiler/CamelCompiler.java

@ -3,6 +3,7 @@
package com.yihu.hos.common.compiler;
import com.yihu.hos.core.file.FileUtil;
import org.apache.commons.io.FileUtils;
import javax.tools.*;
import java.io.File;
@ -32,14 +33,15 @@ public class CamelCompiler {
     * @param newCron         新cron表达式
     * @throws IOException
     */
    public static void compiler(String packageName,String oldClassName,String newClassName,String newCron) throws IOException {
    public static String compiler(String filePath,String packageName,String oldClassName,String newClassName,String newCron) throws IOException {
        String classPath = CamelCompiler.class.getProtectionDomain().getCodeSource().getLocation().getPath() ;
        classPath = classPath.substring(1);
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
        // 建立DiagnosticCollector对象
        DiagnosticCollector diagnostics = new DiagnosticCollector();
        StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
        // 建立源文件对象,每个文件被保存在一个从JavaFileObject继承的类中
        File file = genNewJava(packageName, oldClassName,newClassName, newCron);
        File file = genNewJava(filePath,packageName, oldClassName,newClassName, newCron);
        if (file!=null){
            Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjects(file.getAbsolutePath());
            // options命令行选项
@ -48,19 +50,66 @@ public class CamelCompiler {
            // 编译源程序
            boolean success = task.call();
            fileManager.close();
            System.out.println((success) ? "编译成功" : "编译失败");
            if (!success){
                List diagnostics1 = diagnostics.getDiagnostics();
                for (int i=0;i<diagnostics1.size();i++){
                    System.out.println(diagnostics1.get(i).toString());
                }
                return null;
            }else {
                String className = file.getName().replace(".java", ".class");
                return classPath  + packageName  + className;
            }
            fileManager.close();
            System.out.println((success) ? "编译成功" : "编译失败");
        }
        return null;
    }
    }
    public static String copyProcess (String filePath,String packageName,String oldClassName) throws IOException {
        String classPath = CamelCompiler.class.getProtectionDomain().getCodeSource().getLocation().getPath() ;
        classPath = classPath.substring(1);
        String newPath = String.format(classPathTemplate, packageName, oldClassName);
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
        // 建立DiagnosticCollector对象
        DiagnosticCollector diagnostics = new DiagnosticCollector();
        StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
        // 建立源文件对象,每个文件被保存在一个从JavaFileObject继承的类中
        File file = new File(filePath);
        File toFIle = new File(newPath);
        if (file.exists()){
            if (!toFIle.getParentFile().exists()) toFIle.getParentFile().mkdirs();
            //复制
            FileUtils.copyFile(file, toFIle);
            if (toFIle!=null){
                Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjects(toFIle.getAbsolutePath());
                // options命令行选项
                Iterable<String> options = Arrays.asList("-d",classPath);// 指定的路径一定要存在,javac不会自己创建文件夹
                JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, options, null, compilationUnits);
                // 编译源程序
                boolean success = task.call();
                fileManager.close();
                System.out.println((success) ? "编译成功" : "编译失败");
                if (!success){
                    List diagnostics1 = diagnostics.getDiagnostics();
                    for (int i=0;i<diagnostics1.size();i++){
                        System.out.println(diagnostics1.get(i).toString());
                    }
                    return null;
                }else {
                    String resultPath = toFIle.getName().replace(".java", ".class");
                    return classPath + packageName  + resultPath;
                }
            }else {
                return null;
            }
        }
        return null;
    }
    /**
     *  修改cron表达式,生成新java文件
@ -69,12 +118,12 @@ public class CamelCompiler {
     * @param newClassName  新类名
     * @param newContent    新cron表达式
     */
    public static File genNewJava(String packageName, String oldClassName,String newClassName, String newContent) {
    public static File genNewJava(String filePath,String packageName, String oldClassName,String newClassName, String newContent) {
        try {
            String oldPath = String.format(classPathTemplate, packageName, oldClassName);
//            String oldPath = String.format(classPathTemplate, packageName, oldClassName);
            String newPath = String.format(classPathTemplate, packageName, newClassName);
            String text = FileUtil.readFileText(new File(oldPath));
            String text = FileUtil.readFileText(new File(filePath));
            if (text.contains("?cron=")){
                String oldStr = text.substring(text.indexOf("?cron=")+6);
                String cron = oldStr.substring(0,oldStr.indexOf("\""));
@ -85,7 +134,11 @@ public class CamelCompiler {
                text = text.replace(oldClassName,newClassName);
            }
            File fPath = new File(packagePathTemplate+packageName);
            if (!fPath.exists()) fPath.mkdirs();
            File f = new File(newPath);
            FileWriter fw = new FileWriter(f);
            fw.write(text);
            fw.flush();
@ -125,13 +178,81 @@ public class CamelCompiler {
    }
//    public static void main(String[] args) {
//        try {
//            compiler("/crawler/route", "QuartzRoute","QuartzRoute001","xx000xx");
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//
//    }
    public static String compiler3(String filePath,String packageName,String oldClassName,String newClassName,String newCron) throws IOException {
        String classPath = CamelCompiler.class.getProtectionDomain().getCodeSource().getLocation().getPath() ;
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
        // 建立DiagnosticCollector对象
        DiagnosticCollector diagnostics = new DiagnosticCollector();
        StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
        // 建立源文件对象,每个文件被保存在一个从JavaFileObject继承的类中
        File file = genNewJava(filePath,packageName, oldClassName,newClassName, newCron);
        if (file!=null){
            Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjects(file.getAbsolutePath());
            // options命令行选项
            Iterable<String> options = Arrays.asList("-d",classPath);// 指定的路径一定要存在,javac不会自己创建文件夹
            JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, options, null, compilationUnits);
            fileManager.close();
            // 编译源程序
            boolean success = task.call();
            System.out.println((success) ? "编译成功" : "编译失败");
            if (!success){
                List diagnostics1 = diagnostics.getDiagnostics();
                for (int i=0;i<diagnostics1.size();i++){
                    System.out.println(diagnostics1.get(i).toString());
                }
                return null;
            }else {
                String className = file.getName().replace(".java", ".class");
                return classPath  + packageName  + className;
            }
        }else{
            return null;
        }
    }
    public static void copyCompiler (String filePath,String packageName,String oldClassName) throws IOException {
        String classPath = "D:\\" ;
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
        // 建立DiagnosticCollector对象
        DiagnosticCollector diagnostics = new DiagnosticCollector();
        StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
        // 建立源文件对象,每个文件被保存在一个从JavaFileObject继承的类中
        File file = new File(filePath);
        if (file.exists()){
            Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjects(file.getAbsolutePath());
            // options命令行选项
            Iterable<String> options = Arrays.asList("-d",classPath);// 指定的路径一定要存在,javac不会自己创建文件夹
            JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, options, null, compilationUnits);
            // 编译源程序
            boolean success = task.call();
            if (!success){
                List diagnostics1 = diagnostics.getDiagnostics();
                for (int i=0;i<diagnostics1.size();i++){
                    System.out.println(diagnostics1.get(i).toString());
                }
            }
            fileManager.close();
            System.out.println((success) ? "编译成功" : "编译失败");
        }
    }
    public static void main(String[] args) {
        try {
//            copyCompiler("E:\\crawler\\processor\\Processor0.java", "/crawler/processor", "Processor0");
//            copyCompiler("E:\\crawler\\route\\QuartzRoute.java","/crawler/route", "QuartzRoute");
//            copyProcess("E:\\crawler\\processor\\Processor0.java", "/crawler/processor", "Processor0");
           String classPath=  compiler3("E:\\crawler\\route\\QuartzRoute.java","/crawler/route", "QuartzRoute","QuartzRoute1479","textxtxt");
            String text = FileUtil.readFileText(new File(classPath));
            System.out.println(text);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

+ 3 - 2
hos-broker/src/main/java/com/yihu/hos/common/dao/BrokerDao.java

@ -1,5 +1,6 @@
package com.yihu.hos.common.dao;
import com.yihu.hos.common.constants.BrokerConstant;
import com.yihu.hos.models.SystemServiceEndpoint;
import com.yihu.hos.models.SystemServiceFlow;
import com.yihu.hos.models.SystemServiceFlowClass;
@ -18,7 +19,7 @@ public class BrokerDao {
    public List<SystemServiceFlow> getSystemServiceFlowList() throws Exception {
        List<SystemServiceFlow> systemServiceFlowList = new ArrayList<>();;
        String sql = "select * from system_service_flow";
        String sql = "select * from system_service_flow t where t.file_type='"+ BrokerConstant.CLASS +"'";
        List list = jdbcTemplate.queryForList(sql);
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
@ -39,7 +40,7 @@ public class BrokerDao {
    }
    public List<SystemServiceEndpoint> getSystemServiceEndpointList() throws Exception {
        List<SystemServiceEndpoint> systemServieEndpointList = new ArrayList<>();;
        List<SystemServiceEndpoint> systemServieEndpointList = new ArrayList<>();
        String sql = "select * from system_service_endpoint";
        List list = jdbcTemplate.queryForList(sql);
        Iterator iterator = list.iterator();

+ 6 - 4
hos-broker/src/main/java/com/yihu/hos/common/listener/ApplicationStartListener.java

@ -67,12 +67,12 @@ public class ApplicationStartListener implements ApplicationListener<ContextRefr
            Integer flowId = systemServiceFlow.getId();
            String code = systemServiceFlow.getCode();
            //默认所有class均为正确
            isCorrectClassMap.put(code, true);
            // 这是system业务系统在本地存储class的根目录
            File systemClassFlowPath = new File(this.getClass().getProtectionDomain().getClassLoader().getResource("").getPath() + "/" + code);
            File systemClassFlowPath = new File(this.getClass().getProtectionDomain().getClassLoader().getResource("").getPath());
            List<SystemServiceFlowClass> processesClassList = systemServiceFlowClassGroupMap.get("processor" + flowId);
            List<SystemServiceFlowClass> routesClassList = systemServiceFlowClassGroupMap.get("route" + flowId);
            // 创建processor文件
            isCorrectClassMap.put(code, true);
            if (!CollectionUtil.isEmpty(processesClassList)) {
                for (SystemServiceFlowClass processesClass : processesClassList) {
                    String className = processesClass.getClassName();
@ -82,7 +82,7 @@ public class ApplicationStartListener implements ApplicationListener<ContextRefr
                    Boolean flag = ClassFileUtil.createClassfile(systemClassFlowPath.toURI().toURL(), packageName, className, classPath);
                    // 记录到工具类中,以便其它线程需要时进行取用
                    if (flag) {
                        SystemClassMapping.getSystemClassNameMapping().put(code + BrokerConstant.PROCESSOR, code + CoreConstant.DOT + packageName + CoreConstant.DOT + className);
                        SystemClassMapping.getSystemClassNameMapping().put(code + BrokerConstant.PROCESSOR, packageName + CoreConstant.DOT + className);
                    } else {
                        isCorrectClassMap.put(code, flag);
                    }
@ -98,7 +98,7 @@ public class ApplicationStartListener implements ApplicationListener<ContextRefr
                    Boolean flag =ClassFileUtil.createClassfile(systemClassFlowPath.toURI().toURL(), packageName, className, classPath);
                    // 记录到工具类中,以便其它线程需要时进行取用
                    if (flag) {
                        SystemClassMapping.getSystemClassNameMapping().put(code + BrokerConstant.ROUTE, code + CoreConstant.DOT + packageName + CoreConstant.DOT + className);
                        SystemClassMapping.getSystemClassNameMapping().put(code + BrokerConstant.ROUTE, packageName + CoreConstant.DOT + className);
                    } else {
                        isCorrectClassMap.put(code, flag);
                    }
@ -116,6 +116,8 @@ public class ApplicationStartListener implements ApplicationListener<ContextRefr
                        }
                    }
                }
            } else {
                isCorrectClassMap.put(code, false);
            }
            if (isCorrectClassMap.get(code)) {
                if (!systemClassFlowPaths.contains(systemClassFlowPath)) {

+ 24 - 6
hos-broker/src/main/java/com/yihu/hos/controllers/ESBCamelController.java

@ -124,18 +124,36 @@ public class ESBCamelController {
    @ResponseBody
    @ApiOperation(value = "生成新的camel文件", produces = "application/json", notes = "生成新的camel文件")
    public Result genCamelFile(
            @ApiParam(name = "routeId", value = "routeId", required = true)
            @RequestParam(value = "routeId") String routeId,
            @ApiParam(name = "pageName", value = "包名", required = true)
            @RequestParam(value = "pageName") String pageName,
            @ApiParam(name = "type", value = "camel文件类型,route;processor", required = false)
            @RequestParam(value = "type",required = false) String type,
            @ApiParam(name = "filePath", value = "文件路径", required = false)
            @RequestParam(value = "filePath",required = false) String filePath,
            @ApiParam(name = "packageName", value = "包名", required = true)
            @RequestParam(value = "packageName") String packageName,
            @ApiParam(name = "oldClassName", value = "旧类名", required = true)
            @RequestParam(value = "oldClassName") String oldClassName,
            @ApiParam(name = "newClassName", value = "新类名", required = true)
            @RequestParam(value = "newClassName") String newClassName,
            @ApiParam(name = "newCron", value = "新cron表达式", required = true)
            @RequestParam(value = "routeId") String newCron) {
            @RequestParam(value = "newCron") String newCron) {
        return esbCamelService.genNewClassfile(type,filePath, packageName, oldClassName, newClassName, newCron);
    }
    @RequestMapping(value = "/copyProcessor", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
    @ResponseBody
    @ApiOperation(value = "复制processor文件", produces = "application/json", notes = "生成新的camel文件")
    public Result copyProcessor(
            @ApiParam(name = "type", value = "camel文件类型,route;processor", required = false)
            @RequestParam(value = "type",required = false) String type,
            @ApiParam(name = "filePath", value = "文件路径", required = false)
            @RequestParam(value = "filePath",required = false) String filePath,
            @ApiParam(name = "packageName", value = "包名", required = true)
            @RequestParam(value = "packageName") String packageName,
            @ApiParam(name = "oldClassName", value = "旧类名", required = true)
            @RequestParam(value = "oldClassName") String oldClassName) {
        return esbCamelService.genNewClassfile(routeId, pageName, oldClassName, newClassName, newCron);
        return esbCamelService.copyProcessor(filePath, packageName, oldClassName);
    }

+ 9 - 0
hos-broker/src/main/java/com/yihu/hos/models/SystemServiceFlow.java

@ -18,10 +18,19 @@ public class SystemServiceFlow implements java.io.Serializable {
    private String description;
    private Integer valid;
    private Date createDate;
    private String fileType;
    private String flowClassList;
    private List<SystemServiceFlowClass> flowClassArray;
    public String getFileType() {
        return fileType;
    }
    public void setFileType(String fileType) {
        this.fileType = fileType;
    }
    public String getFlowClassList() {
        return flowClassList;
    }

+ 27 - 12
hos-broker/src/main/java/com/yihu/hos/services/ESBCamelService.java

@ -64,7 +64,7 @@ public class ESBCamelService {
            SystemCamelContext.getDefaultCamelContext().removeRoute(serviceFlow);
            DynamicClassLoader classLoader = new DynamicClassLoader(DynamicClassLoader.class.getClassLoader());
            Class<RouteBuilder> routeBuilderClass = (Class<RouteBuilder>) classLoader.loadClass(ClassLoader.getSystemResource(CoreConstant.EMPTY).getPath(), SystemClassMapping.getSystemClassNameMapping().get(serviceFlow + BrokerConstant.ROUTE));
            Class<RouteBuilder> routeBuilderClass = (Class<RouteBuilder>) classLoader.loadClass(this.getClass().getProtectionDomain().getClassLoader().getResource("").getPath(), SystemClassMapping.getSystemClassNameMapping().get(serviceFlow + BrokerConstant.ROUTE));
            classLoader.loadClass(ClassLoader.getSystemResource(CoreConstant.EMPTY).getPath(), SystemClassMapping.getSystemClassNameMapping().get(serviceFlow + BrokerConstant.PROCESSOR));
            if (routeBuilderClass != null) {
@ -88,10 +88,6 @@ public class ESBCamelService {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            File systemClassRootPath = new File(ClassLoader.getSystemResource("").getPath() + "/" + serviceFlow);
            if (!systemClassRootPath.exists()) {
                systemClassRootPath.mkdirs();
            }
            // 第1、2两步处理过程,都是在这里完成
            this.createClassfile(serviceFlow, packageName, className, path, BrokerConstant.ROUTE);
@ -194,9 +190,9 @@ public class ESBCamelService {
    private void createClassfile(String serviceFlow, String packageName, String className, String path, String type) throws MalformedURLException {
        // 1、============
        File systemClassFlowPath = new File(ClassLoader.getSystemResource(CoreConstant.EMPTY).getPath() + "/" + serviceFlow);
        File systemClassFlowPath = new File(this.getClass().getProtectionDomain().getClassLoader().getResource("").getPath());
        // 记录到工具类中,以便其它线程需要时进行取用
        SystemClassMapping.getSystemClassNameMapping().put(serviceFlow + type, serviceFlow + CoreConstant.DOT + packageName + CoreConstant.DOT + className);
        SystemClassMapping.getSystemClassNameMapping().put(serviceFlow + type, packageName + CoreConstant.DOT + className);
        // 2、============开始写入class文件
        ClassFileUtil.createClassfile(systemClassFlowPath.toURI().toURL(), packageName, className, path);
@ -211,7 +207,8 @@ public class ESBCamelService {
        if(StringUtil.isEmpty(systemClassName)) {
            return;
        }
        String classPath = ClassLoader.getSystemResource("").getPath() + "/" + serviceFlow + "/" + packageName + "/" + className + ".class";
        String packagePath = StringUtil.replaceStrAll(packageName, ".", "/");
        String classPath = this.getClass().getProtectionDomain().getClassLoader().getResource("").getPath() + packagePath + "/" + className + ".class";
        // 2、============开始写入class文件
        ClassFileUtil.updateClassfile(classPath, path);
        // 完成
@ -225,7 +222,8 @@ public class ESBCamelService {
        if(StringUtil.isEmpty(systemClassName)) {
            return;
        }
        String classPath = ClassLoader.getSystemResource("").getPath() + "/" + serviceFlow + "/" + packageName + "/" + className + ".class";
        String packagePath = StringUtil.replaceStrAll(packageName, ".", "/");
        String classPath = ClassLoader.getSystemResource("").getPath() + "/" + packagePath + "/" + className + ".class";
        // 2、============开始写入class文件
        ClassFileUtil.deleteClassfile(classPath);
@ -237,15 +235,32 @@ public class ESBCamelService {
    /* **************************       修改任务cron生成新的camel文件 add by hzy   *********************************** */
    public Result genNewClassfile(String routeId, String packageName, String oldClassName, String newClassName,String newCron) {
    public Result genNewClassfile(String type,String filePath, String packageName, String oldClassName, String newClassName,String newCron) {
        try {
            CamelCompiler.compiler(packageName,oldClassName,newClassName,newCron);
            return Result.success("生成新文件成功!");
            String path;
            if ("route".equals(type)){
                 path = CamelCompiler.compiler(filePath,packageName,oldClassName,newClassName,newCron);
            }else if ("processor".equals(type)){
                 path = CamelCompiler.copyProcess(filePath,packageName,oldClassName);
            }else {
                return Result.error("传入类别参数有误!");
            }
            return Result.success(path);
        } catch (IOException e) {
            e.printStackTrace();
            return Result.error("生成新文件失败!");
        }
    }
    public Result copyProcessor(String filePath, String packageName, String oldClassName) {
        try {
            String path = CamelCompiler.copyProcess(filePath,packageName,oldClassName);
            return Result.success(path);
        } catch (IOException e) {
            e.printStackTrace();
            return Result.error("复制新文件失败!");
        }
    }
    }

+ 1 - 1
hos-broker/src/main/resources/application.yml

@ -47,7 +47,7 @@ spring:
    port: 8066
hos:
  arbiter:
    enable: false
    enable: true
    url: http://localhost:10135
  timer:
      period: 10000

+ 18 - 19
hos-camel/hos-camel.iml

@ -24,31 +24,38 @@
    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.11" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-spring-boot:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-spring:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-tx:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-http4:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-http-common:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.5" level="project" />
    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.10" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-jms:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jms:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-messaging:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-tx:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-cxf:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-cxf-transport:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-frontend-jaxrs:3.1.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-bindings-soap:3.1.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-core:3.1.5" level="project" />
    <orderEntry type="library" name="Maven: org.codehaus.woodstox:woodstox-core-asl:4.4.1" level="project" />
    <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:3.1.4" level="project" />
    <orderEntry type="library" name="Maven: org.apache.ws.xmlschema:xmlschema-core:2.2.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-wsdl:3.1.5" level="project" />
    <orderEntry type="library" name="Maven: wsdl4j:wsdl4j:1.6.3" level="project" />
    <orderEntry type="library" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-databinding-jaxb:3.1.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-frontend-jaxrs:3.1.5" level="project" />
    <orderEntry type="library" name="Maven: javax.ws.rs:javax.ws.rs-api:2.0.1" level="project" />
    <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-transports-http:3.1.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-frontend-jaxws:3.1.5" level="project" />
    <orderEntry type="library" name="Maven: xml-resolver:xml-resolver:1.2" level="project" />
    <orderEntry type="library" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-bindings-xml:3.1.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-frontend-simple:3.1.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-ws-addr:3.1.5" level="project" />
@ -58,11 +65,6 @@
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-rs-client:3.1.5" level="project" />
    <orderEntry type="library" name="Maven: net.oauth.core:oauth-provider:20100527" level="project" />
    <orderEntry type="library" name="Maven: net.oauth.core:oauth:20100527" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-bindings-soap:3.1.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-wsdl:3.1.5" level="project" />
    <orderEntry type="library" name="Maven: wsdl4j:wsdl4j:1.6.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.cxf:cxf-rt-databinding-jaxb:3.1.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-quartz:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:1.8.6" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-quartz2:2.17.1" level="project" />
@ -75,12 +77,12 @@
    <orderEntry type="library" name="Maven: org.apache.camel:camel-jetty9:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-server:9.3.11.v20160721" level="project" />
    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-http:9.3.11.v20160721" level="project" />
    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-util:9.3.11.v20160721" level="project" />
    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-io:9.3.11.v20160721" level="project" />
    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-servlet:9.3.11.v20160721" level="project" />
    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-security:9.3.11.v20160721" level="project" />
    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-servlets:9.3.11.v20160721" level="project" />
    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-continuation:9.3.11.v20160721" level="project" />
    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-util:9.3.11.v20160721" level="project" />
    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-client:9.3.11.v20160721" level="project" />
    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-jmx:9.3.11.v20160721" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-jetty-common:2.17.1" level="project" />
@ -102,6 +104,7 @@
    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.1" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.8.3" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.8.3" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.8.3" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-web:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-mongodb:1.4.1.RELEASE" level="project" />
@ -120,27 +123,23 @@
    <orderEntry type="library" name="Maven: commons-io:commons-io:2.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.3.2" level="project" />
    <orderEntry type="library" name="Maven: commons-net:commons-net:3.3" level="project" />
    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.10" level="project" />
    <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.4.1" level="project" />
    <orderEntry type="library" name="Maven: com.squareup.okio:okio:1.9.0" level="project" />
    <orderEntry type="library" name="Maven: com.belerweb:pinyin4j:2.5.0" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.8.3" level="project" />
    <orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.6.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.6.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.5" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.6" level="project" />
    <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.6" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: com.google.guava:guava:18.0" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.4.0" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:1.4.1.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:1.4.1.RELEASE" level="project" />
@ -149,10 +148,10 @@
    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.2.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:2.5.0" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.3.0" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.json:json:20140107" level="project" />

+ 1 - 1
hos-camel/src/main/java/com/yihu/hos/api/processor/ApiProcessor.java

@ -1,4 +1,4 @@
package com.yihu.hos.api.processor;
package api.processor;
import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;

+ 16 - 0
hos-camel/src/main/java/api/route/ApiRouteBulider.java

@ -0,0 +1,16 @@
package api.route;
import api.processor.ApiProcessor;
import org.apache.camel.builder.RouteBuilder;
/**
 * @author Airhead
 * @since 2016-11-13
 */
public class ApiRouteBulider extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("jetty:http://localhost:9090/api/v1").routeId("api")
                .process(new ApiProcessor());
    }
}

+ 44 - 0
hos-camel/src/main/java/api1/processor/ApiProcessor.java

@ -0,0 +1,44 @@
package api1.processor;
import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;
import org.apache.camel.Message;
import org.apache.camel.Processor;
import org.apache.camel.http.common.HttpMessage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
 * @author Airhead
 * @since 2016-11-13
 */
public class ApiProcessor implements Processor {
    public void process(Exchange exchange) throws Exception {
        Message outMessage = exchange.getOut();
        outMessage.setBody("hello,api1");
    }
    /**
     * 从stream中分析字符串内容
     *
     * @param bodyStream
     * @return
     */
    private String analysisMessage(InputStream bodyStream) throws IOException {
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[] contextBytes = new byte[4096];
        int realLen;
        while ((realLen = bodyStream.read(contextBytes, 0, 4096)) != -1) {
            outStream.write(contextBytes, 0, realLen);
        }
        // 返回从Stream中读取的字串
        try {
            return new String(outStream.toByteArray(), "UTF-8");
        } finally {
            outStream.close();
        }
    }
}

+ 16 - 0
hos-camel/src/main/java/api1/route/ApiRouteBulider.java

@ -0,0 +1,16 @@
package api1.route;
import api1.processor.ApiProcessor;
import org.apache.camel.builder.RouteBuilder;
/**
 * @author Airhead
 * @since 2016-11-13
 */
public class ApiRouteBulider extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("jetty:http://localhost:9091/api/v1").routeId("api1")
                .process(new ApiProcessor()).to("stream:out");
    }
}

+ 44 - 0
hos-camel/src/main/java/api2/processor/ApiProcessor.java

@ -0,0 +1,44 @@
package api2.processor;
import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;
import org.apache.camel.Message;
import org.apache.camel.Processor;
import org.apache.camel.http.common.HttpMessage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
 * @author Airhead
 * @since 2016-11-13
 */
public class ApiProcessor implements Processor {
    public void process(Exchange exchange) throws Exception {
        Message outMessage = exchange.getOut();
        outMessage.setBody("hello,api2");
    }
    /**
     * 从stream中分析字符串内容
     *
     * @param bodyStream
     * @return
     */
    private String analysisMessage(InputStream bodyStream) throws IOException {
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[] contextBytes = new byte[4096];
        int realLen;
        while ((realLen = bodyStream.read(contextBytes, 0, 4096)) != -1) {
            outStream.write(contextBytes, 0, realLen);
        }
        // 返回从Stream中读取的字串
        try {
            return new String(outStream.toByteArray(), "UTF-8");
        } finally {
            outStream.close();
        }
    }
}

+ 16 - 0
hos-camel/src/main/java/api2/route/ApiRouteBulider.java

@ -0,0 +1,16 @@
package api2.route;
import api2.processor.ApiProcessor;
import org.apache.camel.builder.RouteBuilder;
/**
 * @author Airhead
 * @since 2016-11-13
 */
public class ApiRouteBulider extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("jetty:http://localhost:9092/api/v1").routeId("api2")
                .process(new ApiProcessor());
    }
}

+ 42 - 0
hos-camel/src/main/java/api3/processor/ApiProcessor.java

@ -0,0 +1,42 @@
package api3.processor;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
 * @author Airhead
 * @since 2016-11-13
 */
public class ApiProcessor implements Processor {
    public void process(Exchange exchange) throws Exception {
        Message outMessage = exchange.getOut();
        outMessage.setBody("hello,api3");
    }
    /**
     * 从stream中分析字符串内容
     *
     * @param bodyStream
     * @return
     */
    private String analysisMessage(InputStream bodyStream) throws IOException {
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[] contextBytes = new byte[4096];
        int realLen;
        while ((realLen = bodyStream.read(contextBytes, 0, 4096)) != -1) {
            outStream.write(contextBytes, 0, realLen);
        }
        // 返回从Stream中读取的字串
        try {
            return new String(outStream.toByteArray(), "UTF-8");
        } finally {
            outStream.close();
        }
    }
}

+ 3 - 3
hos-camel/src/main/java/com/yihu/hos/api/route/ApiRouteBulider.java

@ -1,6 +1,6 @@
package com.yihu.hos.api.route;
package api3.route;
import com.yihu.hos.api.processor.ApiProcessor;
import api3.processor.ApiProcessor;
import org.apache.camel.builder.RouteBuilder;
/**
@ -10,7 +10,7 @@ import org.apache.camel.builder.RouteBuilder;
public class ApiRouteBulider extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("jetty:http://0.0.0.0:9090/api/v1").routeId("api")
        from("jetty:http://localhost:9093/api/v1").routeId("api3")
                .process(new ApiProcessor());
    }
}

+ 1 - 0
hos-core/src/main/java/com/yihu/hos/core/datatype/ClassFileUtil.java

@ -31,6 +31,7 @@ public class ClassFileUtil {
            if (!systemFlowFile.exists()) {
                systemFlowFile.mkdirs();
            }
            packageName = StringUtil.replaceStrAll(packageName, ".", "/");
            File packageFile = new File(systemFlowURL.getPath() + "/" + packageName);
            if (!packageFile.exists()) {
                packageFile.mkdirs();

+ 14 - 18
hos-web-framework/hos-web-framework.iml

@ -89,26 +89,29 @@
    <orderEntry type="library" name="Maven: org.springframework:spring-messaging:4.2.8.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:1.3.8.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:4.2.8.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: eu.medsea.mimeutil:mime-util:2.1.3" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.21" level="project" />
    <orderEntry type="library" name="Maven: log4j:log4j:1.2.14" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-jpa:1.4.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:1.4.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:1.4.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:1.4.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:1.4.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.1.7" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.7" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.21" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.21" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:log4j-over-slf4j:1.7.21" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.17" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:1.4.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.9" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:1.4.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-jdbc:8.5.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-juli:8.5.5" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-tx:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate:hibernate-core:5.0.11.Final" level="project" />
    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.0.Final" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final" level="project" />
@ -119,12 +122,10 @@
    <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:5.0.1.Final" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate:hibernate-entitymanager:5.0.11.Final" level="project" />
    <orderEntry type="library" name="Maven: javax.transaction:javax.transaction-api:1.2" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-jpa:1.10.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:1.12.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-orm:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-tx:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-aspects:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:1.4.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:1.4.1.RELEASE" level="project" />
@ -136,9 +137,9 @@
    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.1" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.8.3" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.8.3" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.8.3" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-web:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-mongodb:1.4.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.mongodb:mongodb-driver:3.2.2" level="project" />
    <orderEntry type="library" name="Maven: org.mongodb:mongodb-driver-core:3.2.2" level="project" />
@ -160,24 +161,20 @@
    <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.4.1" level="project" />
    <orderEntry type="library" name="Maven: com.squareup.okio:okio:1.9.0" level="project" />
    <orderEntry type="library" name="Maven: com.belerweb:pinyin4j:2.5.0" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.8.3" level="project" />
    <orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.6.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.6.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.5" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.6" level="project" />
    <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.6" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: com.google.guava:guava:18.0" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.4.0" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:1.4.1.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:1.4.1.RELEASE" level="project" />
@ -187,15 +184,14 @@
    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:2.5.0" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.3.0" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.json:json:20140107" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: javax.transaction:javax.transaction-api:1.2" level="project" />
    <orderEntry type="library" name="Maven: com.yihu.core:ehr-dbhelper:1.1.9" level="project" />
    <orderEntry type="library" name="Maven: com.yihu.core:html2image:0.9" level="project" />
  </component>

+ 0 - 5
pom.xml

@ -27,11 +27,6 @@
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>

+ 21 - 8
src/main/java/com/yihu/hos/datacollect/service/DatacollectManager.java

@ -224,13 +224,20 @@ public class DatacollectManager implements IDatacollectManager {
    @Override
    @Transactional
    public ActionResult addJob(RsJobConfig obj, String cron, String jobDataset) throws Exception {
        datacollectDao.saveEntity(obj);
        boolean succ = flowManage.genCamelFile(obj.getFlowTempId(),cron);
        saveJobDataset(obj.getId(), jobDataset);
        Integer flowId = flowManage.genCamelFile(obj.getFlowTempId(),cron);
        if (flowId!=null){
            obj.setFlowId(flowId);
            datacollectDao.saveEntity(obj);
            saveJobDataset(obj.getId(), jobDataset);
            return new ActionResult(true, "新增任务成功!");
        }else {
            return new ActionResult(false, "新增任务失败-关联流程环节失败!");
        }
        //quartz新增任务
//        quartzManager.addJob(obj.getId(), obj.getJobContentType(), obj.getJobContent(), obj.getJobNextTime(), cron);
        return new ActionResult(true, "新增成功!");
    }
    /**
@ -239,12 +246,18 @@ public class DatacollectManager implements IDatacollectManager {
    @Override
    @Transactional
    public ActionResult updateJob(RsJobConfig obj, String cron, String jobDataset) throws Exception {
        datacollectDao.updateEntity(obj);
        saveJobDataset(obj.getId(), jobDataset);
        Integer flowId = flowManage.updateCamelFile(obj.getFlowTempId(), obj.getFlowId(), cron);
        if (flowId!=null){
            datacollectDao.updateEntity(obj);
            saveJobDataset(obj.getId(), jobDataset);
        //quartz修改cron表达式
            //quartz修改cron表达式
//        quartzManager.modifyJob(obj.getId(), obj.getJobContentType(), obj.getJobContent(), obj.getJobNextTime(), cron);
        return new ActionResult(true, "修改成功!");
            return new ActionResult(true, "修改成功!");
        }else {
            return new ActionResult(false, "修改失败,关联流程失败!");
        }
    }
    /**

+ 19 - 16
src/main/java/com/yihu/hos/monitor/service/ServiceMonitorService.java

@ -1,6 +1,7 @@
package com.yihu.hos.monitor.service;
import com.mongodb.*;
import com.yihu.hos.common.constants.Constants;
import com.yihu.hos.core.datatype.CollectionUtil;
import com.yihu.hos.monitor.dao.ServiceMonitorDao;
import com.yihu.hos.system.model.SystemServiceEndpoint;
@ -120,22 +121,24 @@ public class ServiceMonitorService {
        }
        for (SystemServiceFlow flow : flowList) {
            TreeView rootTree = new TreeView();
            rootTree.setIschecked(false);
            rootTree.setId("flow" + flow.getId());
            rootTree.setPid("-1");
            rootTree.setText(flow.getName());
            treeList.add(rootTree);
            List<String> endpointIdList = flowEndpointMap.get(flow.getId());
            if (!CollectionUtil.isEmpty(endpointIdList)) {
                for (String endpointId : endpointIdList) {
                    SystemServiceEndpoint endpoint = endpointMap.get(endpointId);
                    TreeView childTree = new TreeView();
                    childTree.setIschecked(false);
                    childTree.setId("endpoint" + endpoint.getId());
                    childTree.setPid("flow" + flow.getId());
                    childTree.setText(endpoint.getName());
                    treeList.add(childTree);
            if (flow.getFileType().equals(Constants.CLASS)) {
                TreeView rootTree = new TreeView();
                rootTree.setIschecked(false);
                rootTree.setId("flow" + flow.getId());
                rootTree.setPid("-1");
                rootTree.setText(flow.getName());
                treeList.add(rootTree);
                List<String> endpointIdList = flowEndpointMap.get(flow.getId());
                if (!CollectionUtil.isEmpty(endpointIdList)) {
                    for (String endpointId : endpointIdList) {
                        SystemServiceEndpoint endpoint = endpointMap.get(endpointId);
                        TreeView childTree = new TreeView();
                        childTree.setIschecked(false);
                        childTree.setId("endpoint" + endpoint.getId());
                        childTree.setPid("flow" + flow.getId());
                        childTree.setText(endpoint.getName());
                        treeList.add(childTree);
                    }
                }
            }
        }

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

@ -20,9 +20,11 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.rmi.server.UID;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
 * 应用管理
@ -334,12 +336,13 @@ public class AppController extends BaseController {
    @ResponseBody
    public Object upload(@RequestParam MultipartFile file,HttpSession session,HttpServletRequest request
    ) {
        String basePath = filePathConfig.getFilePath();
        UUID uuid = UUID.randomUUID();
        String basePath = filePathConfig.getFilePath() + uuid + "/";
        String path = appManager.uploadFile(file, basePath);
        if (StringUtils.isEmpty(path)){
            return Result.error("上传失败");
        }else {
            return Result.success(filePathConfig.getServerPath() + "/" + path);
            return Result.success(filePathConfig.getServerPath() + uuid + "/" + path);
        }
    }

+ 13 - 18
src/main/java/com/yihu/hos/system/controller/FlowController.java

@ -2,6 +2,9 @@ package com.yihu.hos.system.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.common.constants.Constants;
import com.yihu.hos.config.FilePathConfig;
import com.yihu.hos.core.datatype.DateUtil;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.system.model.SystemServiceFlow;
import com.yihu.hos.system.model.SystemServiceFlowClass;
import com.yihu.hos.system.model.SystemServiceFlowTemp;
@ -9,6 +12,7 @@ import com.yihu.hos.system.service.FlowManager;
import com.yihu.hos.system.service.intf.IFlowManage;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@ -22,10 +26,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 *  流程管理
@ -42,7 +43,8 @@ public class FlowController extends BaseController {
    @Value("${esb.camelFile}")
    private String camelFile;
    @Autowired
    private FilePathConfig filePathConfig;
    /**
     *  流程管理管理界面
     *
@ -197,22 +199,14 @@ public class FlowController extends BaseController {
    public Object upload(@RequestParam MultipartFile file,HttpServletRequest request
    ) {
        //TODO 文件地址设置
        String packageName = request.getParameter("packageName");
        String className =  request.getParameter("className");
        StringBuilder basePath = new StringBuilder(camelFile + File.separator );;
        if (packageName!=null){
            String packagePath[] = packageName.split("\\.");
            for (int i=0;i<packagePath.length;i++){
                basePath.append(packagePath[i]).append(File.separator);
            }
        }
        UUID uuid = UUID.randomUUID();
        StringBuilder basePath = new StringBuilder(camelFile + uuid + "/");
        String path = flowManage.uploadFile(file, basePath.toString());
        if (StringUtils.isEmpty(path)){
            return Result.error("上传失败");
        }else {
            return Result.success(basePath.toString()+ File.separator +path);
            return Result.success(basePath.toString() + path);
        }
    }
@ -221,13 +215,14 @@ public class FlowController extends BaseController {
    public Object uploadImg(@RequestParam MultipartFile file,HttpServletRequest request
    ) {
        //TODO 文件地址设置
        String basePath = this.getServletContext().getRealPath(File.separator) + File.separator + "upload";
        UUID uuid = UUID.randomUUID();
        String basePath = filePathConfig.getFilePath() + uuid + "/";
        String path = flowManage.uploadFile(file, basePath);
        if (StringUtils.isEmpty(path)){
            return Result.error("上传失败");
        }else {
            return Result.success(path);
            return Result.success(filePathConfig.getServerPath() + uuid + "/" + path);
        }
    }

+ 174 - 47
src/main/java/com/yihu/hos/system/service/FlowManager.java

@ -1,7 +1,9 @@
package com.yihu.hos.system.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.common.constants.Constants;
import com.yihu.hos.core.file.FileUtil;
import com.yihu.hos.core.http.HTTPResponse;
import com.yihu.hos.core.http.HttpClientKit;
import com.yihu.hos.services.ServiceFlowEventService;
import com.yihu.hos.system.dao.FlowClassDao;
@ -109,30 +111,47 @@ public class FlowManager implements IFlowManage {
        }else if (Constants.CLASS.equals(flow.getFileType())){
            List<Integer> classIds = flowClassDao.getFlowClassIds(obj.getId());//原flowclass集合
            List<SystemServiceFlowClass> flowClassList = obj.getFlowClassArray();
            SystemServiceFlowClass flowClassRoute = null;
            String oper = "";
            for (SystemServiceFlowClass flowClass:flowClassList){
                if (flowClass.getId()!=null) {
                    classIds.remove(flowClass.getId());
                    flowClassDao.updateEntity(flowClass);
                    sendUpdateMessage(flow.getCode(), flowClass, Constants.FLOW_OP_UPDATE);
                    if (!flowClass.getType().equals(Constants.FLOW_TYPE_ROUTE)) {
                        sendUpdateMessage(flow.getCode(), flowClass, Constants.FLOW_OP_UPDATE);
                    } else {
                        flowClassRoute = flowClass;
                        oper = Constants.FLOW_OP_UPDATE;
                    }
                }else {
                    flowClassDao.saveEntity(flowClass);
                    sendUpdateMessage(flow.getCode(), flowClass, Constants.FLOW_OP_ADD);
                    if (!flowClass.getType().equals(Constants.FLOW_TYPE_ROUTE)) {
                        flowClassDao.saveEntity(flowClass);
                        sendUpdateMessage(flow.getCode(), flowClass, Constants.FLOW_OP_ADD);
                    } else {
                        flowClassRoute = flowClass;
                        oper = Constants.FLOW_OP_ADD;
                    }
                }
            }
            //删除判断
            if (classIds !=null && classIds.size()>0){
                for (Integer id:classIds){
                    SystemServiceFlowClass flowClass = getFlowClassById(id);
                    flowClassDao.deleteEntity(flowClass);
                    sendDeleteMessage(flow.getCode(), flowClass);
                    if (!flowClass.getType().equals(Constants.FLOW_TYPE_ROUTE)) {
                        sendUpdateMessage(flow.getCode(), flowClass, Constants.FLOW_OP_DELETE);
                    } else {
                        flowClassRoute = flowClass;
                        flowClassRoute.setIsUpdate("1");
                        oper = Constants.FLOW_OP_DELETE;
                    }
                }
            }
            if (flowClassRoute != null) {
                sendUpdateMessage(flow.getCode(), flowClassRoute, oper);
            }
        }
        flowDao.updateEntity(flow);
@ -144,11 +163,23 @@ public class FlowManager implements IFlowManage {
    public Result deleteFlow(Integer id) throws Exception {
        SystemServiceFlow flow = flowDao.getEntity(SystemServiceFlow.class, id);
        List<SystemServiceFlowClass> flowClassList = flowClassDao.getFlowClassByFlowId(id);
        SystemServiceFlowClass flowClassRoute = null;
        String oper = "";
        for (SystemServiceFlowClass flowClass:flowClassList){
            flowClassDao.deleteEntity(flowClass);
            //发送消息到MQ对列
            sendDeleteMessage(flow.getCode(), flowClass);
            if (!flowClass.getType().equals(Constants.FLOW_TYPE_ROUTE)) {
                sendUpdateMessage(flow.getCode(), flowClass, Constants.FLOW_OP_DELETE);
            } else {
                flowClassRoute = flowClass;
                flowClassRoute.setIsUpdate("1");
                oper = Constants.FLOW_OP_DELETE;
            }
        }
        if (flowClassRoute != null) {
            sendUpdateMessage(flow.getCode(), flowClassRoute, oper);
        }
        boolean succ = flowTempDao.deleteFlowTempByFlowId(id);
        flowDao.deleteEntity(flow);
        return Result.success("删除成功");
@ -169,7 +200,7 @@ public class FlowManager implements IFlowManage {
    }
    public SystemServiceFlowClass getFlowClassById(Integer id) throws Exception {
        return flowClassDao.getEntity(SystemServiceFlowClass.class,id);
        return flowClassDao.getEntity(SystemServiceFlowClass.class, id);
    }
    @Transactional
@ -236,7 +267,7 @@ public class FlowManager implements IFlowManage {
                case "update" : serviceFlowEventService.routeDefineChanged(flowCode, flowClass.getPackageName(), flowClass.getClassName(), flowClass.getClassPath()); break;
                default : break;
            }
        } else if ( "1".equals(flowClass.getIsUpdate()) && Constants.FLOW_TYPE_PROCESSOR.equals(flowClass.getType())) {
        } else if ("1".equals(flowClass.getIsUpdate()) && Constants.FLOW_TYPE_PROCESSOR.equals(flowClass.getType())) {
            //processor
            switch (operate){
                case "add" : serviceFlowEventService.processorAdded(flowCode, flowClass.getPackageName(), flowClass.getClassName(), flowClass.getClassPath()); break;
@ -247,23 +278,6 @@ public class FlowManager implements IFlowManage {
        }
    }
    /**
     * 发送MQ消息-删除路由
     * @param flowCode 服务流程Code标识
     * @param flowClass
     */
    public  void sendDeleteMessage(String flowCode,SystemServiceFlowClass flowClass){
        //发送消息到MQ对列
        if ( Constants.FLOW_TYPE_ROUTE.equals(flowClass.getType())) {
            //route
            serviceFlowEventService.routeDefineDelete(flowCode, flowClass.getPackageName(), flowClass.getClassName());
        } else if (Constants.FLOW_TYPE_PROCESSOR.equals(flowClass.getType())) {
            //processor
            serviceFlowEventService.processorDataDeleted(flowCode, flowClass.getPackageName(), flowClass.getClassName(), flowClass.getClassPath());
        }
    }
    /**
     * 获取流程列表
     * @param type 流程的文件类型
@ -296,22 +310,25 @@ public class FlowManager implements IFlowManage {
     * @param newCron
     * @throws Exception
     */
    public boolean genCamelFile(Integer flowId, String newCron) throws Exception {
    public Integer genCamelFile(Integer flowId, String newCron) throws Exception {
        Long timestamp = System.currentTimeMillis();
        ObjectMapper objectMapper = new ObjectMapper();
        List<SystemServiceFlowTemp> flowClassRouters = flowTempDao.getFlowTemps(flowId, Constants.FLOW_TYPE_ROUTE);
        List<SystemServiceFlowTemp> flowClassProces = flowTempDao.getFlowTemps(flowId, Constants.FLOW_TYPE_PROCESSOR);
        SystemServiceFlow oldFlow = getFlowById(flowId);
        //route模板文件记录是否存在。不存在就返回。
        if (!flowClassRouters.isEmpty()){
            Map<String,String> params = new HashMap<>();
            Map<String,String> params = null;
            SystemServiceFlowTemp flowTemp =flowClassRouters.get(0);
            String newClassName = flowTemp.getClassName()+timestamp;
            String newClassPath = flowTemp.getClassPath().replaceAll(flowTemp.getClassName()+".java",newClassName+".class");
            params.put("pageName", flowTemp.getPackageName());
            params.put("oldClassName", flowTemp.getClassName());
            params.put("newClassName",newClassName);//原文件名加当前时间戳
            params.put("newCron",newCron);
            String result = HttpClientKit.post(genCamelUrl, params).getBody();
            StringBuilder basePath = new StringBuilder();;
            if (flowTemp.getPackageName()!=null){
                String packagePath[] = flowTemp.getPackageName().split("\\.");
                for (int i=0;i<packagePath.length;i++){
                    basePath.append(packagePath[i]).append("/");
                }
            }
            //成功生成文件后,添加flow和flowclass记录
            //生成新流程
@ -324,31 +341,141 @@ public class FlowManager implements IFlowManage {
            newFlow.setFileType(Constants.CLASS);
            flowDao.saveEntity(newFlow);
            SystemServiceFlowClass newFlowClass = new SystemServiceFlowClass();
            newFlowClass.setPackageName(flowTemp.getPackageName());
            newFlowClass.setClassName(newClassName);
            newFlowClass.setClassPath(newClassPath);
            newFlowClass.setFlowId(newFlow.getId());
            newFlowClass.setType(Constants.FLOW_TYPE_ROUTE);
            flowClassDao.saveEntity(newFlowClass);
            //新增processor记录
            for (SystemServiceFlowTemp process:flowClassProces){
//                String newProcessName = process.getClassName()+timestamp;
                String newProcessPath = null;
                StringBuilder proPath =  new StringBuilder( );;
                if (process.getPackageName()!=null){
                    String packagePath[] = process.getPackageName().split("\\.");
                    for (int i=0;i<packagePath.length;i++){
                        proPath.append(packagePath[i]).append("/");
                    }
                }
                params = new HashMap<>();
                params.put("type",Constants.FLOW_TYPE_PROCESSOR);
                params.put("filePath", process.getClassPath());
                params.put("packageName", proPath.toString());
                params.put("newClassName",process.getClassName());//原文件名加当前时间戳
                params.put("oldClassName", process.getClassName());
                params.put("newCron",newCron);
                HTTPResponse response = HttpClientKit.post(genCamelUrl, params);
                if (response.getStatusCode()==200 ){
                    Map<String,Object> body = objectMapper.readValue(response.getBody(),Map.class);
                    boolean succ = (boolean) body.get("successFlg");
                    if (succ){
                        newProcessPath = body.get("message").toString();
                    }else {
                        return null;
                    }
                }
                System.out.println(response.getBody());
                SystemServiceFlowClass processClass = new SystemServiceFlowClass();
                processClass.setPackageName(process.getPackageName());
                processClass.setClassName(process.getClassName());
                processClass.setClassPath(process.getClassPath());
                processClass.setClassPath(newProcessPath);
                processClass.setFlowId(newFlow.getId());
                processClass.setType(Constants.FLOW_TYPE_PROCESSOR);
                flowClassDao.saveEntity(processClass);
                sendUpdateMessage(newFlow.getCode(), processClass, Constants.FLOW_OP_ADD);
//                copyProcessor(process.getClassPath(),proPath.toString(),process.getClassName());
            }
            return true;
            String newClassName = flowTemp.getClassName()+timestamp;
            String newRoutePath =null;
            params = new HashMap<>();
            params.put("type",Constants.FLOW_TYPE_ROUTE);
            params.put("filePath", flowTemp.getClassPath());
            params.put("packageName", basePath.toString());
            params.put("oldClassName", flowTemp.getClassName());
            params.put("newClassName",newClassName);//原文件名加当前时间戳
            params.put("newCron",newCron);
            HTTPResponse response  = HttpClientKit.post(genCamelUrl, params);
            if (response.getStatusCode()==200 ){
                Map<String,Object> body = objectMapper.readValue(response.getBody(),Map.class);
                boolean succ = (boolean) body.get("successFlg");
                if (succ){
                    newRoutePath = body.get("message").toString();
                }else {
                    return null;
                }
            }
            System.out.println(response.getBody());
            SystemServiceFlowClass newFlowClass = new SystemServiceFlowClass();
            newFlowClass.setPackageName(flowTemp.getPackageName());
            newFlowClass.setClassName(newClassName);
            newFlowClass.setClassPath(newRoutePath);
            newFlowClass.setFlowId(newFlow.getId());
            newFlowClass.setType(Constants.FLOW_TYPE_ROUTE);
            flowClassDao.saveEntity(newFlowClass);
            sendUpdateMessage(newFlow.getCode(), newFlowClass, Constants.FLOW_OP_ADD);
//            genNewRoutefile(flowTemp.getClassPath(),basePath.toString(),flowTemp.getClassName(),newClassName,newCron);
            return newFlow.getId();
        }
        return false;
        return null;
    }
    /**
     * 修改camel相关文件
     * @param flowId 流程ID
     * @param newCron  新cron
     * @return
     * @throws Exception
     */
    @Override
    public Integer updateCamelFile(Integer flowTempId,Integer flowId, String newCron) throws Exception {
        Long timestamp = System.currentTimeMillis();
        ObjectMapper objectMapper = new ObjectMapper();
        List<SystemServiceFlowTemp> flowTempRouters = flowTempDao.getFlowTemps(flowTempId, Constants.FLOW_TYPE_ROUTE);
        List<SystemServiceFlowClass> flowClassRouters = flowClassDao.getFlowClass(flowId, Constants.FLOW_TYPE_ROUTE);
//        SystemServiceFlow oldFlow = getFlowById(flowId);
        SystemServiceFlow flow = flowDao.getEntity(SystemServiceFlow.class,flowId);
        //route模板文件记录是否存在。不存在就返回。
        if (!flowTempRouters.isEmpty()){
            SystemServiceFlowTemp flowTemp =flowTempRouters.get(0);
            SystemServiceFlowClass flowClass =flowClassRouters.get(0);
            StringBuilder basePath = new StringBuilder();;
            if (flowTemp.getPackageName()!=null){
                String packagePath[] = flowTemp.getPackageName().split("\\.");
                for (int i=0;i<packagePath.length;i++){
                    basePath.append(packagePath[i]).append("/");
                }
            }
            Map<String,String> params  = new HashMap<>();
            params.put("filePath", flowTemp.getClassPath());
            params.put("packageName", basePath.toString());
            params.put("oldClassName", flowTemp.getClassName());
            params.put("newClassName", flowClass.getClassName());//原文件名加当前时间戳
            params.put("newCron",newCron);
            HTTPResponse response  = HttpClientKit.post(genCamelUrl, params);
            if (response.getStatusCode()==200 ){
                Map<String,Object> body = objectMapper.readValue(response.getBody(),Map.class);
                boolean succ = (boolean) body.get("successFlg");
                if (succ){
                    //route文件生成成功,发送消息
                    sendUpdateMessage(flow.getCode(), flowClass, Constants.FLOW_OP_UPDATE);
                    return flowId;
                }else {
                    return null;
                }
            }else {
                return null;
            }
//            genNewRoutefile(flowTemp.getClassPath(),basePath.toString(),flowTemp.getClassName(),newClassName,newCron);
        }
        return null;
    }
}

+ 20 - 1
src/main/java/com/yihu/hos/system/service/intf/IFlowManage.java

@ -50,6 +50,25 @@ public interface IFlowManage extends IBaseManager {
     * @return
     */
    boolean genFlewByflowTempId(Integer flowTempId) throws Exception;
    boolean genCamelFile(Integer flowId, String newCron) throws Exception;
    /**
     * 根据流程模板Id生成新流程
     * @param flowTempId 流程模板ID
     * @param newCron 新cron表达式
     * @return
     * @throws Exception
     */
    Integer genCamelFile(Integer flowTempId, String newCron) throws Exception;
    /**
     *  修改流程文件
     * @param flowTempId 流程模板ID
     * @param flowId 流程ID
     * @param newCron  新cron
     * @return
     * @throws Exception
     */
    Integer updateCamelFile(Integer flowTempId,Integer flowId, String newCron) throws Exception;
}

+ 9 - 9
src/main/resources/application.yml

@ -35,12 +35,12 @@ spring:
    pooled: false
esb:
  genCamelUrl: http://192.168.131.11:8099/esb/genCamelFile
  camelFile: E:/
  camelFile: D:\
upload:
  file:
    path: D:\code\newHealth\new-esb\esb\src\main\webapp
    path: D:\code\newHealth\new-esb\esb\src\main\webapp\
  server:
    path: http://localhost:8080/esb
    path: http://localhost:8080/esb/
---
spring:
@ -63,9 +63,9 @@ esb:
  camelFile: usr/local/esb/
upload:
  file:
    path: /usr/local/esb/file/webapps/ROOT
    path: /usr/local/esb/file/webapps/ROOT/
  server:
    path: http://172.19.103.89:8081
    path: http://172.19.103.89:8081/
#  data:
#    mongodb:
#      host: 172.19.103.86
@ -94,9 +94,9 @@ spring:
    pooled: false
upload:
  file:
    path: /usr/local/esb/file/webapps/ROOT
    path: /usr/local/esb/file/webapps/ROOT/
  server:
    path: http://172.19.103.89:8081
    path: http://172.19.103.89:8081/
---
spring:
  profiles: hzy
@ -115,6 +115,6 @@ spring:
    pooled: false
upload:
  file:
    path: /usr/local/esb/file/webapps/ROOT
    path: /usr/local/esb/file/webapps/ROOT/
  server:
    path: http://172.19.103.89:8081
    path: http://172.19.103.89:8081/

+ 1 - 0
src/main/webapp/WEB-INF/ehr/jsp/datacollect/editorJobJs.jsp

@ -361,6 +361,7 @@
                me.actionUrl = "${contextRoot}/datacollect/updateJob";
                flowTempId = "${model.flowTempId}";
                liger.get("jobContentClass").selectValue(flowTempId);
                $('#flowId').val( '${model.flowId}');
                var model ={
                    id:'${model.id}',
                    jobName: '${model.jobName}',

+ 2 - 2
src/main/webapp/WEB-INF/ehr/jsp/system/flow/editorFlowJs.jsp

@ -237,8 +237,8 @@
                        success:  function processJson(data){
                            if(data.successFlg){
                                formsay.attr("class","say true").html("上传成功");
                                formObj.find("input[type=text]").attr("data-id","/upload/"+data.message)//设置已上传的文件的ID
                                formObj.find("input[type=text]").val("/upload/"+data.message)//设置已上传的文件的ID
                                formObj.find("input[type=text]").attr("data-id", data.message)//设置已上传的文件的ID
                                formObj.find("input[type=text]").val(data.message)//设置已上传的文件的ID
                                formObj.closest("div").find("span").html("重新导入<i></i>");
                            }else{

+ 1 - 2
src/main/webapp/WEB-INF/ehr/jsp/system/flow/flowJs.jsp

@ -158,8 +158,7 @@
        showImage: function (chart) {
            var me = this;
            var title = "流程图";
            debugger
            var url = "${contextRoot}"+"/"+chart;
            var url = chart;
            $("#divedit").show();
            $("#divImg").attr("src",url);