Flex Gateway新着情報
Governance新着情報
Monitoring API Manager次の Compression Module の例は、フォルダーとの間でファイルのアーカイブと抽出を行う方法を示しています。File Connector の List 操作で、input という名前のフォルダーからすべてのファイルをリストします。次に Compress 操作で、キーをファイル名に設定し、値をリストされたファイルの値に設定してオブジェクトを生成し、圧縮されたアーカイブを作成します。
その後、Extract 操作で、アーカイブされたファイルを圧縮解除します。次に、ForEach スコープで、抽出された各キー/値ペアを反復処理し、キーをファイル名、値を対応する抽出されたファイルコンテンツとして、ファイルを新しい出力フォルダーに書き込みます。
Studio で [Scheduler] トリガーをフローにドラッグします。
[Frequency (頻度)] を 15 に設定し、[Time unit (時間単位)] を SECONDS に設定します。
[List] 操作を [Scheduler] トリガーの横にドラッグします。
コネクタ設定を追加します。
[Directory path (ディレクトリパス)] を input に設定します。
[Set Payload] コンポーネントを [List] 操作の右にドラッグします。
[Value (値)] を次の DataWeave 式に設定します。
output application/java
---
(0 to sizeOf(payload) - 1) as Array
reduce (index, acc={}) ->
acc ++ { (payload[index].attributes.fileName): payload[index].payload}
[Archive] 操作を [Set payload] コンポーネントの横にドラッグします。
[Extract] 操作を [Archive] 操作の横にドラッグします。
For Each スコープをドラッグします。
[Collection (コレクション)] を payload に設定します。
[Write] 操作を For Each スコープにドラッグします。
[Path (パス)] を #[output application/json--- "output/" ++ (payload pluck $$)[0]] に設定します。
[Content (コンテンツ)] を [CDATA[#[output application/java --- ( payload pluck $ )[0]]] に設定します。
[Logger] コンポーネントを For Each スコープの右にドラッグします。
[Message (メッセージ)] を output application/json --- payload に設定します。
Mule アプリケーションを保存して実行します。

設定 XML エディターでは、設定は次のように記述されます。
<flow name="archive-extract-test" >
<scheduler doc:name="Scheduler">
<scheduling-strategy >
<fixed-frequency frequency="15" timeUnit="SECONDS"/>
</scheduling-strategy>
</scheduler>
<file:list doc:name="List" config-ref="File_Config" directoryPath="input"/>
<set-payload value='#[output application/java
---
(0 to sizeOf(payload) - 1) as Array
reduce (index, acc={}) ->
acc ++ { (payload[index].attributes.fileName): payload[index].payload}]' doc:name="Set Payload" />
<compression:archive doc:name="Archive" >
<compression:archiver>
<compression:zip-archiver />
</compression:archiver>
</compression:archive>
<compression:extract doc:name="Extract" >
<compression:extractor >
<compression:zip-extractor />
</compression:extractor>
</compression:extract>
<foreach doc:name="For Each" collection="#[dw::Core::entriesOf(payload)]">
<file:write doc:name="Write" config-ref="File_Config" path='#[output application/json --- "output/" ++ payload.key]'>
<file:content><![CDATA[#[output application/java --- payload.value]]]></file:content>
</file:write>
</foreach>
<logger level="INFO" doc:name="Logger" message="#[output application/json --- payload]"/>
</flow>
</mule>