並列処理機能¶
並列処理機能は複数の タスクを同時に処理することを可能とする機能です。
タスク間に関連がなく、個々のタスク内でビジネスロジックが完結する場合、並列処理機能を利用することで全体のレスポンスを向上させる可能性があります。
並列処理機能を利用する場合、タスク登録アプリケーションはタスクメッセージを並列タスクキューに登録する必要があります。
タスク¶
並列処理機能を利用する場合、タスク間には関連性がなく、複数同時実行が可能であることが必要です。 以下の条件をすべて満たす場合は並列処理機能で処理を行うことが可能です。
- 複数の任意のタスクが同時に実行されても実行結果に影響がない。
- タスク間の実行順序が予期できないものであっても実行結果に影響がない。
並列処理機能におけるタスクメッセージの登録¶
並列処理機能を利用する場合、タスク登録アプリケーションは非同期処理機能から提供されているAPIを通じてタスクメッセージを並列タスクキューに登録する必要があります。 APIはタスクメッセージを非同期処理機能に登録後、ビジネスロジックの実行を待たずに復帰します。
並列タスクキューに登録されたタスクメッセージは後にタスクに変換され、ビジネスロジック処理が開始されます。
コラム
タスクメッセージが並列処理機能に登録された時点ではまだ処理が開始されていない可能性があります。
タスクメッセージを登録すると、登録時のコンテキストの情報も保存されます。 タスクメッセージ登録時のコンテキスト情報は、タスクのビジネスロジック実行時に取得して利用することが可能です。
Java¶
Javaでタスクメッセージを登録する場合、jp.co.intra_mart.foundation.asynchronous.TaskManagerクラスのaddParallelizedTaskメソッドを呼び出します。 このメソッドを呼び出すことによってタスク登録アプリケーションはJavaを通じて並列タスクキューにタスクメッセージを追加します。
TaskManager#addParallelizedTask¶
public static jp.co.intra_mart.foundation.asynchronous.ParallelizedTaskMessage
addParallelizedTask(
java.lang.String taskClassName,
java.util.Map<java.lang.String, ?> parameter
) throws
jp.co.intra_mart.foundation.asynchronous.TaskControlException
taskClassNameにはビジネスロジックを実行するタスクのクラス名を指定します。
parameterにはビジネスロジック実行時に受け渡したいパラメータを指定します。 パラメータとして指定できる値はJavaを利用するときのパラメータの制限の内容に準じます。 パラメータに無効な値が指定された場合、java.lang.IllegalArgumentExceptionが返されます。
このメソッドは戻り値としてjp.co.intra_mart.foundation.asynchronous.ParallelizedTaskMessageを返します。
サーバサイドJavaScript¶
サーバサイドJavaScriptでタスクメッセージを登録する場合、WorkManagerオブジェクトのaddParallelizedTask関数を呼び出します。 この関数を呼び出すことによってタスク登録アプリケーションはサーバサイドJavaScriptを通じて並列タスクキューにタスクメッセージを追加します。
WorkManager#addParallelizedTask¶
function addParallelizedTask(jsPath, parameter)
jsPathにはビジネスロジックとなるrun関数が定義されているJSソースファイルのパスを指定します。
parameterにはビジネスロジック実行時に受け渡したいパラメータを指定します。 パラメータとして指定できる値はサーバサイドJavaScriptを利用するときのパラメータの制限の内容に準じます。
このメソッドは戻り値としてメッセージIDを返します。
並列処理機能におけるタスクメッセージの削除¶
並列タスクキューにタスクメッセージが登録された後であっても、タスクメッセージが実際にタスクとして実行される前(選択待機状態を参照)であれば任意の時点でタスクメッセージを削除することができます。 タスクメッセージはAPIまたは非同期処理管理画面を通じて削除することが可能です。
Java¶
Javaでタスクメッセージを削除する場合、jp.co.intra_mart.foundation.asynchronous.TaskManagerクラスのremoveParallelizedTaskメソッドを呼び出します。 このメソッドを呼び出すことによってタスク管理アプリケーションはJavaを通じて並列タスクキューからビジネスロジック実行前のタスクメッセージを削除します。
TaskManager#removeParallelizedTask¶
public static boolean removeParallelizedTask(
final String messageId
) throws
jp.co.intra_mart.foundation.asynchronous.TaskIllegalStateException,
jp.co.intra_mart.foundation.asynchronous.InvalidTaskException,
jp.co.intra_mart.foundation.asynchronous.TaskControlException
messageIdにはTaskManager#addParallelizedTaskまたはWorkManager#addParallelizedTaskの呼び出し時に取得されたメッセージIDを指定します。
messageIdが並列タスクキューに登録されたものでない場合、jp.co.intra_mart.foundation.asynchronous.InvalidTaskExceptionが返されます。
messageIdに該当するタスクメッセージが(実行中などの理由により)削除できなかった場合、jp.co.intra_mart.foundation.asynchronous.TaskIllegalStateExceptionが返されます。
Javascript API¶
サーバサイドJavaScriptでタスクメッセージを削除する場合、WorkManagerクラスのremoveParallelizedTaskメソッドを呼び出します。 このメソッドを呼び出すことによってタスク管理アプリケーションはサーバサイドJavaScriptを通じて並列タスクキューからビジネスロジック実行前のタスクメッセージを削除します。
WorkManager#removeParallelizedTask¶
function removeParallelizedTask(messageId)
messageIdにはTaskManager#addParallelizedTaskまたはWorkManager#addParallelizedTaskの呼び出し時に取得されたメッセージIDを指定します。