骡子 3.4+ : Best practice in setting the payload for static SOAP request

标签 mule

我对 Mule 还很陌生,所以这可能是一个愚蠢的问题。我想从 Mule 调用远程 axis2 SOAP 服务,为此我将使用 SOAP 组件。我正在努力解决的是有效负载人口的正确模式。这是一个非常简单的有效负载示例

  <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="&lt;oper:CreateTask xmlns:oper=&quot;http://api.abc.com/workflow/operationtypes&quot;&gt;&lt;workType&gt;&lt;Name&gt;Reminder Task&lt;/Name&gt;&lt;/workType&gt;&lt;activitySubject&gt;&lt;GenericSubject&gt;Richard Fanning&lt;/GenericSubject&gt;&lt;/activitySubject&gt;&lt;description&gt;This is a Mule generated Reminder Task&lt;/description&gt;&lt;/oper:CreateTask&gt;" 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>

我的问题是设置此有效负载的最合适方法是什么。我的想法是

  1. 如果 PAYLOAD 更大,最好将此 XML 维护在 Mule 项目的文件中,并按照 this 中的概述读取它。问题
  2. 我不想为请求生成客户端 stub 类,但也许我应该使用 CXF 来定义服务类。这会带来什么好处?

还有其他首选的有效负载填充方法吗?在我的用例中,将从路由器调用此(子)流,因此我不会传递任何会更改消息的相关信息。

旁白:也许对于工作类型名称“提醒任务”,我应该提取到 mule-app.properties 并使用 XSLT 填充最终请求?

谢谢

丰富

最佳答案

为了在流中设置负载,您可以使用以下任一方法。

  1. 编写一个组件(Java bean),将 XML 请求作为字符串,然后将该字符串作为组件的返回值。该组件应该是流程中的第一个消息处理器。

  2. 编写一个组件(Java bean),将文件中的 XML 请求读取到字符串中,然后将该字符串作为组件的返回值。该组件应该是流程中的第一个消息处理器。

  3. 使用入站端点(文件或 JMS)作为流程的入口点。这些入站可以从指定的路径读取。这样您的输入就可以是动态的。并且您可以针对不同的请求多次执行该流程,而无需每次都启动 Mule 服务器。

有关 Mule 文件和 JMS 端点的更多信息,请参见以下链接。

Mule JMS Transport Reference

Mule File Endpoint

接下来,对于工作类型名称的 XSLT 填充,可以使用 XML 模块中的 Mule XSLT Transformer。有关更多信息,请访问以下链接 Mule XSLT Transformer

希望这有帮助。

关于骡子 3.4+ : Best practice in setting the payload for static SOAP request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18331761/

相关文章:

maven - 创建 Maven 项目时出错

mule - mule 中的入站终点和出站终点究竟是什么?

stored-procedures - 如何使用新的数据库端点从 Mule 3.5 调用存储过程

.net - 有人将 MULE (ESB) 集成到 .Net 平台或 WCF 中吗?

Mule Groovy 脚本文件位置在 Studio 中有效,但不能独立使用

java - Mule 没有使用 Spring 找到属性文件

xpath - mule 从 json 有效载荷中获取数据

error-handling - 如何处理 "Couldn' t 在骡子中得到任何响应?

java - 无法根据 EmailID 从 DocuSign 获取用户信息

mule - 获取消息入站属性