Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerList
操作を使用して、directoryPath
パラメーターで示されるパスにあるファイルとフォルダーのリストを作成します。List
操作は、次の状態のメッセージの配列を返します。
各メッセージがそのペイロードでファイルコンテンツを保持している。
ファイルのメッセージ属性セクションにファイルのメタデータ (名前、作成時間、サイズなど) が含まれている。
要素がフォルダーの場合、ペイロードが空である。
List
操作には directoryPath
パラメーターが必要です。このパラメーターは、ディレクトリのフルパスを指定しない場合、リストを作成するディレクトリの相対パスを表します。パスは、config-ref
パラメーターによって参照される設定で定義された作業ディレクトリの値に対して相対的です。設定が参照されていない場合、作業ディレクトリはデフォルトで user.home
システムプロパティの値に設定されます。システムプロパティが設定されていない場合、コネクタは初期化に失敗します。
設定の定義の例については、「ファイル接続設定」を参照してください。
ファイル設定を参照することで相対パスを使用する List
の例を次に示します。
<file:list config-ref="File_Config" directoryPath="relativePath" />
xml
前述のように、これはメッセージの配列を返します。Anypoint Studio では、DataSense に操作の出力のメタデータが表示されます。
|
次の例は、directoryPath
内のすべてのファイルとフォルダーのリストを foreach
ループで作成します。
<file:list config-ref="File_Config" directoryPath="relativePath" />
<foreach>
<choice>
<when expression="#[not attributes.directory]">
<logger message="Found file #[attributes.path] whose content is: #[payload]" />
</when>
<otherwise>
<flow-ref name="process-directory" />
</otherwise>
</choice>
</foreach>
xml
foreach
ループは、choice
コンポーネントで各要素がファイルであるかフォルダーであるかを判断します。 要素がファイルの場合、『Logger』 でそのパスとコンテンツが出力されます。要素がディレクトリの場合、別のフローに送信されて処理されます。
前述のように、List
操作はすでに (遅延方法で) ペイロード内のファイルコンテンツを返しているため、foreach
ループ内に Read
操作はありません。そのため、ストリームが最後にコンシュームされないときにパフォーマンスやオーバーヘッドを心配する必要はありません。
directoryPath
のサブフォルダー内のファイルまたはフォルダーのリスト (再帰的リストなど) を作成するには、recursive
パラメーターを true
に設定します。
<file:list config-ref="File_Config" directoryPath="relativePath" recursive="true" />
xml
<file:matcher>
要素を使用して、ファイルの受け入れまたは却下で使用する一致条件に基づいて、ファイルを絞り込むことができます。使用できるファイル一致ルールの例を次に示します。
<file:matcher
filenamePattern="a?*.{htm,html,pdf}"
path-pattern="a?*.{htm,html,pdf}"
createdSince="2019-06-03T13:21:58+00:00"
createdUntil="2019-07-03T13:21:58+00:00"
updatedSince="2019-05-03T13:21:58+00:00"
updatedUntil="2019-06-03T13:21:58+00:00"
accessedSince="2019-06-03T13:21:58+00:00"
accessedUntil="2019-06-03T13:21:58+00:00"
directory="true|false"
regularFile="true|false"
symbolicLink="true|false"
minSize="0"
maxSize="1024" />
xml
上記のすべての属性は省略可能であり、提供されていない場合は無視されます。これらはすべて AND
操作の下で相互に関連します。
ファイルマッチャーは、次の例に示すように再利用可能な要素 (名前付きの最上位要素) にすることができます。
次に例を示します。
<file:matcher name="smallFileMatcher" maxSize="100" />
<flow name="smallFiles">
<file:list path="~/smallfiles" matcher="smallFileMatcher" />
...
</flow>
xml
マッチャーは、次の例に示すように特定のコンポーネント専用の (再利用できない) 内部要素にすることができます。
<flow name="smallFiles">
<file:list path="~/smallfiles">
<file:matcher maxSize="100" />
</file:list>
...
</flow>
xml
List
操作で返されるファイルコンテンツを読み取り、ファイルがまだ書き込み中であるか不明な場合は、TimeBetweenSizeChecks
パラメーターを使用できます。このパラメーターは、TimeBetweenSizeCheckUnit
パラメーターと連携します。この 2 つのパラメーターの組み合わせで、2 つのサイズ確認が実行されます。
1 つは、ストリームがコンシュームされるポイントにフローが到達したとき。List
はファイルコンテンツを参照する遅延ストリームを返すため、List
操作では時間の確認は行われません。そのため、ストリームがコンシュームされるときにのみサイズ確認を行うことが理にかなっています。
もう 1 つの確認は、TimeBetweenSizeChecks
および TimeBetweenSizeCheckUnit
パラメーターで設定された待機時間後に実行。
この両方のサイズ確認で同じファイルサイズが返された場合、ストリームは正常にコンシュームされています。2 つのサイズ確認で異なるファイルサイズが返された場合、ファイルはまだ書き込み中であるため、ストリームはコンシュームされず、操作はエラーで失敗します。
List 操作では、Mule 4 で導入された反復可能ストリーム機能が使用されます。この操作ではメッセージのリストが返されます。各メッセージはリスト内のファイルを表し、ファイルへのストリームを保持します。デフォルトでは、ストリームは反復可能です。
詳細は、「Mule 4 でのストリーミング」を参照してください。
List 操作の [Advanced (詳細)] 設定タブで、返されるファイルの数を制限してからファイルを並び替えるように [Subset (サブセット)] 項目を設定できます。[Limit (制限)] および [Offset (オフセット)] 属性は省略可能です。
設定 XML エディターでは、<file:subset>
設定は次のように記述されます。
<file:subset criteria="DATE_CREATED" limit="5" offset="6" order="ASCENDING"/>
xml