我对Mule很新,所以这可能是一个愚蠢的问题.我想从Mule调用远程axis2 SOAP服务,为此我将使用SOAP组件.我正在努力的是PAYLOAD人口的正确模式.这是一个非常简单的有效负载示例
<oper:CreateTask xmlns:oper="http://api.abc.com/workflow/operationtypes">
<workType>
<Name>Reminder Task</Name>
</workType>
<activitySubject>
<GenericSubject>Richard Fanning</GenericSubject>
</activitySubject>
<description>This is a Mule generated Reminder Task</description>
</oper:CreateTask>
当前正通过set-payload转换器填充有效负载,并且XML嵌入在流中,如下所示
<flow name="createWorkflowTask" doc:name="createWorkflowTask">
<set-payload value="<oper:CreateTask xmlns:oper="http://api.abc.com/workflow/operationtypes"><workType><Name>Reminder Task</Name></workType><activitySubject><GenericSubject>Richard Fanning</GenericSubject></activitySubject><description>This is a Mule generated Reminder Task</description></oper:CreateTask>" doc:name="Set Payload"/>
<cxf:proxy-client doc:name="SOAP" enableMuleSoapHeaders="true" payload="body"/>
<http:outbound-endpoint exchange-pattern="one-way" method="POST" address="http://localhost:6081/workflow/services/ActivityServices" doc:name="HTTP"/>
</flow>
我的问题是设置此有效负载的最合适方式.我的想法是
>如果PAYLOAD更大,那么将这个XML保存在Mule项目的文件中并按照this问题中的概述阅读它会更好
>我不想为Request生成客户端存根类,但也许我应该使用CXF来定义服务类.这会带来什么好处?
是否有其他首选的有效载荷数量方法.在我的用例中,这个(子)流将从路由器调用,所以我不会传递任何会改变消息的相关信息.
旁白:也许对于工作类型名称“提醒任务”我应该提取到mule-app.properties并使用XSLT填充最终请求?
谢谢
丰富
最佳答案 要在流中设置有效负载,可以使用以下任一方法.
>编写一个组件(Java bean),它将XML请求作为String,然后将该字符串作为组件返回.此组件应该是流中的第一个消息处理器.
>编写一个组件(Java bean),它将XML请求从文件读取到String中,然后将该String作为组件的返回值.此组件应该是流中的第一个消息处理器.
>使用入站端点(文件或JMS)作为流的入口点.这些入站可以从指定的路径读取.这样您的输入就可以是动态的.并且您可以针对不同的请求多次执行流程,而无需每次都启动Mule服务器.
有关Mule文件和JMS端点的更多信息,请参见以下链接.
接下来,对于工作类型名称的XSLT填充,可以使用XML模块中的Mule XSLT Transformer.更多相关信息,请参见以下链接Mule XSLT Transformer
希望这可以帮助.