私は 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="<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 プロジェクトのファイルに保持し、この質問で概説されているように読み取る方がよいでしょう。
- Request のクライアント スタブ クラスを生成したくないのですが、CXF を使用してサービス クラスを定義する必要があるかもしれません。これにはどのような利点がありますか?
ペイロードを設定する他の推奨方法はありますか。私の使用例では、この (サブ) フローはルーターから呼び出されるため、メッセージを変更する関連情報は渡されません。
余談ですが、ワークタイプ名「リマインダー タスク」については、mule-app.properties に抽出し、XSLT を使用して最終リクエストに入力する必要がありますか?
ありがとう
リッチ