ESB控件的使用
esb控件记录
1.src/main/resouses 文件夹中放需要解析的文件
2.src/main/java中写java代码,一般不写,只有当mule不能实现功能的时候才会写代码
-
flow : 相当于是一个过程,顺序执行
-
payload : 相当于是一个指向栈顶的指针,执行的过程,每经过一个组件 ,把组件压入栈中,payload指向的对象都是栈顶元素,都是在动态变化,前提是connector是有输出的如果没输出,我们认为这个connector没有压入栈中好了,栈的大小为1 ,其中logger 和 variable的connector 没有数据输出,payload经过这两个connector,值不会发生变化
-
post方式获取请求发送的方式 #[payload.变量名]
get方式获取请求发送的方式#[message.inboundProperties.'http.query.params'.变量名] -
variable:获取get ,post中传过来的参数,放入变量中(变量名在variable控件中设置,其中获取传过来的变量值,见上一条的获取方式,3),使用变量中的值,使用#[flowVars.变量名]
注,关于#[]的使用,可以理解成[]中的都是java代码,可以执行语句;其中变量名会被自动解析,非变量则被当成字符串,可以进行拼接,与jsp标签<%=%>很相像 -
ByteArraytoString 把接受到的流转换为字符串(一般用于接受json和xml类型的参数,这种参数都是用流的方式接受到的) 这个控件的参数不需要设置
-
set payload 给payload设值,比如要传入一个json对象,则把payload设置成json对象,当payload指向http控件时候,会自动把值传给http控件
-
object to json : 把字符串转成json格式 (当转的数据中存在date类型的字段时,经常需要进行序列化操作,目前还不知道该怎么操作,可以使用transform message控件代替)
-
transform message : 数据转换,把一种数据格式转换成另一种数据格式,把待转换的数据的字段与转换后的字段对应起来即可。当被转换的数据格式是从数据库中查出来的记录时(此时payload是一个list<map<String , Object>>),会自动显示待被转换的字段,即map中的key值,除了该格式的数据外,其他格式的数据字段(如json)不会自动显示出来,需要setMeta,转换后的数据的字段一定要setMeta,一般都是json数据,我们现在java/main/resource中创建一个json模板,把该模板设置为转换后的数据格式(具体怎么把模板设置为数据格式,暂时不做记录)
-
数据转换的两种方式:
1) transform message 如果要把 list -
批量添加(insert bulk): 先把database加入到flow中,选中database的Bulk Modle 选项,然后再把transform拖到database前进行数据转换
-
postman传的中文是乱码, 在Content-Type中追加: ;charSet=utf-8
-
Groovy :用于写脚本语言(有两个,用的是蓝色的那个,红色的那个的作用还不知道)
-
Catch Exception Strategy:用于处理异常。 当正常的flow执行下去遇到异常的时候,跳转到下面的Error Handling中执行。这个时候的payload还是可以像之前那么使用。