ファイルのアーカイブと抽出

Compression Module では、一連のエントリを新しいアーカイブファイルに圧縮できる ​Archive​ 操作と、アーカイブファイルを表すコンテンツを圧縮解除できる ​Extract​ 操作が提供されます。

Archive 操作の設定

入力ストリームペイロードを指定すると、​Archive​ 操作では、すべてのペイロードエントリを Zip 形式の新しいアーカイブファイルに圧縮できます。この操作では、圧縮する値を特定するマップを受け取ります。その後、各エントリを受け取ります。各エントリは、DataWeave 式で指定したエントリ名を持つ圧縮されたアーカイブファイル内に配置されます。

  1. Studio で、​Archive​ 操作をフローにドラッグします。

  2. 圧縮するエントリの各名前をキーとして定義し、そのエントリのコンテンツをその値として定義する DataWeave スクリプトに ​[Entries (エントリ)]​ を設定します。たとえば、次のように定義します。

    {
             summary.pdf: vars.summary,
             'details/result_001.pdf': vars.file1
             'details/result_002.pdf': vars.file2
           }
    dataweave
Compression Archive 操作の設定

設定 XML​ エディターでは、設定は次のように記述されます。

<compression:archive>
   <compression:entries>
    #[
       {
         summary.pdf: vars.summary,
         'details/result_001.pdf': vars.file1
         'details/result_002.pdf': vars.file2
       }
     ]
   </compression:entries>
   <compression:archiver>
       <compression:zip-archiver/>
   </compression:archiver>
</compression:archive>
xml

結果のアーカイブには 3 つのエントリが含まれます。ルートレベルで配置されている ​summary.pdf​ と、​details​ ディレクトリに配置されている ​result_001.pdf​ および ​result_002.pdf​ です。

+- content.zip
|  \- summary.pdf
|  \+ details
   |  \- result_001.pdf
   |  \- result_002.pdf

details/result_001.pdf​ など、エントリの名前の中にあるスラッシュ ​/​ はディレクトリの分離を示します。すべての名前が調べられ、アーカイブ内のディレクトリが作成されます。

DataWeave 式を使用して ​Archive​ 操作への入力を作成する場合、DataWeave 式で、Java マップオブジェクトをビルドするために使用するオブジェクトを出力する必要があります。アーカイブにオブジェクト全体を追加するための一意のキーを定義します。

ZIP64 アーカイブツール戦略の設定

アーカイブツール戦略では、複数のエントリを 1 つのアーカイブに圧縮します。Zip アーカイブツール戦略では、Zip 形式を使用してコンテンツを圧縮する必要があることが宣言されます。Studio では ​[Archiver (アーカイブツール)]​ 項目はデフォルトで設定されます。4 GB を超えるファイルとバイト配列をアーカイブするには、​[Force ZIP64 (ZIP64 を強制)]​ 項目を選択します。

  1. Studio で、フローから ​[Archive]​ 操作を選択します。

  2. [Entries (エントリ)]​ 項目を、たとえば、次のような式に設定します。

    output application/java
    ---
    (0 to sizeOf(payload) - 1) as Array
    reduce (index, acc={}) ->
    acc ++ { (payload[index].attributes.fileName): payload[index].payload}
    DataWeave
  1. [Force ZIP64 (ZIP64 を強制)]​ を選択します。

選択されている [Force ZIP64 (ZIP64 を強制)] 項目

[Configuration XML (設定 XML)]​ エディターで、​zip-archiver​ および ​forceZip64​ の設定は次のように記述されます。

<compression:archive doc:name="Archive">
<compression:entries>
<![CDATA[#[output application/java
---
(0 to sizeOf(payload) - 1) as Array
reduce (index, acc={}) ->
acc ++ { (payload[index].attributes.fileName): payload[index].payload}]]]>
</compression:entries>
<compression:archiver>
<compression:zip-archiver forceZip64="true"/>
</compression:archiver>
</compression:archive>
xml

Extract 操作の設定

Extract​ 操作では、いずれかの圧縮形式でアーカイブを表しているコンテンツを圧縮解除できます。アーカイブファイルのエントリはオブジェクトとして返され、各オブジェクトにはそのエントリ名でアクセスできます。

  1. Studio で、フローから ​[Extract]​ 操作を選択します。

  2. [Compressed (圧縮済み)]​ 項目を ​vars.archive​ に設定します。

Compression Extract 操作の設定

設定 XML​ エディターでは、設定は次のように記述されます。

<compression:extract>
    <compression:compressed>#[vars.archive]</compression:compressed>
    <compression:extractor>
        <compression:zip-extractor/>
    </compression:extractor>
</compression:extract>
xml

ここでは、次の構造を含む 3 つのエントリが含まれるアーカイブを圧縮解除するとします。

+- Archive
|  \- summary.pdf
|  \+ details
   |  \- result_001.pdf
   |  \- result_002.pdf

この場合、各エントリの抽出したコンテンツに ​payload['summary.pdf']​ または ​payload.details['result_001.pdf']​ を使用してアクセスできます。

Zip 抽出ツール戦略の設定

抽出ツール戦略では、特定の形式で圧縮されている複数のエントリを含むアーカイブを圧縮解除します。 Zip アーカイブ戦略では、Zip 形式を使用してコンテンツを抽出する必要があることが宣言されます。Studio では ​[Extractor (抽出ツール)]​ 項目はデフォルトで設定されます。

選択されている [Force ZIP64 (ZIP64 を強制)] 項目

設定 XML​ エディターでは、設定は次のように記述されます。

<compression:zip-archiver/>
xml