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}
dataweave
[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="payload">
<file:write doc:name="Write" config-ref="File_Config" path='#[output application/json
---
"output/" ++ (payload pluck $$)[0]]' >
<file:content ><![CDATA[#[output application/java --- ( payload pluck $ )[0]]]]></file:content>
</file:write>
</foreach>
<logger level="INFO" doc:name="Logger" message="#[output application/json --- payload]"/>
</flow>
</mule>
xml