OpenWFEru スケジューラー

ワークフロー / ビジネスプロセスエンジンであるOpenWFEru にはタスクを後で実行したり(at) 、繰り返し実行する(cron)ためのスケジューラーが必要です。

このスケジューラーは OpenWFE の核心ではないので、ここでは OpenWFEru のコンテキストの外側での使用方法を説明します。

OpenWFEru の他の部分同様、BSD ライセンスです。

OpenWFEru スケジューラーは Ilya Grigorik’s blog post の Scheduling tasks in Ruby / Rails で説明されています。

単独での使用方法(gem)

スケジューラーを使うにあたっては、OpenWFEru 全てが必要ではありません。以下の2 つのファイルのみが必要となります。 :


    lib/openwfe/util/otime.rb
    lib/openwfe/util/scheduler.rb

これらは OpenWFEru のサブディレクトリの util にあります。

2007 年4月1日より、, “openwferu-scheduler” 用の gem ができました。それを使えば以下のようにするだけです。

    [sudo] gem install openwferu-scheduler

ここまでいいですか?で、それを使うには、直接以下のように…


    require 'rubygems'
    require 'openwfe/util/scheduler'

    include OpenWFE

    scheduler = Scheduler.new
    scheduler.start

    scheduler.schedule_in("1h12m") do
        puts "...taking out the garbage (as requested one hour and twelve minutes ago)"
    end

    # ...

rdoc

スケジューラーの rdoc です。これはスケジューラーに関する最新の情報ソースです。

“at” ジョブ

“at” ジョブは、将来一度だけ実行されるジョブです。これはスケジューラーの schedule_in() メソッドや schedule_at() メソッドで登録されます。

基本的な使い方は…。 :

    scheduler.schedule_in("1h12m") do
        puts "one hour and twelve minutes later..."
    end

“at” ジョブの です。

“cron” ジョブ

“cron” ジョブは、Unix のそれと同等の機能です。なので、このRubyのスケジューラーもその 従来どおりの指定 に従っています。

    scheduler.schedule("1-60/3 * * * mon-fri") do
        puts "...popping up every 3 minutes on weekdays..."
    end

“cron” ジョブの です。

“every” ジョブ

cron よりも柔軟性があります。:

    scheduler.schedule_every("12m45s") do
        puts "...popping up every 12 minutes and 45 seconds..."
    end

もしあなたのジョブに 2 秒かかるとして、それが10秒毎にスケジューリングされていたら、実際は12 秒毎に実行されるということに注意してください。(新しい実行スレッド内のコードをラップできます。)

スケジューラーと永続化

OpenWFEru のコンテキストでは、永続化はスケジューラーではなくエンジンの責任範囲です。

(openwferu-scheduler のアンインストール)

もし必要ないならば…。 :

    $ sudo gem uninstall openwferu-scheduler

(続く)