Javaコードからのジョブの終了DataStage

Exception クラス・オブジェクトをスローするか、ConnectorException クラス・オブジェクトをスローするか、または Logger.fatal() メソッドを呼び出すと、ジョブが自然に終了する前にジョブを停止することができます。

Exceptionクラスのオブジェクトを投げる

Exception (java.lang.Exception) クラスまたはそのサブクラス・オブジェクトをプロセッサー・インプリメンテーションから使用して、ジョブを停止することができます。

次の例では、Java™コードで基本的な計算を行い、価格を求めています。 countにセットされた値がゼロの場合、Javaコードは'java.lang.ArithmeticException例外をスローし、メッセージをログに記録する:Divide by zero.

public void process() throws Exception
{
   int count = 0;
   int total = 1000;
   …
   int price = total / count;
}

Javaコードは、指定したメッセージで'ArithmeticExceptionオブジェクトを構築し、それを投げてジョブを終了させることもできる。

public void process() throws Exception
{
   …
   if (result < 0)
   {
      throw new ArithmeticException("An exception occurred. result=" + result);
   }
}

ConnectorExceptionクラスオブジェクトのスロー

ConnectorException(com.ibm.is.cc.javastage.api.ConnectorException) クラス・オブジェクトを使用して、実行中のジョブを停止したり、メッセージを使用して設計時操作を終了したりできます。

ConnectorException クラスを使用して、スタック・トレース情報が含まれていないメッセージをログに記録し、それらのメッセージにメッセージ ID を割り当てることができます。

以下の例では、Logger.setComponentID(メソッドを呼び出した後、Javaコードが'ConnectorExceptionオブジェクトを構築し、スローしています。 コネクタフレームワークは例外をキャッチし、エラーメッセージをログに記録しますAn exception occurred. result=-1と言って仕事を止める。 メッセージ ID は、IIS-CONN-MYCONN-00999 です。

public class MyConnector extends Processor
{
   public MyConnector()
   {
     super();
     Logger.setComponentID(“MYCONN”);
   } 


   public void process() throws Exception
   {
      …
      if (result < 0)
      {
         throw new ConnectorException(999, " An exception occurred. result=" + result);
      }
   }
   …
}

Logger.fatal() メソッドの呼び出し

プロセッサー・インプリメンテーションから com.ibm.is.cc.javastage.api.Logger.fatal() メソッドを呼び出すことにより、ジョブを終了することができます。

JavaコードがLogger.fatal()メソッドを呼び出すと、ジョブはJavaコードにコントロールを返しません。 Processor.terminate() メソッドは、ジョブを停止させることはできません。 この結果、ジョブの再始動中に問題が発生する可能性があります。

Javaコードで終了処理が必要な場合は、Processor.terminate()メソッドは、引数'isAbortedをtrueに設定して呼び出されるので、'ConnectorExceptionオブジェクトや他のExceptionオブジェクトを使用する。

次の例は、JavaコードでLogger.fatal()メソッドを呼び出しています。 仕事が終わり、メッセージMy job terminates abnormallyは、メッセージIDIIS-CONN-JAVA-00015でジョブ・ログに記録されます。

Logger.fatal("My job terminates abnormally.");