我研究使用的样例是使用Mule ESB提供的Data Weaver(简称DW),将一个json报文转换为xml响应,我使用的Anypoint Studio版本是6.0, Studio中运行项目的Mule Standalone版本是3.8.0.M1 EEweb
1.建立Mule ESB项目json
打开Anypoint Studio, 选择[New]-[Mule Project],新建一个Mule Projectapp
这里咱们新建一个Mule Maven Project,让Anypoint Studio帮咱们生成maven项目所需的pom.xml文件,在生成web application文件的war包时须要修改这个pom文件。maven
具体anypoint studio使用的jdk设置以及maven repository的设定请参考Mule相关文档,再也不赘述。orm
2)Mule Project生成之后,打开src/main/app目录下的流程文件([项目名].xml文件),从Mule Palette中拖拽一个Http Listener到流程图中,做为ESB项目的Http请求入口。xml
打开HTTP节点,设置Http请求的参数文档
点击Connector Configuration旁边的[+]按钮,新建一个Http Connector,设置Connector的端口为8081,根目录为/it
设置Connector属性后,点击[OK],关闭Connector窗口,设置Path路径为Test,Allowed Methods为POST.io
3)拖拽一个DW控件(Transform Message控件)到Http控件以后,用于从json报文到xml报文响应的转换。form
4)打开Transform Message控件,设置转换的源数据格式和目标数据格式。
点击左侧的[Define metadata],设置源数据格式为json格式,这里能够使用json schema文件定义源数据格式(Type选择Schema,文件选择json schema文件),也能够使用实际json样例文件定义(Type选择Example,文件选择实际json文件)。我这里采用的是后者。
一样的方式,点击右侧的[Define metadata],定义输出xml文件的格式,能够使用xml schema文件,也能够使用xml样例文件定义,这一点和上面提到的json文件相同。
定义好的dw样式图以下:
5)定义源数据和目标数据字段之间的映射关系。
咱们选中左侧源数据端Payload:Json下的name节点,用鼠标拖拽到右侧目标数据段的Xml<Student>节点下的name节点,松开鼠标,在这两个属性节点之间创建一一映射关系
(实际项目中节点之间映射关系比这种一一映射关系复杂的多,能够参考Data Weaver相关文档),再在左侧id属性和右侧id属性之间创建一一映射关系。
映射关系创建完成后的dw图以下所示:
至此一个ESB http项目就创建完成。