Browse Source

route 修改删除bug修复

huangzhiyong 8 years ago
parent
commit
69f2138c03

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

@ -1,8 +1,6 @@
package com.yihu.hos.arbiter.services;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mongodb.BasicDBObject;
import com.mongodb.WriteResult;
import com.yihu.hos.core.http.HTTPResponse;
import com.yihu.hos.core.http.HttpClientKit;
import com.yihu.hos.web.framework.constant.ServiceFlowConstant;
@ -55,14 +53,11 @@ public class ServiceFlowService {
        update.set("tenant", serviceFlow.getTenant());
        //删除旧记录
        Update delete = new Update();
        for (ServiceFlow.HandleFile handleFile : serviceFlow.getHandleFiles()) {
            delete.pull("handleFiles", new BasicDBObject("className", handleFile.getClassName()));
            Query deleteQuery = Query.query(Criteria.where("className").is(handleFile.getClassName()));
            WriteResult result = mongoOperations.updateFirst(deleteQuery, delete, ServiceFlow.HandleFile.class);
        update.set("handleFiles", serviceFlow.getHandleFiles());
            update.addToSet("handleFiles", handleFile);
        }
//        update1.set("handleFiles.$.className", handleFile.getClassName());
//        Query query1 = Query.query(new Criteria().andOperator(Criteria.where("className").is( handleFile.getClassName()),Criteria.where("handleFiles").elemMatch(Criteria.where("className").is( handleFile.getClassName()))));
//        mongoOperations.updateFirst(query1, update1, ServiceFlow.class);
        mongoOperations.upsert(query, update, ServiceFlow.class);
@ -270,7 +265,7 @@ public class ServiceFlowService {
    public void serviceFlowDelete(String msg) {
        try {
            ServiceFlow serviceFlow = getServiceFlow(msg);
            serviceFlow = this.save(serviceFlow);
             this.delete(serviceFlow);
            boolean one = ServiceFlowConstant.JAVA.equals(serviceFlow.getFlowType());//java类型为采集任务
            if (one) {

+ 2 - 2
hos-arbiter/src/main/resources/application.yml

@ -31,14 +31,14 @@ spring:
  profiles: test
  data:
    mongodb:
      host: mongodb
      host: 172.19.103.67
      port: 27017
      username: esb
      password: esb
      authenticationDatabase: admin
      database: runtime
  activemq:
    broker-url: tcp://activemq:61616
    broker-url: tcp://172.19.103.67:61616
    user: admin
    password: admin
arbiter:

+ 2 - 4
hos-broker/src/main/java/com/yihu/hos/broker/services/camel/ESBCamelService.java

@ -1,12 +1,10 @@
package com.yihu.hos.broker.services.camel;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.yihu.hos.broker.configurations.MongoConfiguration;
import com.yihu.hos.core.constants.CoreConstant;
import com.yihu.hos.core.datatype.ClassFileUtil;
import com.yihu.hos.core.datatype.StringUtil;
@ -108,7 +106,7 @@ public class ESBCamelService {
            ServiceFlow serviceFlow = serviceFlowValid.getServiceFlow();
            SystemCamelContext.stopRouter(serviceFlow.getRouteCode());
            SystemCamelContext.removeRouter(serviceFlow.getRouteCode());
            boolean b = SystemCamelContext.removeRouter(serviceFlow.getRouteCode());
            boolean created;
            ArrayList<ServiceFlow.HandleFile> handleFiles = serviceFlowValid.getHandleFiles();
            for (ServiceFlow.HandleFile handleFile : handleFiles) {
@ -123,7 +121,7 @@ public class ESBCamelService {
            }
            this.addRouter(serviceFlowValid.getHandleFiles());
            SystemCamelContext.startRouter(serviceFlow.getRouteCode());
//            SystemCamelContext.startRouter(serviceFlow.getRouteCode());
            return Result.error("服务流程变更增加成功!");
        } catch (Exception e) {

+ 14 - 0
hos-camel/src/main/java/api8/processor/ApiProcessor2.java

@ -0,0 +1,14 @@
package api8.processor;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
public class ApiProcessor2 implements Processor {
    public void process(Exchange exchange) throws Exception {
        Message outMessage = exchange.getOut();
        System.out.println("测试,helloWorld 打印camel接口");
        outMessage.setBody("hello,api8vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv");
    }
}

+ 13 - 0
hos-camel/src/main/java/api8/route/ApiRouteBulider2.java

@ -0,0 +1,13 @@
package api8.route;
import api8.processor.ApiProcessor2;
import org.apache.camel.builder.RouteBuilder;
public class ApiRouteBulider2 extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("jetty:http://0.0.0.0:9097/api/v8").routeId("api8")
                .process(new ApiProcessor2()).log("servers: 0,code: ,order: 0").log("servers: 0,code: ,order: 0");
    }
}

+ 28 - 10
src/main/java/com/yihu/hos/system/service/FlowManager.java

@ -252,6 +252,8 @@ public class FlowManager {
    @Transactional
    public Result updateFlow(SystemServiceFlow obj) throws Exception {
        ServiceFlow serviceFlow = new ServiceFlow();
        SystemServiceFlow flow = flowDao.getEntity(SystemServiceFlow.class, obj.getId());
        flow.setCode(obj.getCode());
        flow.setName(obj.getName());
@ -274,43 +276,59 @@ public class FlowManager {
            List<SystemServiceFlowClass> flowClassList = obj.getFlowClassArray();
            SystemServiceFlowClass flowClassRoute = null;
            String oper = "";
            serviceFlow.setRouteCode(obj.getCode());
            serviceFlow.setFlowType(ServiceFlowConstant.CLASS);
            for (SystemServiceFlowClass flowClass : flowClassList) {
                if (flowClass.getId() != null) {
                    classIds.remove(flowClass.getId());
                    flowClassDao.updateEntity(flowClass);
                    if (!flowClass.getType().equals(ServiceFlowConstant.FLOW_TYPE_ROUTE)) {
                        sendUpdateMessage(flow.getCode(), flowClass, ServiceFlowConstant.FLOW_OP_UPDATE);
                    } else {
                    if (flowClass.getType().equals(ServiceFlowConstant.FLOW_TYPE_ROUTE)) {
//                        sendUpdateMessage(flow.getCode(), flowClass, ServiceFlowConstant.FLOW_OP_UPDATE);
//                    } else {
                        flowClassRoute = flowClass;
                        oper = ServiceFlowConstant.FLOW_OP_UPDATE;
                    }
                } else {
                    if (!flowClass.getType().equals(ServiceFlowConstant.FLOW_TYPE_ROUTE)) {
                        flowClassDao.saveEntity(flowClass);
                        sendUpdateMessage(flow.getCode(), flowClass, ServiceFlowConstant.FLOW_OP_ADD);
//                        sendUpdateMessage(flow.getCode(), flowClass, ServiceFlowConstant.FLOW_OP_ADD);
                    } else {
                        flowClassRoute = flowClass;
                        oper = ServiceFlowConstant.FLOW_OP_ADD;
                    }
                }
                ServiceFlow.HandleFile handleFile = new ServiceFlow.HandleFile();
                handleFile.setRouteCode(obj.getCode());
                handleFile.setFileType(ServiceFlowConstant.CLASS);
                handleFile.setPackageName(flowClass.getPackageName());
                handleFile.setClassName(flowClass.getClassName());
                handleFile.setFilePath(flowClass.getClassPath());
                handleFile.setUsage(flowClass.getType());
                serviceFlow.addHandleFile(handleFile);
            }
            serviceFlowEventService.serviceFlowModifiedAdd(serviceFlow);
            //删除判断
            if (classIds != null && classIds.size() > 0) {
                for (Integer id : classIds) {
                    SystemServiceFlowClass flowClass = getFlowClassById(id);
                    flowClassDao.deleteEntity(flowClass);
                    if (!flowClass.getType().equals(ServiceFlowConstant.FLOW_TYPE_ROUTE)) {
                        sendUpdateMessage(flow.getCode(), flowClass, ServiceFlowConstant.FLOW_OP_DELETE);
                    } else {
                    if (flowClass.getType().equals(ServiceFlowConstant.FLOW_TYPE_ROUTE)) {
//                        sendUpdateMessage(flow.getCode(), flowClass, ServiceFlowConstant.FLOW_OP_DELETE);
//                    } else {
                        flowClassRoute = flowClass;
                        flowClassRoute.setIsUpdate("1");
                        oper = ServiceFlowConstant.FLOW_OP_DELETE;
                    }
                }
            }
            if (flowClassRoute != null) {
                sendUpdateMessage(flow.getCode(), flowClassRoute, oper);
            }
//            if (flowClassRoute != null) {
//                sendUpdateMessage(flow.getCode(), flowClassRoute, oper);
//            }
        }
        flowDao.updateEntity(flow);