Wednesday, April 24, 2013

Alfrescoでcron的なスケジュール処理を行う時の注意点

こんにちは。

溶連菌(≠人喰いバクテリア)感染症のおおたにです。喉の痛みと下がらない熱で結構苦しいです。
さて、今日はAlfrescoでスケジュール処理を定義したり、そのスケジュールを変更したりするときに気を付けるポイントを紹介しようと思います。

まず、Alfrescoにはcronよろしく指定されたタイミングでジョブを実行する仕組みを持っています。Quartzというオープンソースのジョブスケジューラを使っており、例えば、非同期のインデックス生成であるとか、日次のインデックスバックアップ処理であるとか、LDAP連携時のユーザ情報同期処理などがこの仕組みで動いています。これらの処理の実施タイミングについては、やはりcronと同様の表現で指定します。

index.backup.cronExpression=0 0 3 * * ?

上の例は、webapps/alfresco/WEB-INF/classes/alfresco/repository.propertiesで定義されているインデックスバックアップの実行スケジュールです。これを毎月3日0時0分と読んだ方は注意が必要です。多分このように読んだ方は、Linuxのcron式のフォーマットに従って読んだのだと思います。
Linuxでは「<分> <時> <日> <月> <曜日> <年(オプション)>」ですが、Quartzでは以下のとおり、1桁目が秒となってります。

  <秒> <分> <時> <日> <月> <曜日> <年(オプション)>

なので、先ほどの例は月次処理ではなく、毎日3時0分に開始する日次処理ということになります。詳しくはScheduled Actions - alfrescowikiを参照してください(すいません英語です)。

今回はcron式のフォーマットについての注意点を紹介しましたが、機会があれば、スケジュールジョブの実装方法についても紹介したいと思います。

No comments: