ライフサイクル¶
非同期処理機能には様々な状態やイベントが存在します。
本章では非同期処理機能における生成や破棄を含んだ様々なイベントとその発生タイミングを説明します。
タスク¶
状態¶
処理実行中状態¶
タスクのビジネスロジックが実行されている状態です。
処理終了待機状態¶
タスクのビジネスロジックの完了を待機している状態です。
破棄状態¶
タスクメッセージがタスクキューに登録されていない、または削除されている状態です。
エラー終了状態¶
タスクのビジネスロジックの実行に失敗し、ユーザによる措置を待機している状態です。
コラム
以下のいずれかに該当する場合に、タスクメッセージはエラー終了状態に遷移します。
以下のタスクメッセージ登録APIのkeepTaskMessageOnErrorにtrueを指定して登録したタスクのビジネスロジック実行時に例外が発生した場合
サーバの停止等により、ビジネスロジックの実行自体が中断した場合
イベント¶
タスクメッセージの登録¶
タスク登録アプリケーションによってタスクキューにタスクメッセージが取得されると、該当するタスクは選択待機状態です。
コラム
タスクメッセージの登録方法については、以下も参照してください。
タスク管理アプリケーションによる選択¶
タスク管理アプリケーションによってタスクキューからタスクメッセージが取得されると、タスクのインスタンスが生成されます。
インスタンスが生成された直後のタスクは初期状態です。
コラム
JavaでTaskインタフェースを実装したタスクのコンストラクタがこのタイミングで呼び出されます。
タスクパラメータ設定¶
初期状態において、タスクメッセージ登録時に指定したパラメータが生成されたタスクに対して設定されます。
パラメータが設定されたタスクは受付待機状態です。
コラム
JavaでTaskインタフェースを実装したタスクを登録した場合、Task#setParameterメソッドが呼び出されます。
サーバサイドJavaScriptでタスクを登録した場合、指定されたJSファイルのsetParameter(parameter)関数が呼び出されます(同関数が定義されている場合)。
タスク受付¶
受付待機状態となっているタスクが非同期処理機能によって受け付けられ、処理を実行する準備ができると、該当するイベントが通知されます。
受け付けられたタスクは処理実行可能状態です。
コラム
JavaでTaskインタフェースを実装したタスクを登録した場合、Task#taskAcceptedメソッドが呼び出されます。
サーバサイドJavaScriptでタスクを登録した場合、指定されたJSファイルのtaskAccepted(event)関数が呼び出されます(同関数が定義されている場合)。
コラム
「受け付け」とはタスクがいずれ開始されることが確約された状態です。 この時点ではビジネスロジックはまだ開始されていません。
タスク処理開始¶
タスクの処理を実行する直前になると、該当するイベントが通知されます。
このイベント通知が問題なく終了すると、タスクのビジネスロジックは直ちに開始され、処理実行中状態です。
コラム
JavaでTaskインタフェースを実装したタスクを登録した場合、Task#taskStartedメソッドが呼び出されます。
サーバサイドJavaScriptでタスクを登録した場合、指定されたJSファイルのtaskStarted(event)関数が呼び出されます(同関数が定義されている場合)。
タスク処理完了¶
タスクのビジネスロジックが完了すると、該当するイベントが通知されます。 このイベントは、ビジネスロジックの内部で例外が発生した場合も通知されます。
このイベント通知が問題なく終了(例外発生による終了も含む)すると、タスクは以下のいずれかの状態に変わります。
- 処理実行中状態でこのイベントが発生した場合、エラー終了状態か破棄状態のいずれかに変わります。 詳細はエラー終了状態を参照してください。
- 処理終了待機状態でこのイベントが発生した場合、選択待機状態か破棄状態のいずれかに変わります。 詳細は処理終了待機状態を参照してください。
コラム
JavaでTaskインタフェースを実装したタスクを登録した場合、Task#taskCompletedメソッドが呼び出されます。
サーバサイドJavaScriptでタスクを登録した場合、指定されたJSファイルのtaskCompleted(event)関数が呼び出されます(同関数が定義されている場合)。
タスク受付拒否¶
受付待機状態となっているタスクが何らかの理由で非同期処理機能によって受け付けされなかった場合、該当するイベントが通知されます。
この場合タスクは選択待機状態に戻ります。
コラム
JavaでTaskインタフェースを実装したタスクを登録した場合、Task#taskRejectedメソッドが呼び出されます。
サーバサイドJavaScriptでタスクを登録した場合、指定されたJSファイルのtaskRejected(event)関数が呼び出されます(同関数が定義されている場合)。
タスク終了通知¶
処理実行中状態であるタスクに対して終了通知 がされる場合、該当するメソッドが呼び出されます。
このイベント通知が問題なく終了すると、処理終了待機状態に変わります。
この状態になると、たとえビジネスロジックが完了していなくても、タスクは非同期処理機能からは管理対象外の(ビジネスロジックを実行していない)タスクとして扱われます。
コラム
JavaでTaskインタフェースを実装したタスクを登録した場合、Task#releaseメソッドが呼び出されます。
注意
サーバサイドJavaScriptには該当するメソッドが存在しません。 しかしながら、終了通知がされたタスクは、たとえビジネスロジックが実行中であっても非同期処理機能からは管理対象外のタスクとして扱われます。
コラム
タスク終了通知については、終了通知も参照してください。
並列タスクキュー¶
並列タスクキューはテナントで1つだけ用意されています。
並列タスクキューは追加または削除できません。