intra-mart Accel Platform ジョブスケジューラ仕様書 第4版 2018-08-01

サンプル

ジョブのサンプルプログラムを利用してジョブプログラムの作成方法について説明します。

サンプルプログラム

Java と サーバサイドJavaScript で作成されたジョブのサンプルプログラムです。
固定文字列”Hello.”に、”message”というキーに設定されたパラメータ値を連結して出力します。
  • Java の場合
package jp.co.intra_mart.example.job;

import jp.co.intra_mart.foundation.context.Contexts;
import jp.co.intra_mart.foundation.context.model.AccountContext;
import jp.co.intra_mart.foundation.job_scheduler.Job;
import jp.co.intra_mart.foundation.job_scheduler.JobResult;
import jp.co.intra_mart.foundation.job_scheduler.JobSchedulerContext;
import jp.co.intra_mart.foundation.job_scheduler.annotation.Parameter;
import jp.co.intra_mart.foundation.job_scheduler.annotation.Parameters;
import jp.co.intra_mart.foundation.job_scheduler.exception.JobExecuteException;

public class HelloJob implements Job {

    public HelloJob() {
    }

    @Override
    @Parameters(@Parameter(key = "message", value = "world!"))
    public JobResult execute() throws JobExecuteException {
        try {
            // アカウントコンテキスト
            final AccountContext accountContext = Contexts.get(AccountContext.class);
            System.out.println("Account context : " + accountContext.toString());

            // ジョブスケジューラコンテキスト
            final JobSchedulerContext jobSchedulerContext = Contexts.get(JobSchedulerContext.class);
            System.out.println("Job scheduler context : " + jobSchedulerContext.toString());

            // パラメータの取得
            final String message = jobSchedulerContext.getParameter("message");
            if (null == message) {
                // 処理結果:異常
                return JobResult.error("パラメータにメッセージが存在しません。");
            } else if (message.trim().isEmpty()) {
                // 処理結果:警告
                return JobResult.waring("メッセージが空です。");
            }
            // メッセージの表示
            System.err.println("Hello. " + message);
            // 処理結果:正常
            return JobResult.success("ジョブが正常に実行されました。");
        } catch (Exception e) {
            // 処理結果:異常(例外による処理結果の返却)
            throw new JobExecuteException("予期しないエラーが発生しました。", e);
        }
    }

}
Java のジョブプログラムは、jp.co.intra_mart.foundation.job_scheduler.Jobの実装クラスを作成します。
このインタフェースには、ジョブの実行処理を記述するためのexecuteメソッドが定義されています。
ジョブ開発者は、このexecuteメソッドにジョブ処理で実行したいプログラムを記述します。
  • サーバサイドJavaScript の場合
/**
 * @parameter message world!
 */
function execute() {
  let accountContext = Contexts.getAccountContext();
  let jobSchedulerContext = Contexts.getJobSchedulerContext();
  let message = jobSchedulerContext.getParameter('message');
  if (null == message) {
     return {
        status : 'error' ,
        message : 'パラメータにメッセージが存在しません。'
     };
  } else if ('' == message) {
     return {
        status : 'warning' ,
        message : 'メッセージが空です。'
     };
  }
  Debug.console('Hello. ' + message);
  return {
     status : 'success' ,
     message : 'ジョブが正常に実行されました。'
  };
}
サーバサイドJavaScript のジョブプログラムは、任意のJSファイルにexecute関数を記述します。
ジョブ開発者は、このexecute関数にジョブ処理で実行したいプログラムを記述します。
ジョブ処理では、アカウントコンテキストとジョブスケジューラコンテキストが取得可能です。
この2つのコンテキストを利用して任意の業務処理を記述します。

アカウントコンテキスト

アカウントコンテキストには、ジョブスケジューラから実行されたことを表すアカウント情報が格納されています。

ジョブスケジューラコンテキスト

ジョブスケジューラコンテキストには、ジョブ、ジョブネット、トリガの定義情報と実行日時などの実行情報が格納されています。