| 
					
				 | 
			
			
				@ -5,12 +5,12 @@ 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.model.bo.ServiceFlow; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.hos.web.framework.util.GridFSUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.camel.builder.RouteBuilder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.log4j.LogManager; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -55,6 +55,7 @@ public class ESBCamelService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            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())) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -66,7 +67,8 @@ public class ESBCamelService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return Result.error("服务流程变更增加失败!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.startRouter(handleFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.addRouter(handleFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.startRouter(serviceFlow.getRouteCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Result.error("服务流程变更增加成功!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -97,7 +99,8 @@ public class ESBCamelService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.stopRouter(serviceFlow.getRouteCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.removeRouter(serviceFlow.getRouteCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.startRouter(handleFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.addRouter(handleFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.startRouter(serviceFlow.getRouteCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Result.error("服务流程变更增加成功!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -120,7 +123,8 @@ public class ESBCamelService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SystemCamelContext.getContext().stopRoute(routeCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SystemCamelContext.getContext().removeRoute(routeCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.deleteClassFile(handleFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.startRouter(handleFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.addRouter(handleFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.startRouter(serviceFlow.getRouteCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Result.success("服务流程变更减少成功!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -167,8 +171,12 @@ public class ESBCamelService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (!created) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    return Result.error("服务流程启动失败!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                this.addRouter(handleFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            SystemCamelContext.getContext().startRoute(routeCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.startRouter(serviceFlow.getRouteCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Result.success("服务流程启动成功!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return Result.error("服务流程启动失败!"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -193,6 +201,9 @@ public class ESBCamelService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private boolean createClassFile(ServiceFlow.HandleFile handleFile) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (handleFile == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        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); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -200,10 +211,18 @@ public class ESBCamelService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String fileName = DES.decrypt(handleFile.getFilePath(), DES.COMMON_PASSWORD); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        MongoDatabase db = mongoConfig.mongoClient().getDatabase(dbName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return GridFSUtil.readFile(db, outputStream, fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        boolean read = GridFSUtil.readFile(db, outputStream, fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!read) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.error("not mongo file, fileName:" + fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return read; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private boolean generateClassFile(ServiceFlow.HandleFile handleFile) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (handleFile == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        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); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -213,10 +232,12 @@ public class ESBCamelService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        boolean read = GridFSUtil.readFile(db, outputStream, fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (!read) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            logger.error("not mongo file, fileName:" + fileName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String sourcePath = ClassFileUtil.getFilePath(resource, handleFile.getPackageName(), handleFile.getClassName(), ClassFileUtil.JAVA_FILE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logger.info(sourcePath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return CamelCompiler.compile(sourcePath, resource.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -237,7 +258,18 @@ public class ESBCamelService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        logger.info("===================" + handleFile.getPackageName() + CoreConstant.DOT + className + ".class 删除过程结束"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private void startRouter(ServiceFlow.HandleFile handleFile) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private void addRouter(ArrayList<ServiceFlow.HandleFile> handleFiles) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        handleFiles.forEach(handleFile -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                addRouter(handleFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                logger.error(e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private void addRouter(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()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -248,6 +280,10 @@ public class ESBCamelService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private void startRouter(String routeCode) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SystemCamelContext.getContext().startRoute(routeCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private void stopRouter(String routeCode) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        SystemCamelContext.getContext().stopRoute(routeCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 |