我对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>
我的问题是设置此有效负载的最合适方式。我的想法是
是否有其他首选的有效载荷数量方法。在我的用例中,这个(子)流将从路由器调用,所以我不会传递任何会改变消息的相关信息。
除此之外:也许对于工作类型名称“提醒任务”,我应该提取到mule-app.properties并使用XSLT填充最终请求?
由于
富
答案 0 :(得分:2)
要在流中设置有效负载,您可以使用以下任一方式。
编写一个组件(Java bean),它将XML请求作为String,然后将该字符串作为组件的返回值。该组件应该是您流程中的第一个消息处理器。
编写一个组件(Java bean),它将XML请求从文件读取到String中,然后将该String作为组件的返回值。该组件应该是您流程中的第一个消息处理器。
使用入站端点(文件或JMS)作为流的入口点。这些入站可以从指定的路径读取。这样您的输入就可以是动态的。并且您可以针对不同的请求多次执行流程,而无需每次都启动Mule服务器。
有关以下链接中的Mule文件和JMS端点的更多信息。
接下来,对于工作类型名称的XSLT填充,可以使用XML模块中的Mule XSLT Transformer。有关详情,请参阅以下链接Mule XSLT Transformer
希望这有帮助。