タスクの実行時、タスク・データベース・レコードはタスクが完了するまでロックされます。 このトピックでは、タスクが実行中であるかどうかを判別する方法について説明します。
バージョン 6.0.2 より前のバージョンでは、タスクはすべて単一のグローバル・トランザクションで実行します。 この処理は、各タスクが read-committed トランザクション分離機能を使用するため、 タスクが複数回正常に実行するのを妨げるだけでなく、タスクの状態を読み取ろうとするすべての試みをブロックします。
NotificationSink EJB は、TaskInfo オブジェクト上の setNotificationSink メソッドを使用するタスクでの設定が可能です。 NotificationSink Bean は、タスクのライフ・サイクルをカスタム・テーブルにある別のデータベース・レコードに記録することができます。 これは、スケジューラーから別個に照会できるタスクのヒストリー・ログとなります。 このソリューションは、全バージョンのスケジューラー・サービスで処理できます。 詳しくは、スケジューラー通知の受信を参照してください。
バージョン 6.0.2 以降では、2 つの振る舞いにより、スケジューラーの getTask、getTaskStatus または findTasksByName などの検索 API メソッドおよび取得 API メソッドによって、ブロックされずにタスクの現行の状態を確認することができます。 コミットされていない実行状態を含む、タスクの現在の状態を見るには、次のステップを完了します。