所定のフォルダを監視する処理について

ファイル変更トリガーとトリガースコープを使って、所定のフォルダを監視して、ファイルが格納されたら随時所定処理を行うことは可能ですが、プロセス実行前に既に格納されているファイルが存在する場合に、どのように実装すればよいかご教示をお願いいたします。

・プロセス実行前に既に格納されているファイルが存在する場合には、トリガーとして認識されない。

・プロセス実行直後に事前処理として所定フォルダに格納されているファイルを取得し、所定処理を実行し、その後トリガー処理とした場合、事前処理中に所定フォルダに格納されたファイルがトリガーとして認識されない。

どの程度厳密にするかにもよりますが、

既存ファイルを一時フォルダに移動→並列アクティビティを使ってトリガー開始と移動したファイルを元のフォルダに移動(この順序になるよう成制御する)

のような感じでいかがでしょうか?

Hi @Karin

UiPathでは、「ファイル変更トリガー」はプロセス実行後に発生したファイルの変更(作成・変更・削除など)のみを監視します。そのため、プロセス実行前にすでに保存されているファイルはトリガーとして認識されません。

このような場合に対応するためには、「トリガースコープ」の前に事前処理を追加し、指定フォルダ内にすでに存在するファイルを取得・処理するようにします。

事前処理が完了した後に「トリガースコープ」を開始することで、その後に新たに追加・変更されたファイルに対してのみトリガーが反応し、正しく処理が実行されます。

Yoichi様
早々にご回答いただきありがとうございます。
まだ試せていませんが、並列アクティビティで実現できそうです。

Prashant Kumar様
早々にご回答いただきありがとうございます。
Yoichi様からもご回答いただいた「並列アクティビティ」を組み合わせて試してみます。

1 Like

Yoichi様

以下のように実装したところ、やりたいことはできているようです。
基本的なことで申し訳ないのですが、並列アクティビティはヘルプに左側から処理されると記載されていますが、どのような状況でもそうなるのか気になっています。
念のため、右側のアクティビティを少し遅延させた方がいいのでしょうか。

1.入力フォルダに既に格納されていたファイルを一時フォルダに移動

2-1.並列アクティビティの左側
トリガースコープ
入力フォルダにファイルが格納されたら、別のフォルダに移動

2-2. 並列アクティビティの右側
一時フォルダに移動したファイルリストを読み込み、1ファイルずつ入力フォルダに移動

こんにちは

その方が良いと思います。

2-2. 並列アクティビティの右側
一時フォルダに移動したファイルリストを読み込み、1ファイルずつ入力フォルダに移動

1で移動したファイルは把握しておけば、あらためて読み込む必要はないと思います。

また並列アクティビティは疑似並列なので、もし片側のレーンでの処理から別のレーンへの処理に移行しない場合は、片方のレーンの処理を別プロセスで実行する等の工夫が必要になるかもしれません。

Yoichi様

ご回答いただきありがとうございます。

別のレーンへの処理に移行しない場合というのは、具体的にどのように実装した際に考えられるのか、ご教示いただけないでしょうか。

UiPath (厳密にはWorkflow Foundation)の並列アクティビティは疑似並列なので、同時に処理されるわけではなく、また片方のレーンの処理が暇にならないと別レーンに移行しません。そのため、例えば、この間常時計算を行うような処理が動いている場合等は別レーンに移行しません。逆に待機アクティビティ等があると、そのタイミングで別レーンに処理が移行します。実際には個々のアクティビティの特性によりますので、そのあたりの留意が必要なケースがあります。

Yoichi様

ご回答いただきありがとうございます。
今回の並列アクティビティの使い方としては、初回のみ実行するファイル移動の前にトリガーアクティビティを実行させるだけなので、特に考慮は不要かなと思いました。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.