カスタム・ジョブの Java クラスの実装

カスタム・ジョブは 1 つの機能を実行するユーザー定義のジョブです。 これは、手動またはスケジュールで実行できる Java™ クラスとして実装されます。

カスタム・ジョブは、各 OpenPages® アプリケーション・サーバーにデプロイする必要があり、始動時に動的にロードされます。

カスタム・ジョブを実装するには、以下のタスクを実行します。
  • 以下の抽象実装を拡張して、カスタム・ジョブ Java クラスを作成します。
    com.ibm.openpages.api.scheduler.AbstractScheduledProcess
  • クラスを JAR ファイルに追加します。 この JAR ファイルは、すべてのカスタム・コードに使用します。 <OP_HOME>/aurora/op-ext-libディレクトリー内の各OpenPagesアプリケーション・サーバーに JAR ファイルをデプロイします。
  • OpenPages アプリケーション・サーバーを再始動して、動的クラス・ローダーがカスタム・ジョブを取得できるようにします。
  • スケジューラー を使用して、Java クラスを使用するカスタム・ジョブを追加します。 カスタム・ジョブで入力として必要とするプロパティー値やフィールドがあれば設定します。 詳しくは、 カスタム・ジョブの定義を参照してください。

カスタム・ジョブへの構成情報の提供

カスタム・ジョブを有益にするには、構成情報が必要な場合があります。 例えば、別のサービスに接続する必要がある場合は、API キーの認識が可能である必要があります。 これらの値は、 スケジューラー のカスタム・ジョブで構成項目として定義され、実行時にカスタム・ジョブに渡されます。

構成アイテムはストリング名と値のペアであり、ユーザーが定義するものです。

このカスタム・ジョブでは、渡されるべきプロパティーが渡され、有効な値が指定されていることを検証する必要があります。

カスタム・ジョブ Java クラスのオーサリング

カスタム・ジョブ Java クラスの唯一の要件は、 com.ibm.openpages.api.scheduler.AbstractScheduledProcessを拡張することです。 この要件は、カスタム・ジョブが スケジューラーで定義されるときに検証されます。

カスタム・ジョブに名前を付けます。 ジョブのコンストラクターで、setName()への呼び出しを行います。 例えば、以下のコードは、My Custom Jobという名前のカスタム・ジョブを作成します。
public class CustomJob extends AbstractScheduledProcess {
    public CustomJob() {
        super(ProcessConstants.TYPE_GENERAL);
        setName("My Custom Job");
    }
execute という名前の AbstractScheduledProcess からの単一の抽象 API を、派生した Java クラスに実装する必要があります。 このメソッド内に、カスタム・ジョブが実行する機能を書き込みます。
void execute(){
//add your custom code here
}

ジョブの構成値にアクセスするには、以下を呼び出します。

this.jobDetail.getJobConfiguration();

カスタム・ジョブで使用できる OpenPages GRC API について詳しくは、 IBM OpenPages with Watson API Javadocを参照してください。 Javadoc へのリンクについては、 OpenPages API 資料を参照してください。

カスタム・ジョブから例外または検証のメッセージをスローし、ユーザーに表示することができます。 メッセージを表示するには、以下を使用します。

throwException(String message, Throwable cause)

このメソッドを使用して例外をスローし、ユーザーにカスタム・メッセージを表示します。 キャッチされていない例外、または明示的にスローされた例外はアプリケーションによってログに記録されますが、ユーザーに表示されるのは一般エラー・メッセージだけです。

ジョブのタイムアウトの設定

すべてのスケジューラー・ジョブのデフォルト・タイムアウトは、 Platform > Scheduler > > Default Transaction Timeout 設定で定義されます。 カスタム・ジョブのこのタイムアウト設定をオーバーライドできます。

カスタム・ジョブのタイムアウトを設定するには、ジョブのコンストラクターでsetName()によって定義されるカスタム・ジョブ名が必要です。 Platform > Processes > <Custom_job_name> > 「トランザクション・タイムアウト」を設定してタイムアウトを定義します。

例: Platform > Processes > マイ・カスタム・ジョブ > トランザクション・タイムアウト