0

2 つの JMS ベースのエンドポイントを接続する Mule (v3.1.2) の実用的な実装があります。XML メッセージは、両者の間で問題なく渡されています。

ここで、キューの 1 つの並列宛先として追加のファイル エンドポイントを追加する必要があります。ファイル エンドポイントの追加は機能し、メッセージはファイル システムに期待どおりに表示されます。

XML ペイロードの内容に基づいてファイル名を設定することはできますか? b8ede5db-9b7a-11e2-9d10-cd8a155d0975.dat現在、特に意味のない名前 (たとえば) でファイルが生成されています。

したがって、以下のような内容のファイルの場合

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Acknowledgement UploadDate="Tue Apr 02 05:05:01 EDT 2013" Uploaded="0" Rejected="1" Received="1">
    <Trades Uploaded="0" Rejected="1" Received="1">
        <Trade>
            <ExtRef>1</ExtRef>
            <TradeId>0</TradeId>
            <Status>Rejected</Status>
            <Action>NEW</Action>
            <Error>
                <Message>ERROR-TYPE: 'InvalidData'; ITEM: 'CP'; MESSAGE: 'Invalid CP'; VALUE: 'BLAH BLAH'</Message>
            </Error>            
        </Trade>
    </Trades>
</Acknowledgement>

「ExtRef」要素に基づいたファイル名を代わりに持つことは可能でしょうか?

4

1 に答える 1

2

file:outbound-endpoint でoutputPattern属性を使用して、ファイルの命名パターンを定義できます。その後、xpath 式を使用して XML から値を抽出し、ファイルに名前を付けることができます。

たとえば、XML に基づいて、次の構成ではファイルシステムに1.datという名前のファイルが作成されます。

この xpath 式の構文は、3.1.2 で動作するはずです。

<file:outbound-endpoint path="c:/temp" outputPattern="#[string:#[xpath:/Acknowledgement/Trades/Trade/ExtRef].dat]" responseTimeout="10000" />
于 2013-04-03T15:00:09.527 に答える