2013.07.13 · 技術と道具

JobScheduler:ディレクトリの監視

いままではJobSchedulerでジョブやジョブチェーンを時間指定で起動する方法について見てきました。

時間指定での起動ならcronでも出来ます(もちろん、cronでは出来ない高度な時間指定がJobSchedulerでは可能ですが)。

では、ディレクトリにファイルが出来たらジョブを起動するといったことはどうでしょうか。

実務では、かなり多いケースだと思います。cronでやるなら定期的にジョブを起動して、ファイルがあれば処理をするといった方法を考えるでしょう。デーモンを作ることで解決する場合もあります。

JobSchedulerは、ディレクトリを監視する機能があります。さらに、処理済みとなったファイルを削除したり、指定したディレクトリに移動する機能もあるのです。

ファイルを処理するジョブを作る

まず、ファイルを処理するジョブを作ります。ジョブのつくり方は、[ジョブの作成と実行](create-job.html)を参考にしてください。 ジョブの名前は、単純にFileProcessJobとしました。ファイルを処理するといっても、ファイル名を表示するだけの単純なものです。 FILES=$SCHEDULER_TASK_TRIGGER_FILES echo “FILES: $FILES” exit 0 ディレクトリにファイルが出来たら、このジョブが起動されるようにするのですが、その際のファイルパスは$SCHEDULER_TASK_TRIGGER_FILESで取得できます。

ジョブチェーンでディレクトリ監視を設定する

次のジョブチェーンを作ります。ジョブチェーンのつくり方は、[ジョブチェーンの作成と実行](create-jobchain.html)を参考にしてください。

ジョブチェーンの名前は、これも単純にFileProcessChainとしました。

directory_monitoring_01

ジョブチェーンのSteps/Nodesの設定画面(もうお馴染みですね)の下の方に、File Order Sources for…という部分があるでしょう。ここで、ディレクトリ監視が設定できます。

Directory
監視するディレクトリを指定します
Regex
ディレクトリ内で監視するファイル名を正規表現で指定します
Next State
ファイルが見つかった場合に遷移するStateを指定します

処理が終わったらファイルを削除する

Step/Nodesの全貌はこのようになります。

file_sink_01

ディレクトリ監視で設定したように、ファイルが見つかったらstep-1に状態遷移しますので、FileProcessJobが実行されます。ジョブが正常終了したら、successに状態遷移するのですが、success状態のノードタイプがいままでのようにEnd Nodeではなく、File Sinkになっています。

File Sinkは、次の状態を持てないのでEnd Nodeの一種と言えますが、同時にファイルの削除もしくは移動を指定できます。上図ではRemove Fileにチェックを入れているので、ディレクトリ監視で見つかったファイルを削除してからジョブチェーンを終了するのです。

ちなみに、ファイルを移動するには、Move toに移動先のパスを指定します。

動かしてみる

いままで、ジョブチェーンを実行するためにはオーダー(Job Chain Order)を作ってきました。しかし、ディレクトリ監視の場合はオーダーを作る必要はありません。 上記のJOE(JobScheduler Object Editor)での設定を保存すれば、それでディレクトリ監視が始まります。 ここで、/home/scheduler/rcvにファイルを作ってみましょう。 cd /home/scheduler/rcv touch 12.txt JOC(JobScheduler Operation Centre)を見てみます。

directory_monitoring_joc_01

どうやら、起動したようです。さらに、ログも見てみましょう。

2013-01-18 08:11:03.291 [info] (Task test/FileProcessJob:536) FILES: /home/scheduler/rcv/12.txt

2013-01-18 08:11:03.324 [info] SCHEDULER-979 Removing file /home/scheduler/rcv/12.txt

思いっきり抜粋したログですが、FileProcessJobで出力したファイルパスが確認できます。

さらに、FileProcessChainで指定したジョブチェーン終了時のファイル削除もログに残っています。

2013/07/13 16:30
← JobScheduler:XMLやPHPで操作する
代表・井上がJuly Tech Festaで講演しました →
井上 研一
経済産業省推進資格ITコーディネータとして中小企業のDX・AI活用の現場で伴走支援を行う。「ITCプロセスガイドライン4.0」および「中小企業向けAI活用ガイド」執筆メンバー。著書・講演多数。ITエンジニアとして25年以上の実務経験。AI導入の実務に10年以上携わる。自ら開発したAIサービス「Gen2Go」が北九州発!新商品創出事業の認定を受ける。2026年4月より北九州市立大学大学院マネジメント研究科の学生としての顔も持つ。

本サイトおよびブログに掲載している内容は、特に明記のない限り、井上研一個人の見解に基づくものです。所属・関与する組織、団体、企業、研究会等の公式見解を示すものではありません。