3.13. 非同期ハンドラー
シンプルな Java を使用して非同期サービスハンドラーを実装するには、新しいスレッドで実際のサービスを実行してください。
public class MyServiceTaskHandler implements WorkItemHandler { public void executeWorkItem(WorkItem workItem, WorkItemManager manager) { new Thread(new Runnable() { public void run() { // Do the heavy lifting here ... } }).start(); } public void abortWorkItem(WorkItem workItem, WorkItemManager manager) { } }
通常、ハンドラーには作業アイテムを実行するためのビジネスロジックが実装されていませんが、ハンドラーは、作業を行う既存のサービスに問い合わせを行います。例えば、ヒューマンタスクハンドラーがたんにヒューマンタスクサービスを呼び出して、そこにタスクを追加するとします。非同期ハンドラーを実装するには、このサービスの非同期呼び出しが必要になってきます。これは、この対話に利用するテクノロジーにより変わってきますが、Web サービスの非同期呼び出しを行い JMS メッセージを外部サービスなどに送信するといった単純なものもあります。