SOS JobSchedulerについてはいろいろと説明してきましたが、今後はより実践的な内容に移っていきたいと思います。
まず最初は、ジョブチェーン内での値の受け渡しと日本語の取り扱いについてです。
ジョブチェーンへの値の引き渡し
JOE(JobScheduler Object Editor)やJOC(JobScheduler Operation Centre)で、実行するジョブ及びジョブチェーンに対してパラメータを引き渡す方法については、これまでの記事で既に説明しました。
JOEではジョブやジョブチェーンの作成時にパラメータ値をあらかじめセットしておくことが出来ます。また、オーダーの作成時にも、オーダーごとに異なるパラメータ値をセットできるのでした。
JOCでもジョブの実行時や、ジョブチェーンを実行するためにオーダーを作成する際にパラメータ値をセットできます。
一方、ジョブ側では、$SCHEDULER_PARAM_という接頭辞を付けて、セットされたパラメータ値を受け取ります。
BACKUP_DIR=$SCHEDULER_PARAM_BACKUP_DIR
ジョブ内での値のセット
ジョブチェーン内で、前ジョブで発生した値を、次ジョブに引き渡したいということがあると思います。
前ジョブでの実行結果によって、次ジョブの挙動が変わるようなケースですね。
FOOというパラメータ名でbarという次ジョブに引き渡したい時は、前ジョブに以下のようなコードを書きます。
echo "FOO=bar" >> $SCHEDULER_RETURN_VALUES
次ジョブでは、以下のようなコードで受け取ります。
FOO=$SCHEDULER_PARAM_FOO
つまり、$SCHEDULER_RETURN_VALUESに出力したパラメータはジョブチェーン内では、JOEやJOCでセットされたパラメータと同様の方法で取得できます。このパラメータ値はジョブチェーン内で共有されます。
日本語の受け渡しについて
JobSchedulerにおける日本語の取り扱いの現状は、あまり充実しているとは言えません。ただ、公式FAQにあるように、必要最低限の受け渡しは可能です。
At present (12/2010) the JobScheduler is able to accept all Unicode characters in the scheduler log.
E.g, if your script or program, executed under control of JobScheduler, put some Unicode-characters to stdout or stderr, this will be shown correctly.
(中略)
One major topic on the road-map of JobScheduler is the translation (i18n = internationalization) of all texts.
(後略)Support of Unicode or UTF-8 (e.g. Japanese language) in addition to English
ここまでに説明したパラメータの受け渡しと、JobSchedulerがジョブの実行の度に出力するログについては、UTF-8の日本語を通します。
ただ、ケースによっては日本語をあらかじめMIMEエンコーディングして渡して、nkfなどでデコードして受け取るといった工夫に迫られるケースが出てくる可能性はあります。(少ないとは思いますが・・・)