IMS コールアウト・プログラミング・モデルでは、IMS はクライアントとして機能し、MDB、EJB コンポーネント、または Web サービスにあるビジネス・データあるいはビジネス・ロジックと対話します。IMS アプリケーションは、コールアウト要求を発行することによって、外部 Java アプリケーションを起動します。反対に WebSphere® Application Server のパースペクティブからは、IMS アプリケーションからのこれらのメッセージはインバウンド・メッセージです。
外部 Java アプリケーションからの応答が予期されるどうか、および応答が同じトランザクション内の開始 IMS アプリケーションによって予期されるかどうかに応じて、異なるプログラミング・モデルを使用できます。
同期コールアウト要求は、外部 Java アプリケーションまたは Web サービスからの応答が同じトランザクション内の同じ IMS アプリケーションへ戻ることを予期する要求です。
IMS アプリケーションが IMS DL/I ICAL 呼び出しを使用して同期コールアウト要求を発行するときには、要求を保持するために OTMA トランザクション・パイプ (tpipe) が使用されます。従属領域内の IMS アプリケーションは、スケジュールに入れられたままになり、応答を待ちます。外部アプリケーションが tpipe から要求メッセージをプルした後、外部アプリケーションから応答が返されるまで、tpipe は待機状況になります。
メッセージ駆動型 Bean (MDB) の場合は、J2EE コネクター・アーキテクチャー 1.5 インバウンド仕様、およびさまざまな Rational® または WebSphere 統合開発環境 (IDE) のツール・サポートを利用できます。IMS TM リソース・アダプターは、IMS Connect からのコールアウト・メッセージを listen し、要求とその応答の相関を処理します。
非 MDB アプリケーションの場合は、アプリケーションが IMS Connect に対して、保留キュー上にコールアウト要求がないかをチェックするポーリングを行います。また、アプリケーションは、IMSInteractionSpec クラスのプロパティーとして受け渡された相関関係子トークンも処理する必要があります。
コールアウト要求と応答を同じトランザクション・インスタンス内に保持する主な利点は、要求を発行および応答を処理するプログラミング・ロジックを同じ IMS アプリケーション内に含めることができる点です。ただしこのアプローチでは、IMS アプリケーションが応答を待つ必要があり、従属領域がブロックされます。
非同期コールアウト要求は、応答を予期しない要求、または応答が他のトランザクションに戻ることを予期する要求です。
IMS アプリケーションが ISRT ALPCB 呼び出しを使用して非同期コールアウト要求を発行した後、要求を保持するために OTMA トランザクション・パイプ (tpipe) または代替宛先 (出口ルーチンでコーディングされた) が使用されます。外部アプリケーションが保留キューから要求メッセージをプルした後、IMS アプリケーションは IMS 従属領域でスケジュールから外され、従属領域が解放されます。
応答が予期される場合、その応答メッセージは新しい IMS トランザクション要求として、アプリケーション設計に応じて、同じまたは異なる IMS アプリケーションに出力データとともに返されます。
応答を非同期に戻させることの主な利点は、従属領域がブロックされて IMS リソースが長時間ロックされるのを回避できる点です。 ただし、このアプローチでは、応答を処理する必要がある場合、個別のトランザクション・インスタンスで出力を処理できるように IMS アプリケーションが設計されている必要があります。 また、その応答を要求に相関させる処理も、アプリケーションが行います。