1.整个路由的设置如图。黑色标号的2和3两个JDBC节点访问的数据库不同,标号2的JDBC节点访问的是oracle数据库,标号3的JDBC节点访问的是sqlserver数据库。注意:截图界面因为是公司对Apache camel做了一些封装,可能跟Apache camel原生界面不一样,但是节点的功能差不多的。图标什么的也差不多。
2.入参json格式如下,分支节点的目的是当fvisitordno入参有值时候走路由上面一条线,查询对应入参范围的值,如果fvisitordno入参无值时,走路由的下面一条线。
{
"data": {
"end_date": "2024-03-27 23:59:59",
"fsource": "MNIS",
"start_date": "2024-03-25 00:00:00",
"fvisitordno": ""
}
}
3.获取ID节点采用groovy代码,获取上json入参中的三个参数,设置为消息头。
package com.kingdeehit.cloud.integration.service;//这个是金蝶云的一个java包
import com.kingdeehit.cloud.core.exception.CloudBaseException;//这个是金蝶云的一个java包
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.mortbay.log.Log;
import java.util.Map;
public class Groovy3 extends IGroovyPlugin {
@Override
public void process(Exchange exchange) {
try {
Message message = exchange.getIn();
Map body = message.getBody(Map.class);
String id = (String) body.get("data").("fvisitordno");//获取json入参中data节点下的fvisitordno值
message.setHeader("fvisitordno",id);//setHeader把值设置为消息头
String id1 = (String) body.get("data").("start_date");//获取json入参中data节点下的start_date值
message.setHeader("start_date",id1);//setHeader把值设置为消息头
String id2 = (String) body.get("data").("end_date");//获取json入参中data节点下的end_date值
message.setHeader("end_date",id2);//setHeader把值设置为消息头
} catch (Exception e) {
throw new CloudBaseException(e);
}
}
}
4.分支节点的设置如图
5.标号2JDBC节点配置如下图
6.灰色标号3的groovy脚本如下
package com.kingdeehit.cloud.integration.service;
import com.kingdeehit.cloud.core.exception.CloudBaseException;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.mortbay.log.Log;
import java.util.*;
public class Groovy3 extends IGroovyPlugin {
@Override
public void process(Exchange exchange) {
try {
Message message = exchange.getIn();
ArrayList body = (ArrayList) message.getBody();//获取上一步消息中的body对象
StringBuilder strappnote_id =new StringBuilder()
for(int i = 0; i< body.size();i++){//遍历body中的对象
HashMap mapappnote_id = (HashMap) body.get(i);
String tempappnote_id =mapappnote_id.get("appnote_id").toString()//遍历body对象中的appnote_id值
strappnote_id=strappnote_id.append(tempappnote_id).append("','")//将appnote_id值依次添加到strappnote_id对象中
}
strappnote_id.insert(0, "('")
Integer length = new Integer(strappnote_id.length()-2);
strappnote_id.setLength(length)
strappnote_id=strappnote_id.append(")")
HashMap mapbody = new HashMap()
mapbody.put("appnote_id",strappnote_id)
String start_date = (String) message.getHeader("start_date");//获取Header中的start_date值
mapbody.put("start_date",start_date) //将start_date值添加到mapbody对象中
String end_date = (String) message.getHeader("end_date");
mapbody.put("end_date",end_date)
exchange.getIn().setBody(mapbody)
} catch (Exception e) {
throw new CloudBaseException(e);
}
}
}
7.黑色标号3JDBC节点配置如下图
8.灰色标号4的groovy节点脚本如下,将黑色标号3JDBC节点集出来的数据处理成map输出。
package com.kingdeehit.cloud.integration.service;
import com.kingdeehit.cloud.core.exception.CloudBaseException;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import java.util.*;
public class Groovy3 extends IGroovyPlugin {
@Override
public void process(Exchange exchange) {
try {
Message message = exchange.getIn();
List body = message.getBody(List.class);
HashMap newBody = new HashMap();
newBody.put("data", body);//把body添加到map对象中的data节点里
message.setBody(newBody);
} catch (Exception e) {
throw new CloudBaseException(e);
}
}
}