Pārlūkot izejas kodu

流程编排代码重构,简化编排事件处理

Airhead 8 gadi atpakaļ
vecāks
revīzija
9eea2e9bc3
81 mainītis faili ar 863 papildinājumiem un 1182 dzēšanām
  1. 82 62
      hos-arbiter/hos-arbiter.iml
  2. 5 0
      hos-arbiter/pom.xml
  3. 10 7
      hos-arbiter/src/main/java/com/yihu/hos/arbiter/services/ServiceFlowService.java
  4. 11 2
      hos-broker/src/main/java/com/yihu/hos/broker/controllers/ESBCamelController.java
  5. 4 4
      hos-broker/src/main/java/com/yihu/hos/broker/listeners/ApplicationStartListener.java
  6. 6 5
      hos-broker/src/main/java/com/yihu/hos/broker/models/SystemCamelContext.java
  7. 23 5
      hos-broker/src/main/java/com/yihu/hos/broker/models/SystemClassMapping.java
  8. 0 115
      hos-broker/src/main/java/com/yihu/hos/broker/models/bo/ServiceFlow.java
  9. 0 500
      hos-broker/src/main/java/com/yihu/hos/broker/services/ESBCamelService.java
  10. 4 4
      hos-broker/src/main/java/com/yihu/hos/broker/common/classLoader/DynamicClassLoader.java
  11. 35 11
      hos-broker/src/main/java/com/yihu/hos/broker/common/compiler/CamelCompiler.java
  12. 1 1
      hos-broker/src/main/java/com/yihu/hos/broker/common/compiler/ClassParams.java
  13. 307 0
      hos-broker/src/main/java/com/yihu/hos/broker/services/camel/ESBCamelService.java
  14. 1 1
      hos-broker/src/main/resources/application.yml
  15. 0 8
      hos-broker/src/test/java/com/yihu/hos/ESBCamelServiceTest.java
  16. 25 0
      hos-broker/src/test/java/com/yihu/hos/broker/services/camel/ESBCamelServiceTest.java
  17. 46 26
      hos-core/src/main/java/com/yihu/hos/core/datatype/ClassFileUtil.java
  18. 16 24
      hos-core/src/main/java/com/yihu/hos/core/http/DefaultClientImpl.java
  19. 1 1
      hos-rest/src/main/java/com/yihu/hos/rest/common/dao/DatacollectDao.java
  20. 0 5
      hos-rest/src/main/java/com/yihu/hos/rest/common/dao/DatacollectLogDao.java
  21. 1 1
      hos-rest/src/main/java/com/yihu/hos/rest/common/format/DataSetTransformer.java
  22. 1 1
      hos-rest/src/main/java/com/yihu/hos/rest/models/standard/bo/AdapterVersion.java
  23. 1 1
      hos-rest/src/main/java/com/yihu/hos/rest/services/crawler/CrawlerService.java
  24. 1 1
      hos-rest/src/main/java/com/yihu/hos/rest/services/crawler/DataCollectDispatcher.java
  25. 1 1
      hos-rest/src/main/java/com/yihu/hos/rest/services/crawler/EsbHttp.java
  26. 2 2
      hos-rest/src/main/java/com/yihu/hos/rest/services/standard/adapter/AdapterDatasetService.java
  27. 1 1
      hos-rest/src/main/java/com/yihu/hos/rest/services/standard/adapter/AdapterDictEntryService.java
  28. 2 2
      hos-rest/src/main/java/com/yihu/hos/rest/services/standard/adapter/AdapterMetadataService.java
  29. 1 1
      hos-rest/src/main/java/com/yihu/hos/rest/services/standard/adapter/AdapterSchemeService.java
  30. 2 2
      hos-rest/src/main/java/com/yihu/hos/rest/services/standard/adapter/AdapterSchemeVersionService.java
  31. 1 1
      hos-rest/src/main/java/com/yihu/hos/rest/services/standard/standard/StandardService.java
  32. 2 7
      hos-rest/src/main/java/com/yihu/hos/rest/services/standard/standard/StdDatasetService.java
  33. 1 2
      hos-rest/src/main/java/com/yihu/hos/rest/services/standard/standard/StdDictEntryService.java
  34. 1 2
      hos-rest/src/main/java/com/yihu/hos/rest/services/standard/standard/StdDictService.java
  35. 1 7
      hos-rest/src/main/java/com/yihu/hos/rest/services/standard/standard/StdMetadataService.java
  36. 1 1
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/ApiVersionPrefix.java
  37. 1 1
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/BizObject.java
  38. 1 1
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/DateConvert.java
  39. 1 1
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/ErrorCode.java
  40. 1 1
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/JobType.java
  41. 7 5
      src/main/java/com/yihu/hos/common/constants/Constants.java
  42. 1 1
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/SessionAttributeKeys.java
  43. 1 1
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/SqlConstants.java
  44. 1 1
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/SystemDictId.java
  45. 1 1
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/exception/ApiException.java
  46. 13 3
      hos-arbiter/src/main/java/com/yihu/hos/arbiter/models/ServiceFlow.java
  47. 122 113
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/util/GridFSUtil.java
  48. 1 1
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/util/sql/RequestParamTransformer.java
  49. 1 1
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/util/sql/SqlCreator.java
  50. 1 1
      src/main/java/com/yihu/hos/crawler/service/CrawlerService.java
  51. 1 1
      src/main/java/com/yihu/hos/crawler/service/EsbHttp.java
  52. 1 1
      src/main/java/com/yihu/hos/datacollect/controller/DataCollectController.java
  53. 1 1
      src/main/java/com/yihu/hos/datacollect/dao/DatacollectDao.java
  54. 1 1
      src/main/java/com/yihu/hos/datacollect/dao/DatacollectLogDao.java
  55. 2 2
      src/main/java/com/yihu/hos/datacollect/service/DatacollectService.java
  56. 2 2
      src/main/java/com/yihu/hos/listeners/ApplicationStart.java
  57. 2 2
      src/main/java/com/yihu/hos/monitor/service/ServiceMonitorService.java
  58. 29 30
      src/main/java/com/yihu/hos/services/ServiceFlowEventService.java
  59. 1 1
      src/main/java/com/yihu/hos/standard/controller/StandardController.java
  60. 1 1
      src/main/java/com/yihu/hos/standard/service/adapter/AdapterDatasetRelationService.java
  61. 2 2
      src/main/java/com/yihu/hos/standard/service/adapter/AdapterDatasetService.java
  62. 1 1
      src/main/java/com/yihu/hos/standard/service/adapter/AdapterDictEntryService.java
  63. 2 2
      src/main/java/com/yihu/hos/standard/service/adapter/AdapterMetadataService.java
  64. 1 1
      src/main/java/com/yihu/hos/standard/service/adapter/AdapterSchemeDispatchService.java
  65. 1 1
      src/main/java/com/yihu/hos/standard/service/adapter/AdapterSchemeService.java
  66. 2 2
      src/main/java/com/yihu/hos/standard/service/adapter/AdapterSchemeVersionService.java
  67. 1 1
      src/main/java/com/yihu/hos/standard/service/bo/AdapterVersion.java
  68. 2 4
      src/main/java/com/yihu/hos/standard/service/standard/StandardService.java
  69. 2 2
      src/main/java/com/yihu/hos/standard/service/standard/StandardVersionService.java
  70. 2 2
      src/main/java/com/yihu/hos/standard/service/standard/StdCDACatalogService.java
  71. 1 1
      src/main/java/com/yihu/hos/standard/service/standard/StdCDADatasetService.java
  72. 1 1
      src/main/java/com/yihu/hos/standard/service/standard/StdCDAService.java
  73. 1 2
      src/main/java/com/yihu/hos/standard/service/standard/StdDatasetCatalogService.java
  74. 2 3
      src/main/java/com/yihu/hos/standard/service/standard/StdDatasetService.java
  75. 2 2
      src/main/java/com/yihu/hos/standard/service/standard/StdDictEntryService.java
  76. 2 2
      src/main/java/com/yihu/hos/standard/service/standard/StdDictService.java
  77. 2 3
      src/main/java/com/yihu/hos/standard/service/standard/StdMetadataService.java
  78. 2 2
      src/main/java/com/yihu/hos/standard/service/standard/StdPublisherService.java
  79. 3 8
      src/main/java/com/yihu/hos/system/controller/FlowController.java
  80. 0 115
      src/main/java/com/yihu/hos/system/model/bo/ServiceFlow.java
  81. 40 37
      src/main/java/com/yihu/hos/system/service/FlowManager.java

+ 82 - 62
hos-arbiter/hos-arbiter.iml

@ -99,18 +99,96 @@
    <orderEntry type="library" name="Maven: org.jasypt:jasypt:1.9.0" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-configuration-processor:1.4.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.json:json:20140107" level="project" />
    <orderEntry type="module" module-name="hos-web-framework" />
    <orderEntry type="library" name="Maven: eu.medsea.mimeutil:mime-util:2.1.3" level="project" />
    <orderEntry type="library" name="Maven: log4j:log4j:1.2.17" 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.boot:spring-boot-autoconfigure:1.4.1.RELEASE" 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.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" />
    <orderEntry type="library" name="Maven: org.javassist:javassist:3.20.0-GA" level="project" />
    <orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
    <orderEntry type="library" name="Maven: org.jboss:jandex:2.0.0.Final" level="project" />
    <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
    <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-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" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.5" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate:hibernate-validator:5.2.4.Final" level="project" />
    <orderEntry type="library" name="Maven: javax.validation:validation-api:1.1.0.Final" level="project" />
    <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" />
    <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" />
    <orderEntry type="library" name="Maven: org.mongodb:bson:3.2.2" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-mongodb:1.9.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.mongodb:mongo-java-driver:3.2.2" level="project" />
    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.37" level="project" />
    <orderEntry type="library" name="Maven: com.oracle:ojdbc6:11.2.0.3.0" level="project" />
    <orderEntry type="module" module-name="hos-core" />
    <orderEntry type="library" name="Maven: net.lingala.zip4j:zip4j:1.3.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.0" level="project" />
    <orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.3.1" level="project" />
    <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-beanutils:commons-beanutils:1.9.2" level="project" />
    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" 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: 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:httpcore:4.4.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.2" 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: 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" 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" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-core:2.18.0" level="project" />
    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.11" level="project" />
    <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.18.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-spring:2.18.0" 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.18.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-http-common:2.18.0" 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.18.0" 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" />
@ -147,8 +225,6 @@
    <orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.11" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-xmljson:2.18.0" level="project" />
    <orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.4" level="project" />
    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.2" level="project" />
    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
    <orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
@ -167,61 +243,8 @@
    <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.18.0" level="project" />
    <orderEntry type="library" name="Maven: xom:xom:1.2.5" level="project" />
    <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" />
    <orderEntry type="library" name="Maven: xerces:xercesImpl:2.8.0" level="project" />
    <orderEntry type="library" name="Maven: xalan:xalan:2.7.0" 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: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.boot:spring-boot-autoconfigure:1.4.1.RELEASE" 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-tomcat:1.4.1.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.5" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.5" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate:hibernate-validator:5.2.4.Final" level="project" />
    <orderEntry type="library" name="Maven: javax.validation:validation-api:1.1.0.Final" level="project" />
    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.0.Final" level="project" />
    <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" />
    <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" />
    <orderEntry type="library" name="Maven: org.mongodb:bson:3.2.2" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-mongodb:1.9.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.mongodb:mongo-java-driver:3.2.2" level="project" />
    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.37" level="project" />
    <orderEntry type="library" name="Maven: com.oracle:ojdbc6:11.2.0.3.0" level="project" />
    <orderEntry type="module" module-name="hos-core" />
    <orderEntry type="library" name="Maven: net.lingala.zip4j:zip4j:1.3.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.0" level="project" />
    <orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.3.1" level="project" />
    <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: 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: 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: 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: 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" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.4.1.RELEASE" level="project" />
@ -236,8 +259,5 @@
    <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.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>
</module>

+ 5 - 0
hos-arbiter/pom.xml

@ -35,6 +35,11 @@
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.yihu.hos</groupId>
            <artifactId>hos-web-framework</artifactId>
            <version>1.1.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>

+ 10 - 7
hos-arbiter/src/main/java/com/yihu/hos/arbiter/services/ServiceFlowService.java

@ -4,7 +4,8 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.arbiter.common.constants.Constants;
import com.yihu.hos.arbiter.models.BrokerServer;
import com.yihu.hos.arbiter.models.ServiceFlow;
import com.yihu.hos.web.framework.model.bo.ServiceFlow;
import com.yihu.hos.core.http.HTTPResponse;
import com.yihu.hos.core.http.HttpClientKit;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
@ -49,9 +50,8 @@ public class ServiceFlowService {
        update.set("handleFiles", serviceFlow.getHandleFiles());
        update.set("updated", serviceFlow.getUpdated());
        update.set("flowType", serviceFlow.getFlowType());
        update.set("cron", serviceFlow.getCron());
        mongoOperations.upsert(query, update, BrokerServer.class);
        mongoOperations.upsert(query, update, ServiceFlow.class);
    }
    public String get(String serviceName) {
@ -138,7 +138,7 @@ public class ServiceFlowService {
            ServiceFlow serviceFlow = objectMapper.readValue(msg, ServiceFlow.class);
            this.save(serviceFlow);
            boolean one = serviceFlow.getFlowType().equals(Constants.JAVA);   //有cron表达式,就是采集任务。
            boolean one = Constants.JAVA.equals(serviceFlow.getFlowType());   //有cron表达式,就是采集任务。
            if (one) {
                List<BrokerServer> flowOnBroker = brokerServerService.getFlowOnBroker(serviceFlow.getRouteCode());
                if (flowOnBroker != null && flowOnBroker.size() != 0) {
@ -153,13 +153,16 @@ public class ServiceFlowService {
                }
                switch (method) {
                    case "post":
                        HttpClientKit.post(brokerServer.getURL() + path, msg);
                        HTTPResponse response = HttpClientKit.post(brokerServer.getURL() + path, msg);
                        if (response.getStatusCode() == 200){
                            String body = response.getBody();
                        }
                        break;
                    case "put":
                        HttpClientKit.post(brokerServer.getURL() + path, msg);
                        HttpClientKit.put(brokerServer.getURL() + path, msg);
                        break;
                    case "delete":
                        HttpClientKit.post(brokerServer.getURL() + path, msg);
                        HttpClientKit.delete(brokerServer.getURL() + path, msg);
                        break;
                    default:
                        break;

+ 11 - 2
hos-broker/src/main/java/com/yihu/hos/broker/controllers/ESBCamelController.java

@ -1,6 +1,6 @@
package com.yihu.hos.broker.controllers;
import com.yihu.hos.broker.services.ESBCamelService;
import com.yihu.hos.broker.services.camel.ESBCamelService;
import com.yihu.hos.web.framework.model.Result;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -30,7 +30,7 @@ public class ESBCamelController {
    public Result onProcessorAdded(
            @ApiParam(name = "msg", value = "消息", required = true)
            @RequestBody() String msg) {
        return esbCamelService.onProcessorAdded(msg);
        return esbCamelService.onServiceFlowAdd(msg);
    }
@ -114,4 +114,13 @@ public class ESBCamelController {
        return Result.success(msg);
    }
    @RequestMapping(value = "/serviceFlow", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
    @ApiOperation(value = "新增Processor处理器", produces = "application/json", notes = "当外界组件通知一个新的processor处理器被定义时,该事件被触发")
    public Result flowRefresh(
            @ApiParam(name = "msg", value = "消息", required = true)
            @RequestBody() String msg) {
        return esbCamelService.onServiceFlowStart(msg);
    }
}

+ 4 - 4
hos-broker/src/main/java/com/yihu/hos/broker/listeners/ApplicationStartListener.java

@ -35,11 +35,11 @@ public class ApplicationStartListener implements ApplicationListener<ContextRefr
        ClassLoader camelESBClassLoader = new URLClassLoader(URLs.toArray(new URL[]{}), currentClassLoader);
        Thread.currentThread().setContextClassLoader(camelESBClassLoader);
        SystemCamelContext.getDefaultCamelContext().setApplicationContextClassLoader(camelESBClassLoader);
        SystemCamelContext.getContext().setApplicationContextClassLoader(camelESBClassLoader);
        // 然后就可以进行RouteBuilder的加载
        SystemCamelContext.getDefaultCamelContext().setTracing(true);
        SystemCamelContext.getDefaultCamelContext().setUseMDCLogging(true);
        SystemCamelContext.getDefaultCamelContext().start();
        SystemCamelContext.getContext().setTracing(true);
        SystemCamelContext.getContext().setUseMDCLogging(true);
        SystemCamelContext.getContext().start();
        logger.info("Apache Camel Context 启动完成...");
    }

+ 6 - 5
hos-broker/src/main/java/com/yihu/hos/broker/models/SystemCamelContext.java

@ -7,11 +7,12 @@ import org.apache.camel.impl.DefaultCamelContext;
 * Created by lingfeng on 2016/8/9.
 */
public class SystemCamelContext {
    private static CamelContext defaultCamelContext;
    public static CamelContext getDefaultCamelContext() {
        if (defaultCamelContext == null) {
            defaultCamelContext = new DefaultCamelContext();
    private static CamelContext context;
    public static CamelContext getContext() {
        if (context == null) {
            context = new DefaultCamelContext();
        }
        return defaultCamelContext;
        return context;
    }
}

+ 23 - 5
hos-broker/src/main/java/com/yihu/hos/broker/models/SystemClassMapping.java

@ -1,17 +1,35 @@
package com.yihu.hos.broker.models;
import com.yihu.hos.core.constants.CoreConstant;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
/**
 * 加载的类文件列表
 * <p>
 * Created by lingfeng on 2016/8/4.
 */
public class SystemClassMapping {
    private static Map<String, String> systemClassNameMapping;
    public static Map<String, String> getSystemClassNameMapping() {
        if (systemClassNameMapping == null) {
            systemClassNameMapping = new HashMap<>();
    private static Map<String, String> mapping;
    public static Map<String, String> getMapping() {
        if (mapping == null) {
            mapping = new HashMap<>();
        }
        return systemClassNameMapping;
        return mapping;
    }
    public static void put(String routeCode, String packageName, String className, String type) {
        mapping.put(routeCode + type + className, packageName + CoreConstant.DOT + className);
    }
    public static String get(String routeCode, String className, String type) {
        return mapping.get(routeCode + type + className);
    }
    public static URL getResource(Object o) {
        return o.getClass().getProtectionDomain().getClassLoader().getResource("");
    }
}

+ 0 - 115
hos-broker/src/main/java/com/yihu/hos/broker/models/bo/ServiceFlow.java

@ -1,115 +0,0 @@
package com.yihu.hos.broker.models.bo;
import java.util.ArrayList;
import java.util.Date;
/**
 * @author Airhead
 * @since 2016/8/4.
 */
public class ServiceFlow {
    private String routeCode;
    private ArrayList<HandleFile> handleFiles;
    private Date updated;
    private String flowType;    //pull or push?
    private String cron;    //采集任务时使用
    public String getCron() {
        return cron;
    }
    public void setCron(String cron) {
        this.cron = cron;
    }
    public String getRouteCode() {
        return routeCode;
    }
    public void setRouteCode(String routeCode) {
        this.routeCode = routeCode;
    }
    public Date getUpdated() {
        return updated;
    }
    public void setUpdated(Date updated) {
        this.updated = updated;
    }
    public ArrayList<HandleFile> getHandleFiles() {
        return handleFiles;
    }
    public void setHandleFiles(ArrayList<HandleFile> handleFiles) {
        this.handleFiles = handleFiles;
    }
    public void addHandleFile(HandleFile handleFile) {
        if (handleFiles == null) {
            handleFiles = new ArrayList<>();
        }
        handleFiles.add(handleFile);
    }
    public String getFlowType() {
        return flowType;
    }
    public void setFlowType(String flowType) {
        this.flowType = flowType;
    }
    public class HandleFile {
        private String usage;   //router or processor
        private String packageName;
        private String className;
        private String filePath;
        private String fileType;    //java or class
        public HandleFile() {
        }
        public String getPackageName() {
            return packageName;
        }
        public void setPackageName(String packageName) {
            this.packageName = packageName;
        }
        public String getClassName() {
            return className;
        }
        public void setClassName(String className) {
            this.className = className;
        }
        public String getFilePath() {
            return filePath;
        }
        public void setFilePath(String filePath) {
            this.filePath = filePath;
        }
        public String getFileType() {
            return fileType;
        }
        public void setFileType(String fileType) {
            this.fileType = fileType;
        }
        public String getUsage() {
            return usage;
        }
        public void setUsage(String usage) {
            this.usage = usage;
        }
    }
}

+ 0 - 500
hos-broker/src/main/java/com/yihu/hos/broker/services/ESBCamelService.java

@ -1,500 +0,0 @@
package com.yihu.hos.broker.services;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mongodb.client.MongoDatabase;
import com.yihu.hos.broker.common.classLoader.DynamicClassLoader;
import com.yihu.hos.broker.common.compiler.CamelCompiler;
import com.yihu.hos.broker.common.compiler.ClassParams;
import com.yihu.hos.broker.common.constants.BrokerConstant;
import com.yihu.hos.broker.configurations.MongoConfiguration;
import com.yihu.hos.broker.models.SystemCamelContext;
import com.yihu.hos.broker.models.SystemClassMapping;
import com.yihu.hos.broker.models.bo.ServiceFlow;
import com.yihu.hos.core.constants.CoreConstant;
import com.yihu.hos.core.datatype.ClassFileUtil;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.core.encrypt.DES;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.GridFSUtil;
import org.apache.camel.builder.RouteBuilder;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Map;
/**
 * Created by lingfeng on 2016/8/4.
 */
@Service
public class ESBCamelService {
    public static final String BEAN_ID = "ESBCamelService";
    private static Logger logger = LogManager.getLogger(ESBCamelService.class);
    @Autowired
    private MongoConfiguration mongoConfig;
    private String dbName = "upload";
    @Autowired
    private ObjectMapper objectMapper;
    /**
     * 当外界组件通知一个新的processor处理器被定义时,该事件被触发。
     */
    public Result onProcessorAdded(String msg) {
        try {
            ServiceFlow serviceFlow = objectMapper.readValue(msg, ServiceFlow.class);
            ArrayList<ServiceFlow.HandleFile> handleFiles = serviceFlow.getHandleFiles();
            if (handleFiles == null || handleFiles.size() == 0) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            ServiceFlow.HandleFile handleFile = handleFiles.get(0);
            if (handleFile == null || StringUtil.isEmpty(serviceFlow.getRouteCode()) || StringUtil.isEmpty(handleFile.getPackageName())
                    || StringUtil.isEmpty(handleFile.getPackageName()) || StringUtil.isEmpty(handleFile.getFilePath())) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            FileOutputStream out = this.createClassfile(serviceFlow.getRouteCode(), handleFile.getPackageName(), handleFile.getPackageName(), BrokerConstant.PROCESSOR);
            String fileName = DES.decrypt(handleFile.getFilePath(), DES.COMMON_PASSWORD);
            MongoDatabase db = mongoConfig.mongoClient().getDatabase(dbName);
            if (GridFSUtil.readFile(db, out, fileName)) {
                return Result.success("新增处理器成功!");
            } else {
                return Result.error("新增处理器失败!");
            }
        } catch (Exception e) {
            logger.error(e);
            return Result.error("新增处理器失败!");
        }
    }
    /**
     * 当外界组件通知一个已有的processor处理器data部分发生变化时,该事件被触发。
     */
    public Result onProcessorDataChanged(String msg) {
        try {
            ServiceFlow serviceFlow = objectMapper.readValue(msg, ServiceFlow.class);
            ArrayList<ServiceFlow.HandleFile> handleFiles = serviceFlow.getHandleFiles();
            if (handleFiles == null || handleFiles.size() == 0) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            ServiceFlow.HandleFile handleFile = handleFiles.get(0);
            String routeCode = serviceFlow.getRouteCode();
            String packageName = handleFile.getPackageName();
            String className = handleFile.getClassName();
            String path = handleFile.getFilePath();
            if (StringUtil.isEmpty(routeCode) || StringUtil.isEmpty(packageName)
                    || StringUtil.isEmpty(className) || StringUtil.isEmpty(path)) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            FileOutputStream out = this.updateClassfile(routeCode, packageName, className, BrokerConstant.PROCESSOR);
            String fileName = DES.decrypt(path, DES.COMMON_PASSWORD);
            MongoDatabase db = mongoConfig.mongoClient().getDatabase(dbName);
            if (GridFSUtil.readFile(db, out, fileName)) {
                SystemCamelContext.getDefaultCamelContext().stopRoute(routeCode);
                SystemCamelContext.getDefaultCamelContext().removeRoute(routeCode);
                DynamicClassLoader classLoader = new DynamicClassLoader(DynamicClassLoader.class.getClassLoader());
                Class<RouteBuilder> routeBuilderClass = (Class<RouteBuilder>) classLoader.loadClass(this.getClass().getProtectionDomain().getClassLoader().getResource("").getPath(), SystemClassMapping.getSystemClassNameMapping().get(serviceFlow + BrokerConstant.ROUTE + className));
                classLoader.loadClass(ClassLoader.getSystemResource(CoreConstant.EMPTY).getPath(), SystemClassMapping.getSystemClassNameMapping().get(serviceFlow + BrokerConstant.PROCESSOR + className));
                if (routeBuilderClass != null) {
                    RouteBuilder routeBuilder = routeBuilderClass.newInstance();
                    SystemCamelContext.getDefaultCamelContext().addRoutes(routeBuilder);
                    return Result.success("修改处理器成功!");
                }
            }
            return Result.error("修改处理器失败!");
        } catch (Exception e) {
            logger.error(e);
            return Result.error("修改处理器失败!");
        }
    }
    /**
     * 当外界组件通知一个已有的Processor路由定义被删除时,该事件被触发。
     */
    public Result onProcessorDataDelete(String msg) {
        try {
            ServiceFlow serviceFlow = objectMapper.readValue(msg, ServiceFlow.class);
            ArrayList<ServiceFlow.HandleFile> handleFiles = serviceFlow.getHandleFiles();
            if (handleFiles == null || handleFiles.size() == 0) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            ServiceFlow.HandleFile handleFile = handleFiles.get(0);
            String routeCode = serviceFlow.getRouteCode();
            String packageName = handleFile.getPackageName();
            String className = handleFile.getClassName();
            if (StringUtil.isEmpty(serviceFlow) || StringUtil.isEmpty(packageName)
                    || StringUtil.isEmpty(className)) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            SystemCamelContext.getDefaultCamelContext().stopRoute(routeCode);
            SystemCamelContext.getDefaultCamelContext().removeRoute(routeCode);
            this.deleteClassfile(routeCode, packageName, className, BrokerConstant.PROCESSOR);
            return Result.success("删除路由成功!");
        } catch (Exception e) {
            return Result.error("删除路由失败!");
        }
    }
    /**
     * 当外界组件通知一个新的RouteDefine路由被定义时,该事件被触发
     */
    public Result onRouteDefineAdded(String msg) {
        try {
            ServiceFlow serviceFlow = objectMapper.readValue(msg, ServiceFlow.class);
            ArrayList<ServiceFlow.HandleFile> handleFiles = serviceFlow.getHandleFiles();
            if (handleFiles == null || handleFiles.size() == 0) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            ServiceFlow.HandleFile handleFile = handleFiles.get(0);
            String routeCode = serviceFlow.getRouteCode();
            String packageName = handleFile.getPackageName();
            String className = handleFile.getClassName();
            String path = handleFile.getFilePath();
            if (StringUtil.isEmpty(serviceFlow) || StringUtil.isEmpty(packageName)
                    || StringUtil.isEmpty(className) || StringUtil.isEmpty(path)) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            // 第1、2两步处理过程,都是在这里完成
            FileOutputStream out = this.createClassfile(routeCode, packageName, className, BrokerConstant.ROUTE);
            String fileName = DES.decrypt(path, DES.COMMON_PASSWORD);
            MongoDatabase db = mongoConfig.mongoClient().getDatabase(dbName);
            if (GridFSUtil.readFile(db, out, fileName)) {
                // 3、===============加载到CamelContext中
                DynamicClassLoader classLoader = new DynamicClassLoader(DynamicClassLoader.class.getClassLoader());
                Class<RouteBuilder> routeBuilderClass = (Class<RouteBuilder>) classLoader.loadClass(SystemClassMapping.getSystemClassNameMapping().get(serviceFlow + BrokerConstant.ROUTE + className));
                if (routeBuilderClass != null) {
                    RouteBuilder routeBuilder = routeBuilderClass.newInstance();
                    SystemCamelContext.getDefaultCamelContext().addRoutes(routeBuilder);
                }
                return Result.success("新增路由成功!");
            } else {
                return Result.error("新增路由失败!");
            }
        } catch (Exception e) {
            logger.error(e);
            return Result.error("新增路由失败!");
        }
    }
    /**
     * 当外界组件通知一个已有的RouteDefine路由定义被改变时,主要就是路由定义内容被改变时,该事件被触发。
     */
    public Result onRouteDefineChanged(String msg) {
        try {
            ServiceFlow serviceFlow = objectMapper.readValue(msg, ServiceFlow.class);
            ArrayList<ServiceFlow.HandleFile> handleFiles = serviceFlow.getHandleFiles();
            if (handleFiles == null || handleFiles.size() == 0) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            ServiceFlow.HandleFile handleFile = handleFiles.get(0);
            String routeCode = serviceFlow.getRouteCode();
            String packageName = handleFile.getPackageName();
            String className = handleFile.getClassName();
            String path = handleFile.getFilePath();
            if (StringUtil.isEmpty(serviceFlow) || StringUtil.isEmpty(packageName)
                    || StringUtil.isEmpty(className) || StringUtil.isEmpty(path)) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            SystemCamelContext.getDefaultCamelContext().stopRoute(routeCode);
            SystemCamelContext.getDefaultCamelContext().removeRoute(routeCode);
            FileOutputStream out = this.updateClassfile(routeCode, packageName, className, BrokerConstant.ROUTE);
            String fileName = DES.decrypt(path, DES.COMMON_PASSWORD);
            MongoDatabase db = mongoConfig.mongoClient().getDatabase(dbName);
            if (GridFSUtil.readFile(db, out, fileName)) {
                // 3、===============加载到CamelContext中
                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 + className));
                if (routeBuilderClass != null) {
                    RouteBuilder routeBuilder = routeBuilderClass.newInstance();
                    SystemCamelContext.getDefaultCamelContext().addRoutes(routeBuilder);
                    return Result.success("修改路由成功!");
                }
            }
            return Result.error("修改路由失败!");
        } catch (Exception e) {
            return Result.error("修改路由失败!");
        }
    }
    /**
     * 当外界组件通知一个已有的RouteDefine路由定义被删除时,该事件被触发。
     */
    public Result onRouteDefineDelete(String msg) {
        try {
            ServiceFlow serviceFlow = objectMapper.readValue(msg, ServiceFlow.class);
            ArrayList<ServiceFlow.HandleFile> handleFiles = serviceFlow.getHandleFiles();
            if (handleFiles == null || handleFiles.size() == 0) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            ServiceFlow.HandleFile handleFile = handleFiles.get(0);
            String routeCode = serviceFlow.getRouteCode();
            String packageName = handleFile.getPackageName();
            String className = handleFile.getClassName();
            String path = handleFile.getFilePath();
            if (StringUtil.isEmpty(serviceFlow) || StringUtil.isEmpty(packageName)
                    || StringUtil.isEmpty(className)) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            SystemCamelContext.getDefaultCamelContext().stopRoute(routeCode);
            SystemCamelContext.getDefaultCamelContext().removeRoute(routeCode);
            this.deleteClassfile(routeCode, packageName, className, BrokerConstant.ROUTE);
            return Result.success("删除路由成功!");
        } catch (Exception e) {
            return Result.error("删除路由失败!");
        }
    }
    /**
     * 启动路由时,该事件被触发。
     */
    public Result onRouteDefineStart(String msg) {
        try {
            ServiceFlow serviceFlow = objectMapper.readValue(msg, ServiceFlow.class);
            ArrayList<ServiceFlow.HandleFile> handleFiles = serviceFlow.getHandleFiles();
            if (handleFiles == null || handleFiles.size() == 0) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            ServiceFlow.HandleFile handleFile = handleFiles.get(0);
            String routeCode = serviceFlow.getRouteCode();
            String packageName = handleFile.getPackageName();
            String className = handleFile.getClassName();
            String path = handleFile.getFilePath();
            if (StringUtil.isEmpty(serviceFlow)) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            SystemCamelContext.getDefaultCamelContext().startRoute(routeCode);
            return Result.success("启动路由成功!");
        } catch (Exception e) {
            return Result.error("启动路由失败!");
        }
    }
    /**
     * 停止路由时,该事件被触发。
     */
    public Result onRouteDefineStop(String msg) {
        try {
            ServiceFlow serviceFlow = objectMapper.readValue(msg, ServiceFlow.class);
            ArrayList<ServiceFlow.HandleFile> handleFiles = serviceFlow.getHandleFiles();
            if (handleFiles == null || handleFiles.size() == 0) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            ServiceFlow.HandleFile handleFile = handleFiles.get(0);
            String routeCode = serviceFlow.getRouteCode();
            String packageName = handleFile.getPackageName();
            String className = handleFile.getClassName();
            String path = handleFile.getFilePath();
            if (StringUtil.isEmpty(serviceFlow)) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            SystemCamelContext.getDefaultCamelContext().stopRoute(routeCode);
            return Result.success("停止路由成功!");
        } catch (Exception e) {
            return Result.error("停止路由失败!");
        }
    }
    public Result onProcessorClassAdded(String msg) {
        try {
            ServiceFlow serviceFlow = objectMapper.readValue(msg, ServiceFlow.class);
            ArrayList<ServiceFlow.HandleFile> handleFiles = serviceFlow.getHandleFiles();
            if (handleFiles == null || handleFiles.size() == 0) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            ServiceFlow.HandleFile handleFile = handleFiles.get(0);
            String routeCode = serviceFlow.getRouteCode();
            String packageName = handleFile.getPackageName();
            String className = handleFile.getClassName();
            String path = handleFile.getFilePath();
            if (StringUtil.isEmpty(serviceFlow) || StringUtil.isEmpty(packageName)
                    || StringUtil.isEmpty(className) || StringUtil.isEmpty(path)) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            return this.genProcessorFile(routeCode, packageName, className, path);
        } catch (Exception e) {
            e.printStackTrace();
            logger.error(e);
            return Result.error("新增处理器失败!");
        }
    }
    /**
     * 当外界组件通知一个新的RouteDefine路由被定义时,该事件被触发
     */
    public Result onRouteClassAdded(ClassParams params) {
        try {
            if (StringUtil.isEmpty(params.getRouteId()) || StringUtil.isEmpty(params.getPackageName())
                    || StringUtil.isEmpty(params.getOldClassName()) || StringUtil.isEmpty(params.getFilePath())) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            // 第1、2两步处理过程,都是在这里完成
            this.genRouteFile(params);
            // 3、===============加载到CamelContext中
            ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
            Class<RouteBuilder> routeBuilderClass = (Class<RouteBuilder>) currentClassLoader.loadClass(SystemClassMapping.getSystemClassNameMapping().get(params.getRouteId() + BrokerConstant.ROUTE + params.getNewClassName()));
            if (routeBuilderClass != null) {
                RouteBuilder routeBuilder = routeBuilderClass.newInstance();
                SystemCamelContext.getDefaultCamelContext().addRoutes(routeBuilder);
            }
            return Result.success("新增路由成功!");
        } catch (Exception e) {
            e.printStackTrace();
            logger.error(e);
            return Result.error("新增路由失败!");
        }
    }
    public Result onRouteClassChanged(ClassParams params) {
        try {
            if (StringUtil.isEmpty(params.getRouteId()) || StringUtil.isEmpty(params.getPackageName())
                    || StringUtil.isEmpty(params.getOldClassName()) || StringUtil.isEmpty(params.getFilePath())) {
                logger.error("必要的入参数据不正确,请检查!");
                return Result.error("必要的入参数据不正确,请检查!");
            }
            // 第1、2两步处理过程,都是在这里完成
            SystemCamelContext.getDefaultCamelContext().stopRoute(params.getRouteId());
            SystemCamelContext.getDefaultCamelContext().removeRoute(params.getRouteId());
            this.genRouteFile(params);
            // 3、===============加载到CamelContext中
            DynamicClassLoader classLoader = new DynamicClassLoader(DynamicClassLoader.class.getClassLoader());
            Class<RouteBuilder> routeBuilderClass = (Class<RouteBuilder>) classLoader.loadClass(ClassLoader.getSystemResource(CoreConstant.EMPTY).getPath(), SystemClassMapping.getSystemClassNameMapping().get(params.getRouteId() + BrokerConstant.ROUTE + params.getNewClassName()));
            if (routeBuilderClass != null) {
                RouteBuilder routeBuilder = routeBuilderClass.newInstance();
                SystemCamelContext.getDefaultCamelContext().addRoutes(routeBuilder);
            }
            return Result.success("新增路由成功!");
        } catch (Exception e) {
            e.printStackTrace();
            logger.error(e);
            return Result.error("新增路由失败!");
        }
    }
    /* **************************       修改任务cron生成新的camel文件 add by hzy   *********************************** */
    public Result genProcessorFile(String serviceFlow, String packageName, String className, String path) {
        try {
            String filePath = CamelCompiler.genProcessClass(serviceFlow, path, packageName, className);
            if (filePath != null) {
                return Result.success(filePath);
            } else {
                return Result.error("生成新文件失败1!");
            }
        } catch (IOException e) {
            e.printStackTrace();
            return Result.error("生成新文件失败2!");
        }
    }
    public Result genRouteFile(ClassParams params) {
        try {
            String path = CamelCompiler.genRouteClass(params);
            return Result.success(path);
        } catch (IOException e) {
            e.printStackTrace();
            return Result.error("生成新文件失败!");
        }
    }
    private FileOutputStream createClassfile(String serviceFlow, String packageName, String className, String type) throws MalformedURLException {
        // 1、============
        File systemClassFlowPath = new File(this.getClass().getProtectionDomain().getClassLoader().getResource("").getPath());
        // 记录到工具类中,以便其它线程需要时进行取用
        SystemClassMapping.getSystemClassNameMapping().put(serviceFlow + type + className, packageName + CoreConstant.DOT + className);
        // 2、============开始写入class文件
        FileOutputStream out = ClassFileUtil.createClassfile(systemClassFlowPath.toURI().toURL(), packageName, className);
        // 完成
        logger.info("===================" + packageName + CoreConstant.DOT + className + ".class 生成过程结束");
        return out;
    }
    private FileOutputStream updateClassfile(String serviceFlow, String packageName, String className, String type) throws MalformedURLException {
        // 1、============
        Map<String, String> systemClassNameMapping = SystemClassMapping.getSystemClassNameMapping();
        String systemClassName = systemClassNameMapping.get(serviceFlow + type + className);
        if (StringUtil.isEmpty(systemClassName)) {
            return null;
        }
        File systemClassFlowPath = new File(this.getClass().getProtectionDomain().getClassLoader().getResource("").getPath());
        // 2、============开始写入class文件
        FileOutputStream out = ClassFileUtil.updateClassfile(systemClassFlowPath.toURI().toURL(), packageName, className);
        // 完成
        logger.info("===================" + packageName + CoreConstant.DOT + className + ".class 修改过程结束");
        return out;
    }
    private void deleteClassfile(String serviceFlow, String packageName, String className, String type) {
        // 1、============
        Map<String, String> systemClassNameMapping = SystemClassMapping.getSystemClassNameMapping();
        String systemClassName = systemClassNameMapping.get(serviceFlow + type + className);
        if (StringUtil.isEmpty(systemClassName)) {
            return;
        }
        String packagePath = StringUtil.replaceStrAll(packageName, ".", "/");
        String classPath = ClassLoader.getSystemResource("").getPath() + "/" + packagePath + "/" + className + ".class";
        // 2、============开始写入class文件
        ClassFileUtil.deleteClassfile(classPath);
        // 完成
        logger.info("===================" + packageName + CoreConstant.DOT + className + ".class 删除过程结束");
    }
}

+ 4 - 4
hos-broker/src/main/java/com/yihu/hos/broker/common/classLoader/DynamicClassLoader.java

@ -1,4 +1,4 @@
package com.yihu.hos.broker.common.classLoader;
package com.yihu.hos.broker.services.camel;
import com.yihu.hos.broker.common.constants.BrokerConstant;
import com.yihu.hos.core.constants.CoreConstant;
@ -10,14 +10,14 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class DynamicClassLoader extends ClassLoader {
public class CamelClassLoader extends ClassLoader {
    public DynamicClassLoader(ClassLoader parent) {
    public CamelClassLoader(ClassLoader parent) {
        super(parent);
    }
    @SuppressWarnings("unchecked")
    public Class loadClass(String classPath, String className)
    public Class<?> loadClass(String classPath, String className)
            throws ClassNotFoundException {
        try {
            className = className + CoreConstant.DOT + BrokerConstant.CLASS;

+ 35 - 11
hos-broker/src/main/java/com/yihu/hos/broker/common/compiler/CamelCompiler.java

@ -1,10 +1,10 @@
package com.yihu.hos.broker.common.compiler;
package com.yihu.hos.broker.services.camel;
import com.yihu.hos.broker.common.constants.BrokerConstant;
import com.yihu.hos.core.file.FileUtil;
import com.yihu.hos.broker.models.SystemClassMapping;
import com.yihu.hos.core.file.FileUtil;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import com.yihu.hos.web.framework.util.GridFSUtil;
import javax.tools.*;
@ -22,7 +22,7 @@ import java.util.List;
 * Created at 2016/11/17.
 */
public class CamelCompiler {
    private static final Logger logger = LoggerFactory.getLogger(CamelCompiler.class);
    private static String packagePathTemplate = System.getProperty("user.dir")//获取到项目的根路径
            + "/hos-broker/src/main/java/";
    private static String classPathTemplate = System.getProperty("user.dir")//获取到项目的根路径
@ -62,11 +62,11 @@ public class CamelCompiler {
            } else {
                //添加加载类
                String dotPackageName = params.getPackageName().replace("/", "."); //将带“/"的包名转为”.";
                SystemClassMapping.getSystemClassNameMapping().put(params.getRouteId() + BrokerConstant.ROUTE + params.getNewClassName(), dotPackageName + params.getNewClassName());
                SystemClassMapping.getMapping().put(params.getRouteId() + BrokerConstant.ROUTE + params.getNewClassName(), dotPackageName + params.getNewClassName());
                String loadClassName = loadJavaFile.getName().replace(".java", ".class");
                targetPath = targetPath.substring(1);
                String loadClassPath = targetPath + params.getPackageName() + loadClassName;//加载的class路径
                copyClassPath =   GridFSUtil.uploadFile("upload", loadClassPath, params.getFilePath().replace(".java", ".class"));
                copyClassPath = GridFSUtil.uploadFile("upload", loadClassPath, params.getFilePath().replace(".java", ".class"));
                return copyClassPath;
            }
@ -96,7 +96,7 @@ public class CamelCompiler {
        File fPath = new File(packagePathTemplate + packageName);
        if (!fPath.exists()) fPath.mkdirs();
        File loadFIle = genProcessorJavaFile(routeId,filePath, packageName, className);
        File loadFIle = genProcessorJavaFile(routeId, filePath, packageName, className);
        if (loadFIle.exists()) {
            Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjects(loadFIle.getAbsolutePath());
            // options命令行选项
@ -115,12 +115,12 @@ public class CamelCompiler {
                return null;
            } else {
                String dotPackageName = packageName.replace("/", ".");//将带“/"的包名转为”.";
                SystemClassMapping.getSystemClassNameMapping().put(routeId + BrokerConstant.PROCESSOR + className, dotPackageName + className);
                SystemClassMapping.getMapping().put(routeId + BrokerConstant.PROCESSOR + className, dotPackageName + className);
                String loadPath = loadFIle.getName().replace(".java", ".class");
                targetPath = targetPath.substring(1);
                String loadClassPath = targetPath + packageName + loadPath;//要加载的class路径
//                FileUtils.copyFile(new File(loadClassPath), new File(copyClassPath));
                copyClassPath =   GridFSUtil.uploadFile("upload", loadClassPath,filePath.replace(".java",".class"));
                copyClassPath = GridFSUtil.uploadFile("upload", loadClassPath, filePath.replace(".java", ".class"));
                return copyClassPath;
            }
@ -175,7 +175,7 @@ public class CamelCompiler {
    }
    public static File genProcessorJavaFile(String routId ,String filePath, String packageName, String className) {
    public static File genProcessorJavaFile(String routId, String filePath, String packageName, String className) {
        try {
            String newPath = String.format(classPathTemplate, packageName, className);
            newPath = GridFSUtil.downFile("upload", newPath, filePath);
@ -199,5 +199,29 @@ public class CamelCompiler {
        return null;
    }
    public static boolean compile(String sourcePath, String targetPath) throws IOException {
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
        // 建立DiagnosticCollector对象
        DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
        StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, Charset.forName("UTF-8"));
        // 建立源文件对象,根据java模板文件生成要加载的java类
        Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjects(sourcePath);
        Iterable<String> options = Arrays.asList("-d", targetPath, "-sourcepath", targetPath);// 指定的路径一定要存在,javac不会自己创建文件夹
        JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, options, null, compilationUnits);
        // 编译源程序
        boolean success = task.call();
        fileManager.close();
        if (!success) {
            logger.error("compile source file failed.");
            //错误信息打印
            List diagnosticList = diagnostics.getDiagnostics();
            for (Object aDiagnosticList : diagnosticList) {
                logger.error(aDiagnosticList.toString());
            }
        }
        return success;
    }
}

+ 1 - 1
hos-broker/src/main/java/com/yihu/hos/broker/common/compiler/ClassParams.java

@ -1,4 +1,4 @@
package com.yihu.hos.broker.common.compiler;
package com.yihu.hos.broker.services.camel;
/**
 *  请求参数封装类-(camel文件生成)

+ 307 - 0
hos-broker/src/main/java/com/yihu/hos/broker/services/camel/ESBCamelService.java

@ -0,0 +1,307 @@
package com.yihu.hos.broker.services.camel;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mongodb.client.MongoDatabase;
import com.yihu.hos.broker.configurations.MongoConfiguration;
import com.yihu.hos.broker.models.SystemCamelContext;
import com.yihu.hos.broker.models.SystemClassMapping;
import com.yihu.hos.web.framework.model.bo.ServiceFlow;
import com.yihu.hos.core.constants.CoreConstant;
import com.yihu.hos.core.datatype.ClassFileUtil;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.core.encrypt.DES;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.GridFSUtil;
import org.apache.camel.builder.RouteBuilder;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
/**
 * 对于Broker来说,Camel路由的加载只有这样的几个过程。
 * 文件相关
 * 1.Java, Class文件下载
 * 2.Java文件编译
 * 3.Class文件上传(有java编译生成的class的文件更新)
 * 4.Java,Class删除文件
 * Camel相关
 * 1.增加服务流程
 * 2.删除服务流程
 * 3.修改服务流程
 * 3.1增加Router,Processor
 * 3.2减少Router,Processor
 * 4.启动服务流程
 * 5.停止服务流程
 * <p>
 * Created by lingfeng on 2016/8/4.
 */
@Service
public class ESBCamelService {
    private static Logger logger = LogManager.getLogger(ESBCamelService.class);
    @Autowired
    private MongoConfiguration mongoConfig;
    private String dbName = "upload";
    @Autowired
    private ObjectMapper objectMapper;
    public Result onServiceFlowAdd(String msg) {
        try {
            ServiceFlowValid serviceFlowValid = new ServiceFlowValid(msg).invoke();
            if (serviceFlowValid.is()) return Result.error("必要的入参数据不正确,请检查!");
            ServiceFlow.HandleFile handleFile = serviceFlowValid.getHandleFile();
            boolean created;
            if ("java".equals(handleFile.getFileType())) {
                created = this.generateClassFile(handleFile);
            } else {
                created = this.createClassFile(handleFile);
            }
            if (!created) {
                return Result.error("服务流程变更增加失败!");
            }
            this.startRouter(handleFile);
            return Result.error("服务流程变更增加成功!");
        } catch (Exception e) {
            logger.error(e);
            return Result.error("服务流程变更增加失败!");
        }
    }
    /**
     * 当外界组件通知一个新的processor处理器被定义时,该事件被触发。
     */
    public Result onServiceFlowModifyAdd(String msg) {
        try {
            ServiceFlowValid serviceFlowValid = new ServiceFlowValid(msg).invoke();
            if (serviceFlowValid.is()) return Result.error("必要的入参数据不正确,请检查!");
            ServiceFlow serviceFlow = serviceFlowValid.getServiceFlow();
            ServiceFlow.HandleFile handleFile = serviceFlowValid.getHandleFile();
            boolean created;
            if ("java".equals(handleFile.getFileType())) {
                created = this.generateClassFile(handleFile);
            } else {
                created = this.createClassFile(handleFile);
            }
            if (!created) {
                return Result.error("服务流程变更增加失败!");
            }
            this.stopRouter(serviceFlow.getRouteCode());
            this.removeRouter(serviceFlow.getRouteCode());
            this.startRouter(handleFile);
            return Result.error("服务流程变更增加成功!");
        } catch (Exception e) {
            logger.error(e);
            return Result.error("服务流程变更增加失败!");
        }
    }
    /**
     * 当外界组件通知一个已有的RouteDefine路由定义被删除时,该事件被触发。
     */
    public Result onServiceFlowModifyRedurce(String msg) {
        try {
            ServiceFlowValid serviceFlowValid = new ServiceFlowValid(msg).invoke();
            if (serviceFlowValid.is()) return Result.error("必要的入参数据不正确,请检查!");
            ServiceFlow serviceFlow = serviceFlowValid.getServiceFlow();
            ServiceFlow.HandleFile handleFile = serviceFlowValid.getHandleFile();
            String routeCode = serviceFlow.getRouteCode();
            SystemCamelContext.getContext().stopRoute(routeCode);
            SystemCamelContext.getContext().removeRoute(routeCode);
            this.deleteClassFile(handleFile);
            this.startRouter(handleFile);
            return Result.success("服务流程变更减少成功!");
        } catch (Exception e) {
            return Result.error("服务流程变更减少失败!");
        }
    }
    public Result onServiceFlowDelete(String msg) {
        try {
            ServiceFlowValid serviceFlowValid = new ServiceFlowValid(msg).invoke();
            if (serviceFlowValid.is()) return Result.error("必要的入参数据不正确,请检查!");
            ServiceFlow serviceFlow = serviceFlowValid.getServiceFlow();
            ServiceFlow.HandleFile handleFile = serviceFlowValid.getHandleFile();
            String routeCode = serviceFlow.getRouteCode();
            SystemCamelContext.getContext().stopRoute(routeCode);
            SystemCamelContext.getContext().removeRoute(routeCode);
            this.deleteClassFile(handleFile);  //清理文件?
            return Result.success("服务流程删除成功!");
        } catch (Exception e) {
            return Result.error("服务流程删除失败!");
        }
    }
    /**
     * 启动路由时,该事件被触发。
     */
    public Result onServiceFlowStart(String msg) {
        try {
            ServiceFlowValid serviceFlowValid = new ServiceFlowValid(msg).invoke();
            if (serviceFlowValid.is()) return Result.error("必要的入参数据不正确,请检查!");
            ServiceFlow serviceFlow = serviceFlowValid.getServiceFlow();
            String routeCode = serviceFlow.getRouteCode();
            ArrayList<ServiceFlow.HandleFile> handleFiles = serviceFlowValid.getHandleFiles();
            for (ServiceFlow.HandleFile handleFile : handleFiles) {
                boolean created;
                if ("java".equals(handleFile.getFileType())) {
                    created = this.generateClassFile(handleFile);
                } else {
                    created = this.createClassFile(handleFile);
                }
                if (!created) {
                    return Result.error("服务流程启动失败!");
                }
            }
            SystemCamelContext.getContext().startRoute(routeCode);
            return Result.success("服务流程启动成功!");
        } catch (Exception e) {
            return Result.error("服务流程启动失败!");
        }
    }
    /**
     * 停止路由时,该事件被触发。
     */
    public Result onServiceFlowStop(String msg) {
        try {
            ServiceFlowValid serviceFlowValid = new ServiceFlowValid(msg).invoke();
            if (serviceFlowValid.is()) return Result.error("必要的入参数据不正确,请检查!");
            ServiceFlow serviceFlow = serviceFlowValid.getServiceFlow();
            String routeCode = serviceFlow.getRouteCode();
            SystemCamelContext.getContext().stopRoute(routeCode);
            return Result.success("停止路由成功!");
        } catch (Exception e) {
            return Result.error("停止路由失败!");
        }
    }
    private boolean createClassFile(ServiceFlow.HandleFile handleFile) throws Exception {
        SystemClassMapping.put(handleFile.getRouteCode(), handleFile.getPackageName(), handleFile.getClassName(), handleFile.getUsage());
        URL resource = SystemClassMapping.getResource(this);
        FileOutputStream outputStream = ClassFileUtil.createFile(resource, handleFile.getPackageName(), handleFile.getClassName(), ClassFileUtil.CLASS_FILE);
        String fileName = DES.decrypt(handleFile.getFilePath(), DES.COMMON_PASSWORD);
        MongoDatabase db = mongoConfig.mongoClient().getDatabase(dbName);
        return GridFSUtil.readFile(db, outputStream, fileName);
    }
    private boolean generateClassFile(ServiceFlow.HandleFile handleFile) throws Exception {
        SystemClassMapping.put(handleFile.getRouteCode(), handleFile.getPackageName(), handleFile.getClassName(), handleFile.getUsage());
        URL resource = SystemClassMapping.getResource(this);
        FileOutputStream outputStream = ClassFileUtil.createFile(resource, handleFile.getPackageName(), handleFile.getClassName(), ClassFileUtil.JAVA_FILE);
        String fileName = DES.decrypt(handleFile.getFilePath(), DES.COMMON_PASSWORD);
        MongoDatabase db = mongoConfig.mongoClient().getDatabase(dbName);
        boolean read = GridFSUtil.readFile(db, outputStream, fileName);
        if (!read) {
            return false;
        }
        String sourcePath = ClassFileUtil.getFilePath(resource, handleFile.getPackageName(), handleFile.getClassName(), ClassFileUtil.JAVA_FILE);
        return CamelCompiler.compile(sourcePath, resource.toString());
    }
    private void deleteClassFile(ServiceFlow.HandleFile handleFile) {
        String className = SystemClassMapping.get(handleFile.getRouteCode(), handleFile.getClassName(), handleFile.getUsage());
        if (StringUtil.isEmpty(className)) {
            return;
        }
        String packagePath = StringUtil.replaceStrAll(handleFile.getPackageName(), ".", "/");
        String classPath = ClassLoader.getSystemResource("").getPath() + "/" + packagePath + "/" + className + ".class";
        String javaPath = ClassLoader.getSystemResource("").getPath() + "/" + packagePath + "/" + className + ".java";
        ClassFileUtil.deleteClassfile(classPath);
        ClassFileUtil.deleteClassfile(javaPath);
        // 完成
        logger.info("===================" + handleFile.getPackageName() + CoreConstant.DOT + className + ".class 删除过程结束");
    }
    private void startRouter(ServiceFlow.HandleFile handleFile) throws Exception {
        CamelClassLoader classLoader = new CamelClassLoader(CamelClassLoader.class.getClassLoader());
        String path = ClassLoader.getSystemResource(CoreConstant.EMPTY).getPath();
        String className = SystemClassMapping.get(handleFile.getRouteCode(), handleFile.getUsage(), handleFile.getClassName());
        Class<RouteBuilder> routeBuilderClass = (Class<RouteBuilder>) classLoader.loadClass(path, className);
        if (routeBuilderClass != null) {
            RouteBuilder routeBuilder = routeBuilderClass.newInstance();
            SystemCamelContext.getContext().addRoutes(routeBuilder);
        }
    }
    private void stopRouter(String routeCode) throws Exception {
        SystemCamelContext.getContext().stopRoute(routeCode);
    }
    private boolean removeRouter(String routeCode) throws Exception {
        return SystemCamelContext.getContext().removeRoute(routeCode);
    }
    private class ServiceFlowValid {
        private boolean myResult;
        private String msg;
        private ServiceFlow serviceFlow;
        private ServiceFlow.HandleFile handleFile;
        private ArrayList<ServiceFlow.HandleFile> handleFiles;
        public ServiceFlowValid(String msg) {
            this.msg = msg;
        }
        public ArrayList<ServiceFlow.HandleFile> getHandleFiles() {
            return handleFiles;
        }
        public ServiceFlow getServiceFlow() {
            return serviceFlow;
        }
        public ServiceFlow.HandleFile getHandleFile() {
            return handleFile;
        }
        public ServiceFlowValid invoke() throws IOException {
            serviceFlow = objectMapper.readValue(msg, ServiceFlow.class);
            handleFiles = serviceFlow.getHandleFiles();
            if (handleFiles == null || handleFiles.size() == 0) {
                logger.error("必要的入参数据不正确,请检查!");
                myResult = true;
                return this;
            }
            handleFile = handleFiles.get(0);
            if (handleFile == null || StringUtil.isEmpty(serviceFlow.getRouteCode()) || StringUtil.isEmpty(handleFile.getPackageName())
                    || StringUtil.isEmpty(handleFile.getPackageName()) || StringUtil.isEmpty(handleFile.getFilePath())) {
                logger.error("必要的入参数据不正确,请检查!");
                myResult = true;
                return this;
            }
            myResult = false;
            return this;
        }
        boolean is() {
            return myResult;
        }
    }
}

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

@ -123,7 +123,7 @@ spring:
    ip: localhost
    port: 8066
server:
  port: 0
  port: 9999
hos:
  arbiter:
    enable: true

+ 0 - 8
hos-broker/src/test/java/com/yihu/hos/ESBCamelServiceTest.java

@ -1,8 +0,0 @@
package com.yihu.hos;
/**
 * Created by lingfeng on 2016/8/5.
 */
public class ESBCamelServiceTest {
}

+ 25 - 0
hos-broker/src/test/java/com/yihu/hos/broker/services/camel/ESBCamelServiceTest.java

@ -0,0 +1,25 @@
package com.yihu.hos.broker.services.camel;
import org.junit.Test;
import java.io.File;
/**
 * @author Airhead
 * @since 2016/12/6.
 */
public class ESBCamelServiceTest {
    @Test
    public void onProcessorAdded() throws Exception {
        String url = this.getClass().getProtectionDomain().getClassLoader().getResource("").toString();
        System.out.println(url);
        File systemClassFlowPath = new File(this.getClass().getProtectionDomain().getClassLoader().getResource("").getPath());
        String sysPath = systemClassFlowPath.toURI().toURL().toString();
        System.out.println(sysPath);
    }
}

+ 46 - 26
hos-core/src/main/java/com/yihu/hos/core/datatype/ClassFileUtil.java

@ -1,12 +1,18 @@
package com.yihu.hos.core.datatype;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.URL;
public class ClassFileUtil {
    public static final String CLASS_FILE = ".class";
    public static final Logger logger = LoggerFactory.getLogger(ClassFileUtil.CLASS_FILE);
    public static final String JAVA_FILE = ".java";
    /**
     * 工具类不允许进行实例化
@ -18,21 +24,21 @@ public class ClassFileUtil {
    /**
     * 通过这个工具方法,可以进行class文件的创建
     *
     * @param systemFlowURL 本次进行系统创建的system业务系统存储class文件的根目录
     * @param packageName   class文件的包信息
     * @param className     class文件的类名信息
     * @param path          class文件的路径
     * @param url         本次进行系统创建的system业务系统存储class文件的根目录
     * @param packageName class文件的包信息
     * @param className   class文件的类名信息
     * @param path        class文件的路径
     */
    public static Boolean createClassfile(URL systemFlowURL, String packageName, String className, String path) {
    public static Boolean createClassfile(URL url, String packageName, String className, String path) {
        // 开始输出文件内容
        try {
            FileInputStream in = new FileInputStream(new File(path));
            File systemFlowFile = new File(systemFlowURL.getPath());
            File systemFlowFile = new File(url.getPath());
            if (!systemFlowFile.exists()) {
                systemFlowFile.mkdirs();
            }
            packageName = StringUtil.replaceStrAll(packageName, ".", "/");
            File packageFile = new File(systemFlowURL.getPath() + "/" + packageName);
            File packageFile = new File(url.getPath() + "/" + packageName);
            if (!packageFile.exists()) {
                packageFile.mkdirs();
            }
@ -97,23 +103,19 @@ public class ClassFileUtil {
    /**
     * 通过这个工具方法,可以进行class文件的创建
     *
     * @param systemFlowURL 本次进行系统创建的system业务系统存储class文件的根目录
     * @param packageName   class文件的包信息
     * @param className     class文件的类名信息
     * @param url         本次进行系统创建的system业务系统存储class文件的根目录
     * @param packageName class文件的包信息
     * @param className   class文件的类名信息
     */
    public static FileOutputStream createClassfile(URL systemFlowURL, String packageName, String className) {
    public static FileOutputStream createClassfile(URL url, String packageName, String className) {
        // 开始输出文件内容
        try {
            File systemFlowFile = new File(systemFlowURL.getPath());
            if (!systemFlowFile.exists()) {
                systemFlowFile.mkdirs();
            }
            String packagePath = StringUtil.replaceStrAll(packageName, ".", "/");
            File packageFile = new File(systemFlowURL.getPath() + "/" + packagePath);
            File packageFile = new File(url.getPath() + "/" + packagePath);
            if (!packageFile.exists()) {
                packageFile.mkdirs();
            }
            String classPath = packageFile.getPath() + "/" + className + ".class";
            String classPath = packageFile.getPath() + "/" + className + CLASS_FILE;
            File file = new File(classPath);
            if (file.isFile() && file.exists()) {
                file.delete();
@ -127,21 +129,39 @@ public class ClassFileUtil {
        }
    }
    public static FileOutputStream updateClassfile(URL systemFlowURL, String packageName, String className) {
        String packagePath = StringUtil.replaceStrAll(packageName, ".", "/");
        String classPath = systemFlowURL.getPath() + "/" + packagePath + "/" + className + ".class";
        // 开始输出文件内容
    public static FileOutputStream createFile(URL url, String packageName, String className, String fileType) {
        try {
            String packagePath = StringUtil.replaceStrAll(packageName, ".", "/");
            File packageFile = new File(url.getPath() + "/" + packagePath);
            if (!packageFile.exists()) {
                boolean mkdirs = packageFile.mkdirs();
                if (!mkdirs) {
                    return null;
                }
            }
            String classPath = packageFile.getPath() + "/" + className + fileType;
            File file = new File(classPath);
            if (file.isFile() && file.exists()) {
                file.delete();
            } else {
                file.createNewFile();
                boolean delete = file.delete();
                if (!delete) {
                    //Logger;
                    logger.warn("can't delete file, " + file.getAbsolutePath());
                }
            }
            FileOutputStream out = new FileOutputStream(classPath);
            return out;
            boolean created = file.createNewFile();
            if (!created) {
                return null;
            }
            return new FileOutputStream(classPath);
        } catch (Exception e) {
            return null;
        }
    }
    public static String getFilePath(URL url, String packageName, String className, String fileType) {
        String packagePath = StringUtil.replaceStrAll(packageName, ".", "/");
        return url.getPath() + "/" + packagePath + "/" + className + fileType;
    }
}

+ 16 - 24
hos-core/src/main/java/com/yihu/hos/core/http/DefaultClientImpl.java

@ -43,9 +43,8 @@ class DefaultClientImpl implements HTTPClient {
                    .build();
            httpClient.newBuilder().connectTimeout(60, TimeUnit.SECONDS);
            Response response = httpClient.newCall(request).execute();
            if (response.isSuccessful()) {
                return new HTTPResponse(response.code(), response.body().string());
            }
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            log.error(ex.getMessage());
        }
@ -78,9 +77,8 @@ class DefaultClientImpl implements HTTPClient {
                    .build();
            httpClient.newBuilder().connectTimeout(60, TimeUnit.SECONDS);
            Response response = httpClient.newCall(request).execute();
            if (response.isSuccessful()) {
                return new HTTPResponse(response.code(), response.body().string());
            }
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            log.error(ex.getMessage());
        }
@ -99,9 +97,8 @@ class DefaultClientImpl implements HTTPClient {
                    .build();
            Response response = httpClient.newCall(request).execute();
            if (response.isSuccessful()) {
                return new HTTPResponse(response.code(), response.body().string());
            }
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            log.error(ex.getMessage());
        }
@ -132,9 +129,8 @@ class DefaultClientImpl implements HTTPClient {
                    .build();
            Response response = httpClient.newCall(request).execute();
            if (response.isSuccessful()) {
                return new HTTPResponse(response.code(), response.body().string());
            }
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            log.error(ex.getMessage());
        }
@ -161,9 +157,8 @@ class DefaultClientImpl implements HTTPClient {
                    .build();
            Response response = httpClient.newCall(request).execute();
            if (response.isSuccessful()) {
                return new HTTPResponse(response.code(), response.body().string());
            }
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            log.error(ex.getMessage());
        }
@ -188,9 +183,8 @@ class DefaultClientImpl implements HTTPClient {
                    .build();
            Response response = httpClient.newCall(request).execute();
            if (response.isSuccessful()) {
                return new HTTPResponse(response.code(), response.body().string());
            }
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            log.error(ex.getMessage());
        }
@ -217,9 +211,8 @@ class DefaultClientImpl implements HTTPClient {
                    .build();
            Response response = httpClient.newCall(request).execute();
            if (response.isSuccessful()) {
                return new HTTPResponse(response.code(), response.body().string());
            }
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            log.error(ex.getMessage());
        }
@ -244,9 +237,8 @@ class DefaultClientImpl implements HTTPClient {
                    .build();
            Response response = httpClient.newCall(request).execute();
            if (response.isSuccessful()) {
                return new HTTPResponse(response.code(), response.body().string());
            }
            return new HTTPResponse(response.code(), response.body().string());
        } catch (IOException ex) {
            log.error(ex.getMessage());
        }

+ 1 - 1
hos-rest/src/main/java/com/yihu/hos/rest/common/dao/DatacollectDao.java

@ -2,7 +2,7 @@ package com.yihu.hos.rest.common.dao;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.rest.models.rs.RsJobDataset;
import com.yihu.hos.web.framework.constrant.DateConvert;
import com.yihu.hos.web.framework.constant.DateConvert;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.model.DataGridResult;
import com.yihu.hos.web.framework.model.SimpleChartItem;

+ 0 - 5
hos-rest/src/main/java/com/yihu/hos/rest/common/dao/DatacollectLogDao.java

@ -1,16 +1,11 @@
package com.yihu.hos.rest.common.dao;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.rest.models.rs.RsDatapushLog;
import com.yihu.hos.web.framework.constrant.DateConvert;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.model.DataGridResult;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Map;
/**
 * Created by hzp on 2016/1/11.

+ 1 - 1
hos-rest/src/main/java/com/yihu/hos/rest/common/format/DataSetTransformer.java

@ -11,7 +11,7 @@ import com.yihu.hos.rest.models.crawler.adapter.AdapterMetaData;
import com.yihu.hos.rest.models.crawler.patient.Patient;
import com.yihu.hos.rest.models.crawler.transform.DictDataType;
import com.yihu.hos.rest.models.crawler.transform.TransformType;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.SqlConstants;
import java.util.Iterator;
import java.util.Map;

+ 1 - 1
hos-rest/src/main/java/com/yihu/hos/rest/models/standard/bo/AdapterVersion.java

@ -1,6 +1,6 @@
package com.yihu.hos.rest.models.standard.bo;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.SqlConstants;
public class AdapterVersion {
    public static final String FBVersion = "000000000000";

+ 1 - 1
hos-rest/src/main/java/com/yihu/hos/rest/services/crawler/CrawlerService.java

@ -28,7 +28,7 @@ import com.yihu.hos.rest.services.standard.adapter.AdapterDatasetService;
import com.yihu.hos.rest.services.standard.adapter.AdapterMetadataService;
import com.yihu.hos.rest.services.standard.adapter.AdapterSchemeService;
import com.yihu.hos.rest.services.standard.adapter.AdapterSchemeVersionService;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.model.ActionResult;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.util.GridFSUtil;

+ 1 - 1
hos-rest/src/main/java/com/yihu/hos/rest/services/crawler/DataCollectDispatcher.java

@ -22,7 +22,7 @@ import com.yihu.hos.rest.models.crawler.patient.PatientIdentity;
import com.yihu.hos.rest.models.crawler.transform.EhrCondition;
import com.yihu.hos.rest.models.crawler.transform.LogicValues;
import com.yihu.hos.rest.models.standard.adapter.AdapterMetadataModel;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.SqlConstants;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.http.NameValuePair;

+ 1 - 1
hos-rest/src/main/java/com/yihu/hos/rest/services/crawler/EsbHttp.java

@ -14,7 +14,7 @@ import com.yihu.hos.rest.models.crawler.adapter.AdapterDataSet;
import com.yihu.hos.rest.models.crawler.config.SysConfig;
import com.yihu.hos.rest.models.crawler.patient.Patient;
import com.yihu.hos.rest.models.crawler.transform.EhrCondition;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.SqlConstants;
import org.apache.http.HttpStatus;
import org.json.JSONObject;
import sun.misc.BASE64Encoder;

+ 2 - 2
hos-rest/src/main/java/com/yihu/hos/rest/services/standard/adapter/AdapterDatasetService.java

@ -12,8 +12,8 @@ import com.yihu.hos.rest.models.standard.bo.AdapterVersion;
import com.yihu.hos.rest.models.standard.bo.StandardVersion;
import com.yihu.hos.rest.models.standard.standard.StdDataSetModel;
import com.yihu.hos.rest.models.standard.standard.StdMetaDataModel;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;

+ 1 - 1
hos-rest/src/main/java/com/yihu/hos/rest/services/standard/adapter/AdapterDictEntryService.java

@ -12,7 +12,7 @@ import com.yihu.hos.rest.models.standard.adapter.resultModel.AdapterDictEntryRes
import com.yihu.hos.rest.models.standard.bo.AdapterVersion;
import com.yihu.hos.rest.models.standard.bo.StandardVersion;
import com.yihu.hos.rest.models.standard.standard.StdDictionaryModel;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;

+ 2 - 2
hos-rest/src/main/java/com/yihu/hos/rest/services/standard/adapter/AdapterMetadataService.java

@ -15,8 +15,8 @@ import com.yihu.hos.rest.models.standard.bo.AdapterVersion;
import com.yihu.hos.rest.models.standard.bo.StandardVersion;
import com.yihu.hos.rest.models.standard.standard.StdDataSetModel;
import com.yihu.hos.rest.models.standard.standard.StdMetaDataModel;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;

+ 1 - 1
hos-rest/src/main/java/com/yihu/hos/rest/services/standard/adapter/AdapterSchemeService.java

@ -10,7 +10,7 @@ import com.yihu.hos.rest.models.standard.adapter.resultModel.AdapterSchemeResult
import com.yihu.hos.rest.models.standard.adapter.resultModel.AdapterSchemeResultModel;
import com.yihu.hos.rest.models.standard.standard.StandardModel;
import com.yihu.hos.rest.models.standard.standard.StandardVersionModel;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;

+ 2 - 2
hos-rest/src/main/java/com/yihu/hos/rest/services/standard/adapter/AdapterSchemeVersionService.java

@ -10,8 +10,8 @@ import com.yihu.hos.rest.models.standard.bo.AdapterVersion;
import com.yihu.hos.rest.models.standard.bo.StandardVersion;
import com.yihu.hos.rest.models.standard.standard.StandardModel;
import com.yihu.hos.rest.models.standard.standard.StdMetaDataModel;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.*;

+ 1 - 1
hos-rest/src/main/java/com/yihu/hos/rest/services/standard/standard/StandardService.java

@ -6,7 +6,7 @@ import com.yihu.hos.rest.models.standard.bo.SystemParam;
import com.yihu.hos.rest.models.standard.standard.StandardModel;
import com.yihu.hos.rest.models.standard.standard.StandardVersionModel;
import com.yihu.hos.rest.models.standard.standard.resultModel.StandardParamResultModel;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.model.DictItem;
import com.yihu.hos.web.framework.model.DictionaryResult;

+ 2 - 7
hos-rest/src/main/java/com/yihu/hos/rest/services/standard/standard/StdDatasetService.java

@ -7,8 +7,8 @@ import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.rest.models.standard.bo.StandardVersion;
import com.yihu.hos.rest.models.standard.standard.StandardVersionModel;
import com.yihu.hos.rest.models.standard.standard.StdDataSetModel;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;
@ -16,20 +16,15 @@ import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.sql.BeanTransformer;
import com.yihu.hos.web.framework.util.sql.RequestParamTransformer;
import com.yihu.hos.web.framework.util.sql.SqlCreator;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import java.util.stream.Collectors;
/**

+ 1 - 2
hos-rest/src/main/java/com/yihu/hos/rest/services/standard/standard/StdDictEntryService.java

@ -6,8 +6,7 @@ import com.yihu.hos.core.datatype.CollectionUtil;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.rest.models.standard.bo.StandardVersion;
import com.yihu.hos.rest.models.standard.standard.StdDictionaryEntryModel;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;

+ 1 - 2
hos-rest/src/main/java/com/yihu/hos/rest/services/standard/standard/StdDictService.java

@ -8,8 +8,7 @@ import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.rest.models.standard.bo.StandardVersion;
import com.yihu.hos.rest.models.standard.standard.StdDictionaryEntryModel;
import com.yihu.hos.rest.models.standard.standard.StdDictionaryModel;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;

+ 1 - 7
hos-rest/src/main/java/com/yihu/hos/rest/services/standard/standard/StdMetadataService.java

@ -7,27 +7,21 @@ import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.rest.models.standard.bo.StandardVersion;
import com.yihu.hos.rest.models.standard.standard.StdDictionaryEntryModel;
import com.yihu.hos.rest.models.standard.standard.StdMetaDataModel;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.sql.BeanTransformer;
import com.yihu.hos.web.framework.util.sql.RequestParamTransformer;
import com.yihu.hos.web.framework.util.sql.SqlCreator;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 数据元管理接口实现。

+ 1 - 1
hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/ApiVersionPrefix.java

@ -1,4 +1,4 @@
package com.yihu.hos.web.framework.constrant;
package com.yihu.hos.web.framework.constant;
/**
 * API版本前缀。用于适配Rest控制器的版本。定义好适用的版本之后,可以方便API版本编写。

+ 1 - 1
hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/BizObject.java

@ -1,4 +1,4 @@
package com.yihu.hos.web.framework.constrant;
package com.yihu.hos.web.framework.constant;
/**
 * 业务对象划分, 全局唯一ID会使用此划分. 因为 ObjectId 中仅使用一个short作为

+ 1 - 1
hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/DateConvert.java

@ -1,4 +1,4 @@
package com.yihu.hos.web.framework.constrant;
package com.yihu.hos.web.framework.constant;
import org.apache.commons.beanutils.Converter;
import java.text.SimpleDateFormat;

+ 1 - 1
hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/ErrorCode.java

@ -1,4 +1,4 @@
package com.yihu.hos.web.framework.constrant;
package com.yihu.hos.web.framework.constant;
/**
 * @author Sand

+ 1 - 1
hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/JobType.java

@ -1,4 +1,4 @@
package com.yihu.hos.web.framework.constrant;
package com.yihu.hos.web.framework.constant;
/**
 * @author Sand

+ 7 - 5
src/main/java/com/yihu/hos/common/constants/Constants.java

@ -1,11 +1,10 @@
package com.yihu.hos.common.constants;
package com.yihu.hos.web.framework.constant;
/**
 * @author HZY
 * @vsrsion 1.0
 * Created at 2016/8/25.
 * @author Airhead
 * @since 2016/12/6.
 */
public interface Constants {
public interface ServiceFlowConstant {
    //流程-队列名称
    String FLOW_QUEUE_NAME = "configuration.service.flow";
@ -13,6 +12,9 @@ public interface Constants {
    String JAVA = "java";
    String CLASS = "class";
    String JAVA_FILE = ".java";
    String CLASS_FILE = ".class";
    //流程-路由类型
    String FLOW_TYPE_ROUTE = "route";
    String FLOW_TYPE_PROCESSOR = "processor";

+ 1 - 1
hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/SessionAttributeKeys.java

@ -1,4 +1,4 @@
package com.yihu.hos.web.framework.constrant;
package com.yihu.hos.web.framework.constant;
/**
 * Spring MVC 的Web会话常用会话属性常量。

+ 1 - 1
hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/SqlConstants.java

@ -1,4 +1,4 @@
package com.yihu.hos.web.framework.constrant;
package com.yihu.hos.web.framework.constant;
/**
 * Created by lingfeng on 2015/6/23.

+ 1 - 1
hos-web-framework/src/main/java/com/yihu/hos/web/framework/constrant/SystemDictId.java

@ -1,4 +1,4 @@
package com.yihu.hos.web.framework.constrant;
package com.yihu.hos.web.framework.constant;
/**
 * 通用字典ID。

+ 1 - 1
hos-web-framework/src/main/java/com/yihu/hos/web/framework/exception/ApiException.java

@ -1,7 +1,7 @@
package com.yihu.hos.web.framework.exception;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constant.ErrorCode;
/**
 * @author Sand

+ 13 - 3
hos-arbiter/src/main/java/com/yihu/hos/arbiter/models/ServiceFlow.java

@ -1,4 +1,4 @@
package com.yihu.hos.arbiter.models;
package com.yihu.hos.web.framework.model.bo;
import org.springframework.data.mongodb.core.mapping.Document;
@ -6,7 +6,8 @@ import java.util.ArrayList;
import java.util.Date;
/**
 * @created Airhead 2016/8/4.
 * @author Airhead
 * @since 2016/8/4.
 */
@Document
public class ServiceFlow {
@ -64,12 +65,13 @@ public class ServiceFlow {
        this.flowType = flowType;
    }
    public class HandleFile {
    static public class HandleFile {
        private String usage;   //router or processor
        private String packageName;
        private String className;
        private String filePath;
        private String fileType;    //java or class
        private String routeCode;
        public HandleFile() {
        }
@ -113,5 +115,13 @@ public class ServiceFlow {
        public void setUsage(String usage) {
            this.usage = usage;
        }
        public String getRouteCode() {
            return routeCode;
        }
        public void setRouteCode(String routeCode) {
            this.routeCode = routeCode;
        }
    }
}

+ 122 - 113
hos-web-framework/src/main/java/com/yihu/hos/web/framework/util/GridFSUtil.java

@ -30,7 +30,8 @@ import java.sql.Blob;
import java.util.*;
/**
 *  MongoDB GridFS 操作类
 * MongoDB GridFS 操作类
 *
 * @author HZY
 * @vsrsion 1.0
 * Created at 2016/7/21.
@ -40,19 +41,19 @@ public class GridFSUtil {
    public static final int defaultChunkSize = 1024 * 1024 * 4;
    public static ObjectId uploadFile(String dbName, Blob blob,String fileType,Map<String,Object> params) {
    public static ObjectId uploadFile(String dbName, Blob blob, String fileType, Map<String, Object> params) {
        //获取mongodb连接
//        MongodbHelper mongoOrigin = new MongodbHelper(dbName);
        //创建一个容器
        MongoDatabase db = MongodbFactory.getDB(dbName);
        GridFSBucket gridFS = GridFSBuckets.create(db);
        String fileName=UUID.randomUUID().toString()+"."+fileType;
        String fileName = UUID.randomUUID().toString() + "." + fileType;
        //自定义字段
        Document metaDocument= new Document();
        if ( params!=null && params.size()>0){
        Document metaDocument = new Document();
        if (params != null && params.size() > 0) {
            for (Map.Entry<String, Object> entry : params.entrySet()) {
                String key=entry.getKey();
                metaDocument.append(key,entry.getValue());
                String key = entry.getKey();
                metaDocument.append(key, entry.getValue());
            }
        }
        // Create some custom options
@ -78,13 +79,13 @@ public class GridFSUtil {
    }
    /**
     *  上传文件至Mongodb by GridFS
     * 上传文件至Mongodb by GridFS
     *
     * @param dbName    数据库名
     * @param filePath  文件路径
     * @param params    自定义保存字段
     * @param dbName   数据库名
     * @param filePath 文件路径
     * @param params   自定义保存字段
     */
    public static boolean uploadFile(String dbName, String filePath,Map<String,Object> params) {
    public static boolean uploadFile(String dbName, String filePath, Map<String, Object> params) {
        //获取mongodb连接
//        MongodbHelper mongoOrigin = new MongodbHelper(dbName);
        //创建一个容器
@ -93,11 +94,11 @@ public class GridFSUtil {
        File readFile = new File(filePath);
        //自定义字段
        Document metaDocument= new Document();
        if ( params!=null && params.size()>0){
        Document metaDocument = new Document();
        if (params != null && params.size() > 0) {
            for (Map.Entry<String, Object> entry : params.entrySet()) {
                String key=entry.getKey();
                metaDocument.append(key,entry.getValue());
                String key = entry.getKey();
                metaDocument.append(key, entry.getValue());
            }
        }
        // Create some custom options
@ -124,9 +125,10 @@ public class GridFSUtil {
    /**
     * 从 mongodb GridFS 下载文件
     * @param dbName    数据库名
     *
     * @param dbName   数据库名
     * @param savePath 文件保存路径
     * @param objId        GridFS文件保存ObjectId
     * @param objId    GridFS文件保存ObjectId
     * @return
     */
    public static String downFile(String dbName, String savePath, ObjectId objId) {
@ -159,32 +161,33 @@ public class GridFSUtil {
    }
    /**
     *  批量下载文件保存(根据 fs.files集合)
     * @param dbName    数据库名
     * @param savePath  文件保存的路径
     * @param fsFiles     fs.files
     * 批量下载文件保存(根据 fs.files集合)
     *
     * @param dbName   数据库名
     * @param savePath 文件保存的路径
     * @param fsFiles  fs.files
     * @return 以“,”分割的文件名
     */
    public static Map<String,StringBuffer> downFileList(String dbName, String savePath, List<GridFSFile> fsFiles) {
    public static Map<String, StringBuffer> downFileList(String dbName, String savePath, List<GridFSFile> fsFiles) {
        StringBuffer stringBuffer = new StringBuffer();
        Map<String,String> fileNames= new HashMap<>();
        Map<String, String> fileNames = new HashMap<>();
        //穿件mongodb连接
//        MongodbHelper mongoOrigin = new MongodbHelper(dbName);
        //创建一个容器
        MongoDatabase db = MongodbFactory.getDB(dbName);
        GridFSBucket gridFS = GridFSBuckets.create(db);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        if (fsFiles!=null && fsFiles.size()>0){
            for (GridFSFile fsFile:fsFiles){
        if (fsFiles != null && fsFiles.size() > 0) {
            for (GridFSFile fsFile : fsFiles) {
                ObjectId objId = fsFile.getObjectId();
                String fileType= fsFile.getFilename().substring(fsFile.getFilename().lastIndexOf("."));
                String newName = UUID.randomUUID().toString()+"."+fileType;
                String fileType = fsFile.getFilename().substring(fsFile.getFilename().lastIndexOf("."));
                String newName = UUID.randomUUID().toString() + "." + fileType;
                gridFS.downloadToStream(objId, out);
                try {
                    boolean succ = FileUtil.writeFile(savePath+"/"+newName, out.toByteArray(), "utf-8");
                    boolean succ = FileUtil.writeFile(savePath + "/" + newName, out.toByteArray(), "utf-8");
                    if (succ) {
                        String type = getMimeType( out.toByteArray());
                        fileNames.put(newName,type);
                        String type = getMimeType(out.toByteArray());
                        fileNames.put(newName, type);
//                        stringBuffer.append(newName).append(",");
                        continue;
                    } else {
@ -204,14 +207,14 @@ public class GridFSUtil {
                }
            }
            return groupDataMap(fileNames);
        }else {
        } else {
            return null;
        }
    }
    public static Map<String,StringBuffer> downFilesByObjectIds(String dbName, String savePath, List<ObjectId> ids) {
    public static Map<String, StringBuffer> downFilesByObjectIds(String dbName, String savePath, List<ObjectId> ids) {
        StringBuffer stringBuffer = new StringBuffer();
        Map<String,String> fileNames= new HashMap<>();
        Map<String, String> fileNames = new HashMap<>();
        //穿件mongodb连接
//        MongodbHelper mongoOrigin = new MongodbHelper(dbName);
        //创建一个容器
@ -219,17 +222,17 @@ public class GridFSUtil {
        GridFSBucket gridFS = GridFSBuckets.create(db);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        List<GridFSFile> fsFiles = findFsFiles(dbName, ids);
        if (fsFiles!=null && fsFiles.size()>0){
            for (GridFSFile fsFile:fsFiles){
        if (fsFiles != null && fsFiles.size() > 0) {
            for (GridFSFile fsFile : fsFiles) {
                ObjectId objId = fsFile.getObjectId();
                String fileType= fsFile.getFilename().substring(fsFile.getFilename().lastIndexOf("."));
                String newName = UUID.randomUUID().toString()+"."+fileType;
                String fileType = fsFile.getFilename().substring(fsFile.getFilename().lastIndexOf("."));
                String newName = UUID.randomUUID().toString() + "." + fileType;
                gridFS.downloadToStream(objId, out);
                try {
                    boolean succ = FileUtil.writeFile(savePath+"/"+newName, out.toByteArray(), "utf-8");
                    boolean succ = FileUtil.writeFile(savePath + "/" + newName, out.toByteArray(), "utf-8");
                    if (succ) {
                        String type = getMimeType( out.toByteArray());
                        fileNames.put(newName,type);
                        String type = getMimeType(out.toByteArray());
                        fileNames.put(newName, type);
//                        stringBuffer.append(newName).append(",");
                        continue;
                    } else {
@ -249,13 +252,14 @@ public class GridFSUtil {
                }
            }
            return groupDataMap(fileNames);
        }else {
        } else {
            return null;
        }
    }
    /**
     *  删除 mongodb-GridFS文件
     * 删除 mongodb-GridFS文件
     *
     * @param dbName
     * @param objId
     */
@ -268,62 +272,64 @@ public class GridFSUtil {
    /**
     * 查询fs.files 数据 in GridFS
     * @param dbName 数据库名
     *
     * @param dbName  数据库名
     * @param filters 查询条件
     * @return files集合
     */
    public static List<GridFSFile> findFiles(String dbName,Map<String,Object> filters){
    public static List<GridFSFile> findFiles(String dbName, Map<String, Object> filters) {
        //穿件mongodb连接
        List<GridFSFile> list=new ArrayList<>();
        List<GridFSFile> list = new ArrayList<>();
        //创建一个容器
        MongoDatabase db = MongodbFactory.getDB(dbName);
        GridFSBucket gridFSBucket = GridFSBuckets.create(db);
        List<Bson> querys=new ArrayList<>();
        List<Bson> querys = new ArrayList<>();
        //添加查询条件
        if (filters!=null && filters.size()>0){
        if (filters != null && filters.size() > 0) {
            for (Map.Entry<String, Object> entry : filters.entrySet()) {
                String key=entry.getKey();
                String key = entry.getKey();
                querys.add(Filters.eq(key, entry.getValue()));
            }
        }
//        GridFSFindIterable gsIterable=gridFSBucket.find(Filters.eq("metadata.cda_id", "111"));
        GridFSFindIterable gsIterable=gridFSBucket.find(Filters.and(querys));
       MongoCursor<GridFSFile> it= gsIterable.iterator();
        while (it.hasNext()){
            GridFSFile fsFile= it.next();
        GridFSFindIterable gsIterable = gridFSBucket.find(Filters.and(querys));
        MongoCursor<GridFSFile> it = gsIterable.iterator();
        while (it.hasNext()) {
            GridFSFile fsFile = it.next();
            list.add(fsFile);
        }
        return list;
    }
    /**
     *  根据ObjectID集合查询GridFS 文件列表
     * 根据ObjectID集合查询GridFS 文件列表
     *
     * @param dbName 数据库名
     * @param ids     objectId集合
     * @param ids    objectId集合
     * @return
     */
    public static List<GridFSFile> findFsFiles(String dbName,List<ObjectId> ids){
    public static List<GridFSFile> findFsFiles(String dbName, List<ObjectId> ids) {
        //穿件mongodb连接
        List<GridFSFile> list=new ArrayList<>();
        List<GridFSFile> list = new ArrayList<>();
        //创建一个容器
        MongoDatabase db = MongodbFactory.getDB(dbName);
        GridFSBucket gridFSBucket = GridFSBuckets.create(db);
        List<Bson> querys=new ArrayList<>();
        List<Bson> querys = new ArrayList<>();
        //添加查询条件
        if (ids!=null && ids.size()>0){
        if (ids != null && ids.size() > 0) {
            querys.add(Filters.in("_id", ids));
        }
        GridFSFindIterable gsIterable=null;
        if (querys.size()>0){
            gsIterable=gridFSBucket.find(Filters.and(querys));
        }else {
            gsIterable=gridFSBucket.find();
        GridFSFindIterable gsIterable = null;
        if (querys.size() > 0) {
            gsIterable = gridFSBucket.find(Filters.and(querys));
        } else {
            gsIterable = gridFSBucket.find();
        }
        MongoCursor<GridFSFile> it= gsIterable.iterator();
        while (it.hasNext()){
            GridFSFile fsFile= it.next();
        MongoCursor<GridFSFile> it = gsIterable.iterator();
        while (it.hasNext()) {
            GridFSFile fsFile = it.next();
            list.add(fsFile);
        }
        return list;
@ -332,22 +338,22 @@ public class GridFSUtil {
    public static Map parseJsonToMap(JSONObject condition) {
        ObjectMapper objectMapper = new ObjectMapper();
        HashMap map = new HashMap();
            try {
                Iterator fileNames = (Iterator) condition.names();
        try {
            Iterator fileNames = (Iterator) condition.names();
                while(fileNames.hasNext()) {
                    String fieldName = (String)fileNames.next();
                    Object valueNode = condition.get(fieldName);
            while (fileNames.hasNext()) {
                String fieldName = (String) fileNames.next();
                Object valueNode = condition.get(fieldName);
                    if(valueNode instanceof Blob) {
                        map.put(fieldName, valueNode);
                    } else {
                        map.put(fieldName, condition.get(fieldName).toString());
                    }
                if (valueNode instanceof Blob) {
                    map.put(fieldName, valueNode);
                } else {
                    map.put(fieldName, condition.get(fieldName).toString());
                }
            } catch (Exception var7) {
                var7.printStackTrace();
            }
        } catch (Exception var7) {
            var7.printStackTrace();
        }
        return map;
@ -355,30 +361,29 @@ public class GridFSUtil {
    //TODO  测试所用,后删除
    public static void tTestFind(String tableName, String collection, Map<String,Object> params){
    public static void tTestFind(String tableName, String collection, Map<String, Object> params) {
        MongodbHelper mongodbHelper = new MongodbHelper(tableName);
        BasicDBObject basicDBObject=new BasicDBObject();
        BasicDBObject basicDBObject = new BasicDBObject();
        for (Map.Entry<String, Object> entry : params.entrySet()) {
            String key=entry.getKey();
            basicDBObject.append(key,entry.getValue());
            String key = entry.getKey();
            basicDBObject.append(key, entry.getValue());
        }
        FindIterable<Document> documents=mongodbHelper.query(collection,basicDBObject, null, null);
        MongoCursor<Document> it= documents.iterator();
        while (it.hasNext()){
            Document document= it.next();
            List<Document> fileList= (List<Document>) document.get("files");
            Document jsonNode=fileList.get(0);
            List files= (List) jsonNode.get("files_id");
            List<GridFSFile> fs=findFsFiles("mydb",files);
        FindIterable<Document> documents = mongodbHelper.query(collection, basicDBObject, null, null);
        MongoCursor<Document> it = documents.iterator();
        while (it.hasNext()) {
            Document document = it.next();
            List<Document> fileList = (List<Document>) document.get("files");
            Document jsonNode = fileList.get(0);
            List files = (List) jsonNode.get("files_id");
            List<GridFSFile> fs = findFsFiles("mydb", files);
            System.out.println(files.toString());
            String filePath="e:/test/";
            Map<String,StringBuffer> path=downFileList("mydb",filePath, fs);
            String filePath = "e:/test/";
            Map<String, StringBuffer> path = downFileList("mydb", filePath, fs);
        }
    }
//    public static void main(String[] args) {
//        try {
//            //上传
@ -418,29 +423,31 @@ public class GridFSUtil {
    /*************************************** MineType 工具类 *********************************/
    /**
     * 获取文件Mine-Type
     *
     * @param file
     * @return
     */
    public static String getMimeType(File file) {
        MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector");
        Collection<?> collection=MimeUtil.getMimeTypes(file);
        Collection<?> collection = MimeUtil.getMimeTypes(file);
        return collection.toString();
    }
    public static String getMimeType(byte[] bytes) {
        MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector");
        Collection<?> collection=MimeUtil.getMimeTypes(bytes);
        Collection<?> collection = MimeUtil.getMimeTypes(bytes);
        return collection.toString();
    }
    /**
     * 非结构化档案--文件类型map生成
     *
     * @param map
     * @return
     */
    public static Map<String, StringBuffer> groupDataMap(Map<String, String> map) {
        Map<String, StringBuffer> result = new HashMap<String, StringBuffer>();
        Iterator<String> rs=map.keySet().iterator();
        Iterator<String> rs = map.keySet().iterator();
        while (rs.hasNext()) {
            String key = rs.next();
            String value = map.get(key);
@ -454,16 +461,17 @@ public class GridFSUtil {
    }
    /**
     *  上传文件至Mongodb by GridFS
     *  @param db    数据库
     * @param file  文件
     * 上传文件至Mongodb by GridFS
     *
     * @param db   数据库
     * @param file 文件
     */
    public static String uploadFile(MongoDatabase db, CommonsMultipartFile file) {
        //创建一个容器
        GridFSBucket gridFS = GridFSBuckets.create(db);
        //自定义字段
        Document metaDocument= new Document();
        Document metaDocument = new Document();
        // Create some custom options
        GridFSUploadOptions gridFSUploadOptions = new GridFSUploadOptions()
                .chunkSizeBytes(defaultChunkSize).metadata(metaDocument);
@ -485,12 +493,12 @@ public class GridFSUtil {
    }
    /**
     *  上传文件至Mongodb by GridFS
     * 上传文件至Mongodb by GridFS
     *
     * @param dbName    数据库名
     * @param filePath  文件路径
     * @param dbName   数据库名
     * @param filePath 文件路径
     */
    public static String uploadFile(String dbName, String filePath,String fileName) {
    public static String uploadFile(String dbName, String filePath, String fileName) {
        //获取mongodb连接
//        MongodbHelper mongoOrigin = new MongodbHelper(dbName);
        //创建一个容器
@ -498,7 +506,7 @@ public class GridFSUtil {
        MongoDatabase db = MongodbFactory.getDB(dbName);
        GridFSBucket gridFS = GridFSBuckets.create(db);
        //自定义字段
        Document metaDocument= new Document();
        Document metaDocument = new Document();
        // Create some custom options
        GridFSUploadOptions gridFSUploadOptions = new GridFSUploadOptions()
                .chunkSizeBytes(defaultChunkSize).metadata(metaDocument);
@ -510,10 +518,9 @@ public class GridFSUtil {
            if (id != null) {
                return fileName;
            }
        }catch (Exception e){
        } catch (Exception e) {
            e.printStackTrace();
        }
        finally {
        } finally {
            if (uploadStream != null) {
                uploadStream.close();
            }
@ -523,10 +530,11 @@ public class GridFSUtil {
    /**
     * 据文件名返回文件,只返回第一个
     *
     * @param fileName
     * @return
     */
    public static Boolean readFile(MongoDatabase db, OutputStream os, String fileName){
    public static boolean readFile(MongoDatabase db, OutputStream os, String fileName) {
        try {
            GridFSBucket gridFS = GridFSBuckets.create(db);
            gridFS.downloadToStreamByName(fileName, os);
@ -541,9 +549,10 @@ public class GridFSUtil {
    /**
     * 从 mongodb GridFS 下载文件
     * @param dbName    数据库名
     *
     * @param dbName   数据库名
     * @param savePath 文件保存路径
     * @param fileName        GridFS文件名
     * @param fileName GridFS文件名
     * @return
     */
    public static String downFile(String dbName, String savePath, String fileName) {

+ 1 - 1
hos-web-framework/src/main/java/com/yihu/hos/web/framework/util/sql/RequestParamTransformer.java

@ -3,7 +3,7 @@ package com.yihu.hos.web.framework.util.sql;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.JsonNodeType;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.core.datatype.StringUtil;
import org.apache.commons.lang3.StringUtils;    //TODO: Use the hos-core

+ 1 - 1
hos-web-framework/src/main/java/com/yihu/hos/web/framework/util/sql/SqlCreator.java

@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.JsonNodeType;
import com.yihu.hos.core.datatype.CollectionUtil;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.SqlConstants;
import java.util.ArrayList;
import java.util.HashMap;

+ 1 - 1
src/main/java/com/yihu/hos/crawler/service/CrawlerService.java

@ -23,7 +23,7 @@ import com.yihu.hos.standard.service.adapter.AdapterMetadataService;
import com.yihu.hos.standard.service.adapter.AdapterSchemeService;
import com.yihu.hos.standard.service.adapter.AdapterSchemeVersionService;
import com.yihu.hos.standard.service.bo.AdapterVersion;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.model.ActionResult;
import com.yihu.hos.web.framework.model.DetailModelResult;
import org.apache.commons.lang3.StringUtils;

+ 1 - 1
src/main/java/com/yihu/hos/crawler/service/EsbHttp.java

@ -13,7 +13,7 @@ import com.yihu.hos.crawler.model.adapter.AdapterDataSet;
import com.yihu.hos.crawler.model.config.SysConfig;
import com.yihu.hos.crawler.model.patient.Patient;
import com.yihu.hos.crawler.model.transform.EhrCondition;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.SqlConstants;
import org.json.JSONObject;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

+ 1 - 1
src/main/java/com/yihu/hos/datacollect/controller/DataCollectController.java

@ -10,7 +10,7 @@ import com.yihu.hos.datacollect.service.intf.IDatacollectService;
import com.yihu.hos.resource.service.IStdService;
import com.yihu.hos.standard.service.adapter.AdapterSchemeService;
import com.yihu.hos.system.service.intf.IDatasourceManager;
import com.yihu.hos.web.framework.constrant.DateConvert;
import com.yihu.hos.web.framework.constant.DateConvert;
import com.yihu.hos.web.framework.model.ActionResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;

+ 1 - 1
src/main/java/com/yihu/hos/datacollect/dao/DatacollectDao.java

@ -4,7 +4,7 @@ import com.yihu.hos.datacollect.dao.intf.IDatacollectDao;
import com.yihu.hos.datacollect.model.DtoJobDataset;
import com.yihu.hos.datacollect.model.RsJobDataset;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.constrant.DateConvert;
import com.yihu.hos.web.framework.constant.DateConvert;
import com.yihu.hos.web.framework.model.DataGridResult;
import com.yihu.hos.web.framework.model.SimpleChartItem;
import com.yihu.hos.resource.model.RsDatasourceDataset;

+ 1 - 1
src/main/java/com/yihu/hos/datacollect/dao/DatacollectLogDao.java

@ -2,7 +2,7 @@ package com.yihu.hos.datacollect.dao;
import com.yihu.hos.datacollect.dao.intf.IDatacollectLogDao;
import com.yihu.hos.datacollect.model.RsDatapushLog;
import com.yihu.hos.web.framework.constrant.DateConvert;
import com.yihu.hos.web.framework.constant.DateConvert;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.model.DataGridResult;
import org.springframework.stereotype.Repository;

+ 2 - 2
src/main/java/com/yihu/hos/datacollect/service/DatacollectService.java

@ -21,8 +21,8 @@ import com.yihu.hos.datacollect.model.*;
import com.yihu.hos.datacollect.service.intf.IDatacollectManager;
import com.yihu.hos.datacollect.service.intf.IDatacollectService;
import com.yihu.hos.resource.service.IStdService;
import com.yihu.hos.web.framework.constrant.DateConvert;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.DateConvert;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.model.ActionResult;
import com.yihu.hos.web.framework.util.GridFSUtil;
import org.bson.types.ObjectId;

+ 2 - 2
src/main/java/com/yihu/hos/listeners/ApplicationStart.java

@ -3,9 +3,9 @@ package com.yihu.hos.listeners;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import com.yihu.hos.services.ServiceFlowEventService;
import com.yihu.hos.system.model.bo.ServiceFlow;
import com.yihu.hos.web.framework.model.bo.ServiceFlow;
import com.yihu.hos.system.service.FlowManager;
import com.yihu.hos.web.framework.constrant.DateConvert;
import com.yihu.hos.web.framework.constant.DateConvert;
import org.apache.commons.beanutils.ConvertUtils;
import org.springframework.beans.factory.annotation.Autowired;

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

@ -1,12 +1,12 @@
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;
import com.yihu.hos.system.model.SystemServiceFlow;
import com.yihu.hos.system.model.SystemServiceFlowConfig;
import com.yihu.hos.web.framework.constant.ServiceFlowConstant;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.model.TreeView;
import org.json.JSONArray;
@ -121,7 +121,7 @@ public class ServiceMonitorService {
        }
        for (SystemServiceFlow flow : flowList) {
            if (flow.getFileType().equals(Constants.CLASS)) {
            if (flow.getFileType().equals(ServiceFlowConstant.CLASS)) {
                TreeView rootTree = new TreeView();
                rootTree.setIschecked(false);
                rootTree.setId("flow" + flow.getId());

+ 29 - 30
src/main/java/com/yihu/hos/services/ServiceFlowEventService.java

@ -2,10 +2,10 @@ package com.yihu.hos.services;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.common.constants.Constants;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import com.yihu.hos.system.model.bo.ServiceFlow;
import com.yihu.hos.web.framework.constant.ServiceFlowConstant;
import com.yihu.hos.web.framework.model.bo.ServiceFlow;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Component;
@ -34,7 +34,7 @@ public class ServiceFlowEventService {
     * 同时解决Broker中启动多个采集任务的问题。
     */
    public void flowRefresh(ServiceFlow serviceFlow) {
        this.sendMsg(Constants.FlOW_REFRESH, serviceFlow);
        this.sendMsg(ServiceFlowConstant.FlOW_REFRESH, serviceFlow);
    }
    /**
@ -46,107 +46,107 @@ public class ServiceFlowEventService {
     * @param path        processor处理器定义涉及的class内容,如果zookeeper数据结构中class分片存储,在业务级接口层面上也进行了合并
     */
    public void processorAdded(String serviceFlow, String packageName, String className, String path) {
        sendMsg(Constants.PROCESSOR_ADDED, serviceFlow, packageName, className, path);
        sendMsg(ServiceFlowConstant.PROCESSOR_ADDED, serviceFlow, packageName, className, path);
    }
    public void processorAdded(ServiceFlow serviceFlow) {
        this.sendMsg(Constants.PROCESSOR_ADDED, serviceFlow);
        this.sendMsg(ServiceFlowConstant.PROCESSOR_ADDED, serviceFlow);
    }
    /**
     * 当外界组件通知一个已有的processor处理器data部分发生变化时,该事件被触发。
     */
    public void processorDataChanged(String routeCode, String packageName, String className, String path) {
        this.sendMsg(Constants.PROCESSOR_DATA_CHANGED, routeCode, packageName, className, path);
        this.sendMsg(ServiceFlowConstant.PROCESSOR_DATA_CHANGED, routeCode, packageName, className, path);
    }
    public void processorDataChanged(ServiceFlow serviceFlow) {
        this.sendMsg(Constants.PROCESSOR_DATA_CHANGED, serviceFlow);
        this.sendMsg(ServiceFlowConstant.PROCESSOR_DATA_CHANGED, serviceFlow);
    }
    public void processorDataDeleted(String routeCode, String packageName, String className) {
        this.sendMsg(Constants.PROCESSOR_DATA_DELETED, routeCode, packageName, className, null);
        this.sendMsg(ServiceFlowConstant.PROCESSOR_DATA_DELETED, routeCode, packageName, className, null);
    }
    public void processorDataDeleted(ServiceFlow serviceFlow) {
        this.sendMsg(Constants.PROCESSOR_DATA_DELETED, serviceFlow);
        this.sendMsg(ServiceFlowConstant.PROCESSOR_DATA_DELETED, serviceFlow);
    }
    /**
     * 当外界组件通知一个新的RouteDefine路由被定义时,该事件被触发
     */
    public void routeDefineAdded(String routeCode, String packageName, String className, String path) {
        this.sendMsg(Constants.ROUTE_DEFINE_ADDED, routeCode, packageName, className, path);
        this.sendMsg(ServiceFlowConstant.ROUTE_DEFINE_ADDED, routeCode, packageName, className, path);
    }
    public void routeDefineAdded(ServiceFlow serviceFlow) {
        this.sendMsg(Constants.ROUTE_DEFINE_ADDED, serviceFlow);
        this.sendMsg(ServiceFlowConstant.ROUTE_DEFINE_ADDED, serviceFlow);
    }
    /**
     * 当外界组件通知一个已有的RouteDefine路由定义被改变时,主要就是路由定义内容被改变时,该事件被触发。
     */
    public void routeDefineChanged(String routeCode, String packageName, String className, String path) {
        this.sendMsg(Constants.ROUTE_DEFINE_CHANGED, routeCode, packageName, className, path);
        this.sendMsg(ServiceFlowConstant.ROUTE_DEFINE_CHANGED, routeCode, packageName, className, path);
    }
    public void routeDefineChanged(ServiceFlow serviceFlow) {
        this.sendMsg(Constants.ROUTE_DEFINE_CHANGED, serviceFlow);
        this.sendMsg(ServiceFlowConstant.ROUTE_DEFINE_CHANGED, serviceFlow);
    }
    /**
     * 当外界组件通知一个已有的RouteDefine路由定义被删除时,该事件被触发。
     */
    public void routeDefineDelete(String routeCode, String packageName, String className) {
        this.sendMsg(Constants.ROUTE_DEFINE_DELETED, routeCode, packageName, className, null);
        this.sendMsg(ServiceFlowConstant.ROUTE_DEFINE_DELETED, routeCode, packageName, className, null);
    }
    public void routeDefineDelete(ServiceFlow serviceFlow) {
        this.sendMsg(Constants.ROUTE_DEFINE_DELETED, serviceFlow);
        this.sendMsg(ServiceFlowConstant.ROUTE_DEFINE_DELETED, serviceFlow);
    }
    public void routeClassAdded(String routeCode, String packageName, String className, String path, String cron) {
        this.sendGenMsg(Constants.ROUTE_CLASS_ADDED, routeCode, packageName, className, path, cron);
        this.sendGenMsg(ServiceFlowConstant.ROUTE_CLASS_ADDED, routeCode, packageName, className, path, cron);
    }
    public void routeClassAdded(ServiceFlow serviceFlow) {
        this.sendMsg(Constants.ROUTE_CLASS_ADDED, serviceFlow);
        this.sendMsg(ServiceFlowConstant.ROUTE_CLASS_ADDED, serviceFlow);
    }
    public void routeClassChanged(String routeCode, String packageName, String className, String path, String cron) {
        this.sendGenMsg(Constants.ROUTE_CLASS_CHANGED, routeCode, packageName, className, path, cron);
        this.sendGenMsg(ServiceFlowConstant.ROUTE_CLASS_CHANGED, routeCode, packageName, className, path, cron);
    }
    public void routeClassChanged(ServiceFlow serviceFlow) {
        this.sendMsg(Constants.ROUTE_CLASS_CHANGED, serviceFlow);
        this.sendMsg(ServiceFlowConstant.ROUTE_CLASS_CHANGED, serviceFlow);
    }
    public void processorClassAdded(String routeCode, String packageName, String className, String path) {
        this.sendMsg(Constants.PROCESSOR_CLASS_ADDED, routeCode, packageName, className, path);
        this.sendMsg(ServiceFlowConstant.PROCESSOR_CLASS_ADDED, routeCode, packageName, className, path);
    }
    public void processorClassAdded(ServiceFlow serviceFlow) {
        this.sendMsg(Constants.PROCESSOR_CLASS_ADDED, serviceFlow);
        this.sendMsg(ServiceFlowConstant.PROCESSOR_CLASS_ADDED, serviceFlow);
    }
    public void processorClassChanged(String routeCode, String packageName, String className, String path) {
        this.sendMsg(Constants.PROCESSOR_CLASS_CHANGED, routeCode, packageName, className, path);
        this.sendMsg(ServiceFlowConstant.PROCESSOR_CLASS_CHANGED, routeCode, packageName, className, path);
    }
    public void processorClassChanged(ServiceFlow serviceFlow) {
        this.sendMsg(Constants.PROCESSOR_CLASS_CHANGED, serviceFlow);
        this.sendMsg(ServiceFlowConstant.PROCESSOR_CLASS_CHANGED, serviceFlow);
    }
    private void sendMsg(String event, String routeCode, String packageName, String className, String path) {
        ServiceFlow flow = new ServiceFlow();
        flow.setRouteCode(routeCode);
        ServiceFlow.HandleFile handleFile = flow.new HandleFile();
//        handleFile.setUsage(Constants.FLOW_TYPE_ROUTE);
        ServiceFlow.HandleFile handleFile = new ServiceFlow.HandleFile();
        handleFile.setPackageName(packageName);
        handleFile.setClassName(className);
        handleFile.setFilePath(path);
        handleFile.setFileType(Constants.CLASS);
        handleFile.setFileType(ServiceFlowConstant.CLASS);
        handleFile.setRouteCode(routeCode);
        flow.addHandleFile(handleFile);
        this.sendMsg(event, flow);
@ -155,14 +155,13 @@ public class ServiceFlowEventService {
    private void sendGenMsg(String event, String routeCode, String packageName, String className, String path, String cron) {
        ServiceFlow flow = new ServiceFlow();
        flow.setRouteCode(routeCode);
        ServiceFlow.HandleFile handleFile = flow.new HandleFile();
//        handleFile.setUsage(Constants.FLOW_TYPE_ROUTE);
        ServiceFlow.HandleFile handleFile = new ServiceFlow.HandleFile();
        handleFile.setPackageName(packageName);
        handleFile.setClassName(className);
        handleFile.setFilePath(path);
        handleFile.setFileType(Constants.JAVA);
        handleFile.setFileType(ServiceFlowConstant.JAVA);
        handleFile.setRouteCode(routeCode);
        flow.addHandleFile(handleFile);
        flow.setCron(cron);
        this.sendMsg(event, flow);
    }

+ 1 - 1
src/main/java/com/yihu/hos/standard/controller/StandardController.java

@ -1,6 +1,6 @@
package com.yihu.hos.standard.controller;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.DictionaryResult;
import com.yihu.hos.web.framework.model.Result;

+ 1 - 1
src/main/java/com/yihu/hos/standard/service/adapter/AdapterDatasetRelationService.java

@ -4,7 +4,7 @@ package com.yihu.hos.standard.service.adapter;
import com.fasterxml.jackson.databind.JsonNode;
import com.yihu.hos.standard.model.adapter.AdapterDatasetRelationModel;
import com.yihu.hos.standard.service.bo.AdapterVersion;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.util.sql.SqlCreator;

+ 2 - 2
src/main/java/com/yihu/hos/standard/service/adapter/AdapterDatasetService.java

@ -11,8 +11,8 @@ import com.yihu.hos.standard.model.standard.StdDataSetModel;
import com.yihu.hos.standard.model.standard.StdMetaDataModel;
import com.yihu.hos.standard.service.bo.AdapterVersion;
import com.yihu.hos.standard.service.bo.StandardVersion;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;

+ 1 - 1
src/main/java/com/yihu/hos/standard/service/adapter/AdapterDictEntryService.java

@ -11,7 +11,7 @@ import com.yihu.hos.standard.model.adapter.resultModel.AdapterDictEntryResultDet
import com.yihu.hos.standard.model.standard.StdDictionaryModel;
import com.yihu.hos.standard.service.bo.AdapterVersion;
import com.yihu.hos.standard.service.bo.StandardVersion;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;

+ 2 - 2
src/main/java/com/yihu/hos/standard/service/adapter/AdapterMetadataService.java

@ -14,8 +14,8 @@ import com.yihu.hos.standard.model.standard.StdDataSetModel;
import com.yihu.hos.standard.model.standard.StdMetaDataModel;
import com.yihu.hos.standard.service.bo.AdapterVersion;
import com.yihu.hos.standard.service.bo.StandardVersion;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;

+ 1 - 1
src/main/java/com/yihu/hos/standard/service/adapter/AdapterSchemeDispatchService.java

@ -1,7 +1,7 @@
package com.yihu.hos.standard.service.adapter;
import com.yihu.hos.standard.model.adapter.AdapterSchemeDispatchModel;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import org.springframework.stereotype.Service;

+ 1 - 1
src/main/java/com/yihu/hos/standard/service/adapter/AdapterSchemeService.java

@ -2,7 +2,7 @@ package com.yihu.hos.standard.service.adapter;
import com.fasterxml.jackson.databind.JsonNode;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.core.datatype.CollectionUtil;

+ 2 - 2
src/main/java/com/yihu/hos/standard/service/adapter/AdapterSchemeVersionService.java

@ -1,8 +1,8 @@
package com.yihu.hos.standard.service.adapter;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.*;
import com.yihu.hos.core.datatype.CollectionUtil;

+ 1 - 1
src/main/java/com/yihu/hos/standard/service/bo/AdapterVersion.java

@ -1,6 +1,6 @@
package com.yihu.hos.standard.service.bo;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.common.ObjectVersion;
public class AdapterVersion {

+ 2 - 4
src/main/java/com/yihu/hos/standard/service/standard/StandardService.java

@ -1,10 +1,9 @@
package com.yihu.hos.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.DictItem;
@ -24,7 +23,6 @@ import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

+ 2 - 2
src/main/java/com/yihu/hos/standard/service/standard/StandardVersionService.java

@ -2,8 +2,8 @@ package com.yihu.hos.standard.service.standard;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DictItem;
import com.yihu.hos.web.framework.model.DictionaryResult;

+ 2 - 2
src/main/java/com/yihu/hos/standard/service/standard/StdCDACatalogService.java

@ -3,8 +3,8 @@ package com.yihu.hos.standard.service.standard;
import com.yihu.hos.standard.model.standard.StandardModel;
import com.yihu.hos.standard.model.standard.StdCDACatalogModel;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.util.sql.RequestParamTransformer;

+ 1 - 1
src/main/java/com/yihu/hos/standard/service/standard/StdCDADatasetService.java

@ -4,7 +4,7 @@ package com.yihu.hos.standard.service.standard;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.standard.model.standard.StdCDADatasetModel;
import com.yihu.hos.standard.service.bo.StandardVersion;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.util.sql.BeanTransformer;

+ 1 - 1
src/main/java/com/yihu/hos/standard/service/standard/StdCDAService.java

@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.standard.model.standard.StdCDAModel;
import com.yihu.hos.standard.service.bo.StandardVersion;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.util.sql.BeanTransformer;

+ 1 - 2
src/main/java/com/yihu/hos/standard/service/standard/StdDatasetCatalogService.java

@ -1,9 +1,8 @@
package com.yihu.hos.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.util.sql.RequestParamTransformer;
import com.yihu.hos.web.framework.util.sql.SqlCreator;

+ 2 - 3
src/main/java/com/yihu/hos/standard/service/standard/StdDatasetService.java

@ -1,10 +1,9 @@
package com.yihu.hos.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;

+ 2 - 2
src/main/java/com/yihu/hos/standard/service/standard/StdDictEntryService.java

@ -6,8 +6,8 @@ import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.standard.model.Select2;
import com.yihu.hos.standard.model.standard.StdDictionaryEntryModel;
import com.yihu.hos.standard.service.bo.StandardVersion;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;

+ 2 - 2
src/main/java/com/yihu/hos/standard/service/standard/StdDictService.java

@ -8,8 +8,8 @@ import com.yihu.hos.standard.model.Select2;
import com.yihu.hos.standard.model.standard.StdDictionaryEntryModel;
import com.yihu.hos.standard.model.standard.StdDictionaryModel;
import com.yihu.hos.standard.service.bo.StandardVersion;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;

+ 2 - 3
src/main/java/com/yihu/hos/standard/service/standard/StdMetadataService.java

@ -1,10 +1,9 @@
package com.yihu.hos.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;

+ 2 - 2
src/main/java/com/yihu/hos/standard/service/standard/StdPublisherService.java

@ -1,8 +1,8 @@
package com.yihu.hos.standard.service.standard;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.constrant.ErrorCode;
import com.yihu.hos.web.framework.constrant.SqlConstants;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DictItem;
import com.yihu.hos.web.framework.model.DictionaryResult;

+ 3 - 8
src/main/java/com/yihu/hos/system/controller/FlowController.java

@ -1,16 +1,14 @@
package com.yihu.hos.system.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.common.constants.Constants;
import com.yihu.hos.system.model.SystemServiceFlow;
import com.yihu.hos.system.model.SystemServiceFlowClass;
import com.yihu.hos.system.model.SystemServiceFlowTemp;
import com.yihu.hos.system.service.FlowManager;
import com.yihu.hos.system.service.intf.IFlowManage;
import com.yihu.hos.web.framework.constant.ServiceFlowConstant;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
@ -21,9 +19,6 @@ import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
@ -94,9 +89,9 @@ public class FlowController extends BaseController {
                flowClassList = flowManage.getFlowClassByFlowId(flow.getId());
                flowTempList = flowManage.getFlowTempByFlowId(flow.getId());
                if (Constants.CLASS.equals(flow.getFileType())){
                if (ServiceFlowConstant.CLASS.equals(flow.getFileType())){
                    model.addAttribute("flowClass", objectMapper.writeValueAsString(flowClassList));
                }else if (Constants.JAVA.equals(flow.getFileType())){
                }else if (ServiceFlowConstant.JAVA.equals(flow.getFileType())){
                    model.addAttribute("flowClass", objectMapper.writeValueAsString(flowTempList));
                }
            }  else {

+ 0 - 115
src/main/java/com/yihu/hos/system/model/bo/ServiceFlow.java

@ -1,115 +0,0 @@
package com.yihu.hos.system.model.bo;
import java.util.ArrayList;
import java.util.Date;
/**
 * @author Airhead
 * @since 2016/8/4.
 */
public class ServiceFlow {
    private String routeCode;
    private ArrayList<HandleFile> handleFiles;
    private Date updated;
    private String flowType;    //pull or push?
    private String cron;    //采集任务时使用
    public String getCron() {
        return cron;
    }
    public void setCron(String cron) {
        this.cron = cron;
    }
    public String getRouteCode() {
        return routeCode;
    }
    public void setRouteCode(String routeCode) {
        this.routeCode = routeCode;
    }
    public Date getUpdated() {
        return updated;
    }
    public void setUpdated(Date updated) {
        this.updated = updated;
    }
    public ArrayList<HandleFile> getHandleFiles() {
        return handleFiles;
    }
    public void setHandleFiles(ArrayList<HandleFile> handleFiles) {
        this.handleFiles = handleFiles;
    }
    public void addHandleFile(HandleFile handleFile) {
        if (handleFiles == null) {
            handleFiles = new ArrayList<>();
        }
        handleFiles.add(handleFile);
    }
    public String getFlowType() {
        return flowType;
    }
    public void setFlowType(String flowType) {
        this.flowType = flowType;
    }
    public class HandleFile {
        private String usage;   //router or processor
        private String packageName;
        private String className;
        private String filePath;
        private String fileType;    //java or class
        public HandleFile() {
        }
        public String getPackageName() {
            return packageName;
        }
        public void setPackageName(String packageName) {
            this.packageName = packageName;
        }
        public String getClassName() {
            return className;
        }
        public void setClassName(String className) {
            this.className = className;
        }
        public String getFilePath() {
            return filePath;
        }
        public void setFilePath(String filePath) {
            this.filePath = filePath;
        }
        public String getFileType() {
            return fileType;
        }
        public void setFileType(String fileType) {
            this.fileType = fileType;
        }
        public String getUsage() {
            return usage;
        }
        public void setUsage(String usage) {
            this.usage = usage;
        }
    }
}

+ 40 - 37
src/main/java/com/yihu/hos/system/service/FlowManager.java

@ -1,6 +1,5 @@
package com.yihu.hos.system.service;
import com.yihu.hos.common.constants.Constants;
import com.yihu.hos.config.MongoConfig;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.core.encrypt.DES;
@ -11,11 +10,12 @@ import com.yihu.hos.system.dao.FlowTempDao;
import com.yihu.hos.system.model.SystemServiceFlow;
import com.yihu.hos.system.model.SystemServiceFlowClass;
import com.yihu.hos.system.model.SystemServiceFlowTemp;
import com.yihu.hos.system.model.bo.ServiceFlow;
import com.yihu.hos.system.service.intf.IFlowManage;
import com.yihu.hos.web.framework.constant.ServiceFlowConstant;
import com.yihu.hos.web.framework.model.ActionResult;
import com.yihu.hos.web.framework.model.DictItem;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.model.bo.ServiceFlow;
import com.yihu.hos.web.framework.util.GridFSUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -24,7 +24,10 @@ import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.annotation.Resource;
import java.io.OutputStream;
import java.util.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * 系统流程管理业务类
@ -61,7 +64,7 @@ public class FlowManager implements IFlowManage {
     */
    public List<ServiceFlow> getServiceFlowList() throws Exception {
        List<ServiceFlow> serviceFlowList = new ArrayList<>();
        List<SystemServiceFlow> classFlowList = flowDao.getFlowList(Constants.CLASS);
        List<SystemServiceFlow> classFlowList = flowDao.getFlowList(ServiceFlowConstant.CLASS);
        for (SystemServiceFlow systemServiceFlow : classFlowList) {
            ServiceFlow serviceFlow = new ServiceFlow();
            serviceFlow.setRouteCode(systemServiceFlow.getCode());
@ -70,8 +73,8 @@ public class FlowManager implements IFlowManage {
            List<SystemServiceFlowClass> classList = flowClassDao.getFlowClassByFlowId(systemServiceFlow.getId());
            ArrayList<ServiceFlow.HandleFile> handleFileList = new ArrayList<>();
            for (SystemServiceFlowClass flowClass : classList) {
                ServiceFlow.HandleFile handleFile = serviceFlow.new HandleFile();
                handleFile.setFileType(Constants.CLASS);
                ServiceFlow.HandleFile handleFile = new ServiceFlow.HandleFile();
                handleFile.setFileType(ServiceFlowConstant.CLASS);
                handleFile.setClassName(flowClass.getClassName());
                handleFile.setPackageName(flowClass.getPackageName());
                handleFile.setFilePath(flowClass.getClassPath());
@ -84,7 +87,7 @@ public class FlowManager implements IFlowManage {
            serviceFlowList.add(serviceFlow);
        }
        List<SystemServiceFlow> javaFlowList = flowDao.getFlowList(Constants.JAVA);
        List<SystemServiceFlow> javaFlowList = flowDao.getFlowList(ServiceFlowConstant.JAVA);
        for (SystemServiceFlow systemServiceFlow : javaFlowList) {
            ServiceFlow serviceFlow = new ServiceFlow();
            serviceFlow.setRouteCode(systemServiceFlow.getCode());
@ -92,8 +95,8 @@ public class FlowManager implements IFlowManage {
            List<SystemServiceFlowTemp> tempList = flowTempDao.getFlowTempByFlowId(systemServiceFlow.getId());
            ArrayList<ServiceFlow.HandleFile> handleFileList = new ArrayList<>();
            for (SystemServiceFlowTemp flowTemp : tempList) {
                ServiceFlow.HandleFile handleFile = serviceFlow.new HandleFile();
                handleFile.setFileType(Constants.JAVA);
                ServiceFlow.HandleFile handleFile = new ServiceFlow.HandleFile();
                handleFile.setFileType(ServiceFlowConstant.JAVA);
                handleFile.setClassName(flowTemp.getClassName());
                handleFile.setPackageName(flowTemp.getPackageName());
                handleFile.setFilePath(flowTemp.getClassPath());
@ -119,15 +122,15 @@ public class FlowManager implements IFlowManage {
        obj.setCreateDate(new Date());
        flowDao.saveEntity(obj);
        if (Constants.CLASS.equals(obj.getFileType())) {
        if (ServiceFlowConstant.CLASS.equals(obj.getFileType())) {
            List<SystemServiceFlowClass> flowClassList = obj.getFlowClassArray();
            for (SystemServiceFlowClass flowClass : flowClassList) {
                flowClass.setFlowId(obj.getId());
                flowDao.saveEntity(flowClass);
                //发送消息到MQ对列
                sendUpdateMessage(obj.getCode(), flowClass, Constants.FLOW_OP_ADD);
                sendUpdateMessage(obj.getCode(), flowClass, ServiceFlowConstant.FLOW_OP_ADD);
            }
        } else if (Constants.JAVA.equals(obj.getFileType())) {
        } else if (ServiceFlowConstant.JAVA.equals(obj.getFileType())) {
            List<SystemServiceFlowTemp> flowTempList = obj.getFlowTempArray();
            for (SystemServiceFlowTemp flowTemp : flowTempList) {
                flowTemp.setFlowId(obj.getId());
@ -149,7 +152,7 @@ public class FlowManager implements IFlowManage {
        flow.setFileType(obj.getFileType());
        if (Constants.JAVA.equals(flow.getFileType())) {
        if (ServiceFlowConstant.JAVA.equals(flow.getFileType())) {
            List<SystemServiceFlowTemp> flowTempList = obj.getFlowTempArray();
            boolean succ = flowTempDao.deleteFlowTempByFlowId(obj.getId());
            if (succ) {
@ -157,7 +160,7 @@ public class FlowManager implements IFlowManage {
                    flowTempDao.saveEntity(flowTemp);
                }
            }
        } else if (Constants.CLASS.equals(flow.getFileType())) {
        } else if (ServiceFlowConstant.CLASS.equals(flow.getFileType())) {
            List<Integer> classIds = flowClassDao.getFlowClassIds(obj.getId());//原flowclass集合
            List<SystemServiceFlowClass> flowClassList = obj.getFlowClassArray();
            SystemServiceFlowClass flowClassRoute = null;
@ -166,19 +169,19 @@ public class FlowManager implements IFlowManage {
                if (flowClass.getId() != null) {
                    classIds.remove(flowClass.getId());
                    flowClassDao.updateEntity(flowClass);
                    if (!flowClass.getType().equals(Constants.FLOW_TYPE_ROUTE)) {
                        sendUpdateMessage(flow.getCode(), flowClass, Constants.FLOW_OP_UPDATE);
                    if (!flowClass.getType().equals(ServiceFlowConstant.FLOW_TYPE_ROUTE)) {
                        sendUpdateMessage(flow.getCode(), flowClass, ServiceFlowConstant.FLOW_OP_UPDATE);
                    } else {
                        flowClassRoute = flowClass;
                        oper = Constants.FLOW_OP_UPDATE;
                        oper = ServiceFlowConstant.FLOW_OP_UPDATE;
                    }
                } else {
                    if (!flowClass.getType().equals(Constants.FLOW_TYPE_ROUTE)) {
                    if (!flowClass.getType().equals(ServiceFlowConstant.FLOW_TYPE_ROUTE)) {
                        flowClassDao.saveEntity(flowClass);
                        sendUpdateMessage(flow.getCode(), flowClass, Constants.FLOW_OP_ADD);
                        sendUpdateMessage(flow.getCode(), flowClass, ServiceFlowConstant.FLOW_OP_ADD);
                    } else {
                        flowClassRoute = flowClass;
                        oper = Constants.FLOW_OP_ADD;
                        oper = ServiceFlowConstant.FLOW_OP_ADD;
                    }
                }
            }
@ -187,12 +190,12 @@ public class FlowManager implements IFlowManage {
                for (Integer id : classIds) {
                    SystemServiceFlowClass flowClass = getFlowClassById(id);
                    flowClassDao.deleteEntity(flowClass);
                    if (!flowClass.getType().equals(Constants.FLOW_TYPE_ROUTE)) {
                        sendUpdateMessage(flow.getCode(), flowClass, Constants.FLOW_OP_DELETE);
                    if (!flowClass.getType().equals(ServiceFlowConstant.FLOW_TYPE_ROUTE)) {
                        sendUpdateMessage(flow.getCode(), flowClass, ServiceFlowConstant.FLOW_OP_DELETE);
                    } else {
                        flowClassRoute = flowClass;
                        flowClassRoute.setIsUpdate("1");
                        oper = Constants.FLOW_OP_DELETE;
                        oper = ServiceFlowConstant.FLOW_OP_DELETE;
                    }
                }
            }
@ -212,21 +215,21 @@ public class FlowManager implements IFlowManage {
        SystemServiceFlow flow = flowDao.getEntity(SystemServiceFlow.class, id);
        List<SystemServiceFlowClass> flowClassList = flowClassDao.getFlowClassByFlowId(id);
        List<SystemServiceFlowClass> processorFlowClassList = new ArrayList<>();
        if (Constants.JAVA.equals(flow.getFileType())){
        if (ServiceFlowConstant.JAVA.equals(flow.getFileType())){
            flowTempDao.deleteFlowTempByFlowId(id);
        } else {
            for (SystemServiceFlowClass flowClass:flowClassList){
                flowClassDao.deleteEntity(flowClass);
                flowClass.setIsUpdate("1");
                //发送消息到MQ对列
                if (flowClass.getType().equals(Constants.FLOW_TYPE_ROUTE)) {
                    sendUpdateMessage(flow.getCode(), flowClass, Constants.FLOW_OP_DELETE);
                if (flowClass.getType().equals(ServiceFlowConstant.FLOW_TYPE_ROUTE)) {
                    sendUpdateMessage(flow.getCode(), flowClass, ServiceFlowConstant.FLOW_OP_DELETE);
                } else {
                    processorFlowClassList.add(flowClass);
                }
            }
            for (SystemServiceFlowClass serviceFlowClass : processorFlowClassList) {
                sendUpdateMessage(flow.getCode(), serviceFlowClass, Constants.FLOW_OP_DELETE);
                sendUpdateMessage(flow.getCode(), serviceFlowClass, ServiceFlowConstant.FLOW_OP_DELETE);
            }
        }
@ -320,7 +323,7 @@ public class FlowManager implements IFlowManage {
     */
    public  void sendUpdateMessage(String flowCode,SystemServiceFlowClass flowClass,String operate){
        //发送消息到MQ对列
        if ("1".equals(flowClass.getIsUpdate()) && Constants.FLOW_TYPE_ROUTE.equals(flowClass.getType())) {
        if ("1".equals(flowClass.getIsUpdate()) && ServiceFlowConstant.FLOW_TYPE_ROUTE.equals(flowClass.getType())) {
            //route
            switch (operate){
                case "add" : serviceFlowEventService.routeDefineAdded(flowCode, flowClass.getPackageName(), flowClass.getClassName(), flowClass.getClassPath()); break;
@ -328,7 +331,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()) && ServiceFlowConstant.FLOW_TYPE_PROCESSOR.equals(flowClass.getType())) {
            //processor
            switch (operate){
                case "add" : serviceFlowEventService.processorAdded(flowCode, flowClass.getPackageName(), flowClass.getClassName(), flowClass.getClassPath()); break;
@ -399,8 +402,8 @@ public class FlowManager implements IFlowManage {
    @Override
    public Integer updateCamelFile(Integer flowTempId,Integer flowId, String newCron) throws Exception {
         /* 修改route文件无需重新生成flowClass记录,文件名根据className+routeId 生成;*/
        List<SystemServiceFlowTemp> flowTempRouters = flowTempDao.getFlowTemps(flowTempId, Constants.FLOW_TYPE_ROUTE);
        List<SystemServiceFlowClass> flowClassRouters = flowClassDao.getFlowClass(flowId, Constants.FLOW_TYPE_ROUTE);
        List<SystemServiceFlowTemp> flowTempRouters = flowTempDao.getFlowTemps(flowTempId, ServiceFlowConstant.FLOW_TYPE_ROUTE);
        List<SystemServiceFlowClass> flowClassRouters = flowClassDao.getFlowClass(flowId, ServiceFlowConstant.FLOW_TYPE_ROUTE);
        SystemServiceFlow flow = flowDao.getEntity(SystemServiceFlow.class,flowId);
        //route模板文件记录是否存在。不存在就返回。
        if (!flowTempRouters.isEmpty()){
@ -422,7 +425,7 @@ public class FlowManager implements IFlowManage {
    /* *********************       发送消息方式生成文件   ********************************/
    public Integer sendAddRoute(Integer tempId, Integer flowId, String newCron) throws Exception {
        List<SystemServiceFlowTemp> flowTempRouters = flowTempDao.getFlowTemps(tempId, Constants.FLOW_TYPE_ROUTE);
        List<SystemServiceFlowTemp> flowTempRouters = flowTempDao.getFlowTemps(tempId, ServiceFlowConstant.FLOW_TYPE_ROUTE);
        SystemServiceFlow newFlow = getFlowById(flowId);
        //route模板文件记录是否存在。不存在就返回。
@ -445,7 +448,7 @@ public class FlowManager implements IFlowManage {
            newFlowClass.setClassName(flowTemp.getClassName() + newFlow.getCode());
            newFlowClass.setClassPath(enClassName);
            newFlowClass.setFlowId(newFlow.getId());
            newFlowClass.setType(Constants.FLOW_TYPE_ROUTE);
            newFlowClass.setType(ServiceFlowConstant.FLOW_TYPE_ROUTE);
            flowClassDao.saveEntity(newFlowClass);
            newFlowClass.setIsUpdate("1");
            serviceFlowEventService.routeClassAdded(newFlow.getCode(), basePath.toString(),  flowTemp.getClassName(), deName,newCron);
@ -457,8 +460,8 @@ public class FlowManager implements IFlowManage {
    }
    public Integer sendAddProcessor(Integer flowId, Long timestamp) throws Exception {
        List<SystemServiceFlowTemp> flowTempRouters = flowTempDao.getFlowTemps(flowId, Constants.FLOW_TYPE_ROUTE);
        List<SystemServiceFlowTemp> flowTempProces = flowTempDao.getFlowTemps(flowId, Constants.FLOW_TYPE_PROCESSOR);
        List<SystemServiceFlowTemp> flowTempRouters = flowTempDao.getFlowTemps(flowId, ServiceFlowConstant.FLOW_TYPE_ROUTE);
        List<SystemServiceFlowTemp> flowTempProces = flowTempDao.getFlowTemps(flowId, ServiceFlowConstant.FLOW_TYPE_PROCESSOR);
        SystemServiceFlow oldFlow = getFlowById(flowId);
        //route模板文件记录是否存在。不存在就返回。
@ -471,7 +474,7 @@ public class FlowManager implements IFlowManage {
            newFlow.setChart(oldFlow.getChart());
            newFlow.setValid(1);
            newFlow.setCreateDate(new Date());
            newFlow.setFileType(Constants.CLASS);
            newFlow.setFileType(ServiceFlowConstant.CLASS);
            flowDao.saveEntity(newFlow);
            //新增processor记录
@ -494,7 +497,7 @@ public class FlowManager implements IFlowManage {
                processClass.setClassName(process.getClassName());
                processClass.setClassPath(enClassName);
                processClass.setFlowId(newFlow.getId());
                processClass.setType(Constants.FLOW_TYPE_PROCESSOR);
                processClass.setType(ServiceFlowConstant.FLOW_TYPE_PROCESSOR);
                processClass.setIsUpdate("1");
                //发送消息
                serviceFlowEventService.processorClassAdded(newFlow.getCode(),proPath.toString(), processClass.getClassName(), deName);