0

Mule を使用して、html ファイルを使用して入力を取得し、入力を使用して値を xml に追加しています。値を抽出することができます。値をさらに xml に追加する必要があります。これが私の設定です

<flow name="webappFlow1" doc:name="webappFlow1">
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="submitData" doc:name="HTTP"/>
    <http:body-to-parameter-map-transformer doc:name="Body to Parameter Map"/>
    <logger message="#[payload['VendorId']]" level="INFO" doc:name="Logger"/>
    <message-properties-transformer doc:name="Message Properties">
        <add-message-property key="vendorId" value="#[payload['VendorId']]"/>
    </message-properties-transformer>
    <file:inbound-endpoint path="src/test/resources" responseTimeout="10000" mimeType="text/xml" doc:name="File"/>

</flow>

次のステップは、xml が次のようになっている場合、ベンダー ID を xml ファイルに追加することです。

<import>
  <field></field>
</import>

フィールドに値を追加したい ありがとう、ラフル

4

2 に答える 2

1

最初にミュールにアプローチするときに最初に理解しておくことが重要なことは、メッセージ ソース (つまり、インバウンド エンドポイント) はフローの最初にしか配置できないということです。それらの後には、すべての要素がメッセージ プロセッサである必要があります。詳細はこちら

つまり、カスタム コンポーネントまたはfileutil モジュールを使用して、ユース ケースを簡単に実装できます。

フローは次のようになります。

<flow name="webappFlow1" doc:name="webappFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="submitData" doc:name="HTTP"/>
<http:body-to-parameter-map-transformer doc:name="Body to Parameter Map"/>
<logger message="#[payload['VendorId']]" level="INFO" doc:name="Logger"/>
<message-properties-transformer doc:name="Message Properties">
    <add-message-property key="vendorId" value="#[payload['VendorId']]"/>
</message-properties-transformer>
<set-variable variableName="VendorId" value="#[payload['VendorId']]"/>
<file-utils:read-file fileName="import.xml" filePath="/my/path" />
<!-- The following trasformer should be a either some custom java code or a scripting transformer 
 that process the payload (the xmlFile) and by processing it i adds the flowVar['vendorId'] to it. -->
<trasformer ref="xmlTrasformer" />
</flow>

Transformer の書き方に関する情報は、ここここにあります。

于 2012-10-18T10:47:53.783 に答える
0

送信時に Studio と格闘することが問題になる場合は、いつでも式コンポーネントを使用してファイルを読み取ることができます。

から読み取るつもりであることに気付きましたsrc/test/resources:スタジオはこのパスをクラスパスに配置しないため、src/main/app代わりにからファイルを読み取っても問題ないと仮定すると、次のコンポーネントは次のように読み取りますsrc/main/app/text.xml:

<expression-component doc:name="Read Classpath Resource">
  payload = Thread.currentThread().contextClassLoader.getResourceAsStream('test.xml')
</expression-component>
于 2012-10-19T16:27:51.297 に答える