スケジュールジョブを運用ツールなどから呼び出すことはできますか?

2024年3月23日テクニカルメモ

スケジュールジョブは便利なんだけど、運用ツールから呼び出せたらより便利になるのにな・・・。何か方法はないかな?

WebFOCUSバージョン
9.0.3

スケジュールジョブとは

WebFOCUSの機能の1つで「ReportCaster」を使用して作成する、WebFOCUSのコンテンツ(レポートやグラフ)を定期的に実行するためのジョブです。
通常、スケジュールジョブはWebFOCUS内で管理/実行されますが、WebFOCUSのプロシジャ(.fex)を使用することで、外部から呼び出すことが可能です。

活用シーン

  • テーブルに特定のレコードが登録されたら、WebFOCUSのレポートを配信したい
  • テーブルのデータが登録/更新/削除されたら、履歴管理としてWebFOCUSのレポートを任意のディレクトリに出力したい
  • 他システムの処理が終わったら、WebFOCUSのレポートを任意のディレクトリに出力したい

WebFOCUSのスケジュールジョブを実行するきっかけ(外的要因)の判断は、WebFOCUSとして機能を有していないため、運用ツール等の利用が必要です。

実装方法

実装にあたっては、スケジュールジョブ、スケジュールジョブから実行されるコンテンツの他に以下3つのファイルが必要です。

ファイル名拡張子役割
バッチファイル.batReportCasterで作成したスケジュールジョブの呼び出し
FOCUSスクリプトファイル.t3iバッチファイルから実行されるプロシジャの呼び出し
プロシジャ.fex外部ツールから実行されるファイルで、FOCUSスクリプトファイルの呼び出し

各ファイルは以下の流れで実行されます。
外部ツール -> バッチファイル -> FOCUSスクリプトファイル -> プロシジャ

バッチファイル

構文

cd Drive:\current_directory
Drive:\ibi\srv90\wfs\bin\edastart -f Drive:\ibi\apps\directory\t3i_filename.t3i

サンプル

cd C:\ibi\apps\rcjob
C:\ibi\srv90\wfs\bin\edastart -f C:\ibi\apps\rcjob\dstrun01.t3i

FOCUSスクリプトファイル

構文

%connect
%begin
EX Drive:\ibi\apps\directory\fex_filename.fex
%end
%disconnect
%stop_server

サンプル

%connect
%begin
EX C:\ibi\apps\rcjob\dstrun01.fex
%end
%disconnect
%stop_server

プロシジャ

構文

-SET &var_name=DSTRUN(
– 'srv_userid’,srv_userid_length,
 srv_userid(必須)
 スケジュール権限を持つ Report Caster で有効なユーザ ID です。
– 'srv_userpass’,srv_userpass_length,
 srv_userpass(必須)
 srv_userid のパスワードです。
 Report Caster のリポジトリテーブルのユーザ情報とマッチする必要があります。
– 'hostname_port’,hostname_port_length,
 hostname_port(必須)
 Web サーバのポート番号を含むホスト名、または IP アドレスとコンテキストパスです。
 80 番の場合はポート番号は省略可能です。
 例:サーバ名/ibi_apps:ibi_apps
– 'scheduleid’,scheduleid_length,
 scheduleid(必須)
 スケジュールジョブを特定する一意の ID です。
– 'jobdesc’,jobdesc_length,
 jobdesc(場合に応じて必須)
 スケジュールジョブに与えた一意のジョブの名前です。
 スケジュール ID が指定されていない場合に必要です。
– priority,
 priority(必須)
 実行するスケジュールジョブの優先度です。
 1:Highest priority
 2:Class 2 priority
 3:Class 3 priority
 4:Class 4 priority
 5:Lowest priority
– 'owner’,user_length,
 owner(必須)
 スケジュールジョブを実行するオーナーの ID です。
 引用符、&、半角スペースは不可。最初の 1 文字はローマ字である必要があります。
– 'parm’,parm_length,
 parm(場合に応じて必須)
 スケジュールジョブに受け渡すパラメータです。
 1 つのパラメータに 1 つの値だけ渡すことが可能です。
– 'httpuser/pswd’,httpuser/pswd_length,
 httpuser/pswd(場合に応じて必須)
 Web サーバのユーザ ID とパスワードです。
– returncode’I4′);
 returncode(必須)
 DSTRUN を実行した結果のリターンコードです。
 成功時にはゼロを返します。I4 で固定です。

サンプル

-SET &SUBERR=DSTRUN(
– 'admin’,5,
– 'admin’,5,’
– localhost/ibi_apps:ibi_apps’,28,
– 'S4a95d09cs993es4c5fs892fs652d463672b4’,37,
– ' ',0,
– 3,
– 'admin’,5,
– 'COUNTRY=JAPAN’,13,
– ' ',0,
– 'I4’);

スケジュールジョブが外部ツールからも呼び出せることがわかったかな?
これにより、より活用しやすくなるね!!