現在実行中のタスクの識別

タスクの実行時、タスク・データベース・レコードはタスクが完了するまでロックされます。 タスクが実行中であるかどうかを判別します。

このタスクについて

バージョン 6.0.2 より前のバージョンでは、タスクはすべて単一のグローバル・トランザクションで実行します。 この処理は、各タスクが read-committed トランザクション分離機能を使用するため、 タスクが複数回正常に実行するのを妨げるだけでなく、タスクの状態を読み取ろうとするすべての試みをブロックします。

タスクが実行中であるかどうかを判断するには、2 つの方法があります。
  1. NotificationSink

    NotificationSink EJB は、TaskInfo オブジェクト上の setNotificationSink メソッドを使用するタスクでの設定が可能です。 NotificationSink Bean は、タスクのライフサイクルをカスタム・テーブルにある別のデータベース・レコードに記録することができます。 これは、スケジューラーから別個に照会できるタスクのヒストリー・ログとなります。 このソリューションは、全バージョンのスケジューラー・サービスで処理できます。 詳しくは、トピック『スケジューラー通知の受信』を参照してください。

  2. 実行の遅延およびコミットされていない読み取り

    バージョン 6.0.2 以降では、2 つの振る舞いにより、スケジューラーの getTask、getTaskStatus または findTasksByName などの検索 API メソッドおよび取得 API メソッドによって、ブロックされずにタスクの現行の状態を確認することができます。 コミットされていない実行状態を含む、タスクの現在の状態を見るには、次のステップを完了します。

手順

  1. タスク実行中、スケジューラー読み取りメソッドをブロッキングさせないように、スケジューラー読み取りメソッド用の read-uncommitted トランザクション分離機能を使用可能にする。 読み取りメソッド用にデフォルトのトランザクション分離機能を設定するには、読み取り操作の詳細が記載されているトピック『スケジューラー・デフォルトのトランザクション分離機能の構成』を参照してください。
    重要: スケジューラーのデータベースが、Oracle のように、コミットされていない読み取りをサポートしていない場合、QOS_ATLEASTONCE サービスの品質を使用していなければ、タスクが実行中であるかどうかを判断することができません。
  2. タスクが実行を開始したとき、スケジューラーがタスクに TaskStatus.RUNNING 状態を 書き込むようにするには、TaskInfo.setTaskExecutionOptions メソッド上の TaskInfo.EXECUTION_DELAYEDUPDATE オプションを使用します。

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsch_identify
ファイル名:tsch_identify.html