FTP Connector を使用したファイルのリストの例- Mule 4

FTP 用 Anypoint Connector (FTP Connector) の ​List​ 操作では、ディレクトリパス内のファイルまたはフォルダーを表すメッセージのリストを返します。

  • [Directory path (ディレクトリパス)]​ 項目で定義するパスには絶対パスを指定できます。また、作業ディレクトリを基準とする相対パスを指定することもできます。

  • デフォルトでは、この操作はディレクトリパスのサブフォルダー内のファイルまたはフォルダーを読み取ったり、それらのリストを作成したりしません。

  • サブフォルダー内のファイルまたはフォルダーのリストを作成するには、​[Recursive (再帰)]​ 項目を ​TRUE​ に設定します。

Studio で List 操作を設定する

Studio で ​List​ 操作を追加および設定する手順は、次のとおりです。

  1. [Mule Palette (Mule パレット)]​ ビューで「​ftp​」を検索し、​[List]​ 操作を選択します。

  2. [List]​ 操作を Studio キャンバスにドラッグします。

  3. 操作の設定画面の ​[General (一般)]​ タブで、​[Connector configuration (コネクタ設定)]​ 項目の横にあるプラス記号 (​+​) をクリックし、グローバル要素設定項目にアクセスします。

  4. 接続情報を指定し、​[OK]​ をクリックします。

  5. [General (一般)]​ タブで、​[Directory path (ディレクトリパス)]​ を ​~/dropFolder​ に設定し、リストを作成するファイルのパスを設定します。

Studio の List 操作の設定

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

<ftp:list doc:name="List" config-ref="FTP_Config" directoryPath="~/dropFolder"/>
xml

次の XML の例では、ディレクトリパスのメッセージのフォルダーのコンテンツ (サブフォルダーのコンテンツは除外) のリストを作成します。パスには絶対パスを指定できます。または、ファイル設定で設定した作業ディレクトリへの相対パスを指定することもできます。​[For Each]​ コンポーネントおよび ​[Choice]​ コンポーネントは、リストの各ディレクトリを各ファイルとは異なる方法で管理します。

<flow name="list">
  <ftp:list directoryPath="~/dropFolder" />
  <foreach>
    <choice>
      <when expression="#[attributes.directory]">
        <flow-ref name="processDirectory" />
      </when>
      <otherwise>
        <logger message="Found file #[attributes.path] which path is #[payload]" />
      </otherwise>
    </choice>
  </foreach>
</flow>
xml

ディレクトリのポーリング

Mule 4 にはポーリングメッセージソースがないため、​Scheduler​ ソースを SFTP の ​List​ 操作と連携させて、ディレクトリをポーリングし、処理する新しいファイルを検索できます。

次のディレクトリのポーリングの例では、フローによって 1 秒に 1 回フォルダーのコンテンツがリストされます。フローは続いてファイルを 1 つずつ処理します。​[For Each]​ コンポーネントに ​Delete​ 操作があるため、処理が終わると各ファイルを削除します。

<flow name="poll">
  <scheduler>
      <scheduling-strategy>
          <fixed-frequency frequency="1000"/>
      </scheduling-strategy>
  </scheduler>
  <ftp:list directoryPath="~/dropFolder" />
  <foreach>
<flow-ref name="processFile" />
<ftp:delete path="#[attributes.path]" />
</foreach>
</flow>
xml

検索条件の一致

ファイルをリストする場合、指定した条件に一致するファイルを受け入れる ​[File Matching Rules (ファイル一致ルール)]​ 項目を使用します。この項目により、ファイルを受け入れるか拒否する属性を定義します。 これらの属性は省略可能であり、属性の値を提供しない場合は無視されます。​AND​ 演算子を使用して、各属性を結合します。

Studio で項目を設定するには、​[File Matching Rules (ファイル一致ルール)]​ 項目を ​[Edit inline (インラインで編集)]​ に設定し、目的の属性を入力します。

  • Timestamp since (次の日時からのタイムスタンプ)
    この日付より前に作成されたファイルは却下されます。この値でのタイムゾーンの指定は無視され、代わりに Mule サーバーのタイムゾーンが使用されます。

  • Timestamp until (次の日時までのタイムスタンプ)
    この日付より後に作成されたファイルは却下されます。この値でのタイムゾーンの指定は無視され、代わりに Mule サーバーのタイムゾーンが使用されます。

  • Not updated in the last (指定した期間に更新なし)
    ファイルの最後の更新後の経過期間がこの期間以上の場合、却下されません。この属性は、​[Time unit (時間単位)]​ と連携して機能します。

  • Updated in the last (指定した期間に更新あり)
    ファイルの最後の更新後の経過期間がこの期間以内の場合、却下されません。この属性は、​[Time unit (時間単位)]​ と連携して機能します。

  • Time unit (時間単位)
    [Not updated in the last (指定した期間に更新なし)]​ 属性。デフォルトは ​MILLISECONDS (ミリ秒)​ です。

  • Filename pattern (ファイル名パターン)
    現在のファイル名パターンの絞り込みと似ているが、より強力。グロブ表現 (デフォルト) および正規表現がサポートされています。プレフィックスを設定することでどちらを使用するか選択できます (例: glob:*.{java, js}​ または ​regex:[0-9]test.csv​)。

  • Path pattern (パスパターン)
    Filename pattern (ファイル名パターン)​ と同じだが、ファイル名のみではなくファイルパス全体に適用される。

  • Directories (ディレクトリ)
    ファイルがディレクトリの場合のみ一致する。

  • Regular files (正規ファイル)
    ファイルが正規ファイルの場合のみ一致する。

  • Sym links (シンボリックリンク)​`
    ファイルがシンボリックリンクの場合のみ一致する。

  • Min size (最小サイズ)
    バイト数で表現されるファイルサイズの下限 (境界を含む)。

  • Max size (最大サイズ)
    バイト数で表現されるファイルサイズの上限 (境界を含む)。

次のスクリーンショットは、Studio の ​[File Matching Rules (ファイル一致ルール)]​ 設定を示しています。

「File Matching Rules (ファイル一致ルール)」 項目設定
Figure 1. [File Matching Rules (ファイル一致ルール)] 項目設定

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

<ftp:matcher
  timestampSince="2019-06-03T13:21:58+00:00"
  timestampUntil="2019-06-03T13:21:58+00:00"
  timeUnit="MICROSECONDS"
  filenamePattern="a?*.{htm,html,pdf}"
  pathPattern="a?*.{htm,html,pdf}"
  directories="REQUIRE"
  regularFiles="REQUIRE"
  symLinks="REQUIRE"
  maxSize="1024"/>
xml

外部ファイルシステムマッチャー

FTP Connector では、外部ファイルシステムマッチャーを使用できます。​[Case sensitive (大文字と小文字を区別)]​ 項目では、マッチャーで大文字と小文字を区別するかどうかを設定できます。

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

<ftp:list doc:name="List" config-ref="FTP_Config" directoryPath="/upload">
	    <ftp:matcher filenamePattern="*.txt" caseSensitive="true"/>
	</ftp:list>
xml

トップレベルの再利用可能なマッチャー

ファイルマッチャーは名前付きのトップレベル要素として使用して再利用を可能にするか、特定のコンポーネントに固有の内部要素として使用することができます。

次の例は、トップレベルの再利用可能なマッチャーを示しています。

<ftp:matcher name="smallFileMatcher" maxSize="100" />
  <flow name="smallFiles">
  <ftp:list path="~/smallfiles" matcher="smallFileMatcher" />
  ...
</flow>
xml

内部の再利用できないマッチャー

次の例は、内部の再利用できないマッチャーを示しています。

<flow name="smallFiles">
  <ftp:list path="~/smallfiles" matcher="smallFileMatcher">
    <ftp:matcher maxSize="100" />
  </ftp:list>
  ...
</flow>
xml