|
WLI アプリケーションには、以降の各節で説明するように主な実装パターンがいくつかあります。
JPD には複数のタイプがあり、次のような固有の特性を持つように設計されています。
| 注意 : | 複合プロセスでは、複数の呼び出しが含まれるので、例外管理がより複雑になります。 |
JPD にはこれらの特性を組み合わせたパターンもいくつかあります。そうしたパターンについて以降の各節で簡単に説明します。
図 7-1 にこのパターンを示します。このパターンは一部の最も高速なプロセスの実装に使用します。標準的な使用法は、バックエンド システムへの単純なアクセスやヘルパー プロセスを実装するための単純なアクセスです。

図 7-2 にこのパターンを示します。このパターンは一部の最も高速なプロセスの実装に使用します。標準的な使用法は、プロセス クライアントとの結合の解除が必要な場合の、バックエンド システムへの単純なアクセスです。

図 7-3 にこのパターンを示します。このパターンは一部の最も高速なプロセスの実装に使用します。標準的な使用法は、イベント駆動型の状況におけるバックエンド システムへのアクセスです。

このパターンは相当するステートレスなサービスほど高速ではありません。図 7-4 にこのパターンを示します。このパターンは、非同期インタフェースを提供するバックエンド システムへのアクセスに使用します。

ほとんどの一方向サービスはステートレスで、応答を待機する必要が無いので、これは非常にまれなパターンです。図 7-5 にこのパターンを示します。このパターンは、待機している呼び出しが必要とされるイベント駆動型の状況で、バックエンド システムに迅速にアクセスするために使用します。

図 7-6 にこのパターンを示します。このパターンは、良好なパフォーマンス、およびクライアントとの結合を必要とする統合ロジックの実装に使用します。

このパターンは、クライアントで応答が受信された後にロジックが実装されるという異例の場合を表します。図 7-7 にこのパターンを示します。このパターンは、一定の期間にわたって実行され、同期リクエストまたは応答によって開始されるステートフル プロセスを可能にするために使用します。同期応答がいったん送信されると、このプロセスは従来の非同期モデルに移行します。

図 7-8 にこのパターンを示します。このパターンは、対象クライアントからの結合の解除を維持する際に良好なパフォーマンスを必要とする統合ロジックを実装するための標準的な方法です。また、これは呼び出し側から結合を解除する必要がある場合のバックエンド システムへのアクセスにも使用できます。使用するリソースがすべてステートレスである必要があるので、このパターンは常に実装可能なものではありません。

図 7-9 にこのパターンを示します。このパターンは、イベント駆動型の状況で良好なパフォーマンスを必要とする統合ロジックを実装するために使用します。

図 7-10 にこのパターンを示します。このパターンは、1 つ以上のリソースに非同期インタフェースが含まれているために、相当するステートレス バージョンのパターンが不可能な場合に使用します。また、実行時間が長いプロセスの標準的パターンとしても使用されます。

このパターンは、通常ステートレスで応答を待機する必要のない大部分の一方向サービスほど一般的なものではありません。図 7-11 にこのパターンを示します。このパターンは、イベント駆動型の状況で、待機している呼び出しも必要な場合に、統合ロジックを実装するために使用します。

この節では、主要なパターンのいずれかと組み合わせて使用できる、便利なパターンを改めてまとめます。
同期または非同期のコールバック名属性プロパティを伴うクライアント要求ノードを含んだビジネス プロセスを作成すると、同期クライアントにおいて、リソースと非同期で対話するビジネス プロセスとの対話ができるようになります。クライアント要求ノードのプロパティには、関連付けられているクライアント応答ノードで使用するコールバック メソッドの名前が保持されています。クライアント要求ノードおよびクライアント応答ノードは、クライアントでプロセスがブロックされているときに発生するアクティビティ (非同期アクティビティを含む) を表します。このプロパティを設定した後に、同期/非同期 WSDL を生成します。同期 WSDL の生成プロセスでは、サービスの SOAP アドレスと、修正した SOAP アドレスが入れ替わります。修正したアドレスにより、同期サーブレットがクライアント要求および後続の戻りアクションを処理します。生成されるサービス エントリの例を次に示します。
<service name="syncAsync"><port name="syncAsyncSoap" binding="s0: syncAsyncSoap"><soap: address location="http://localhost:7001/SyncAsyncWeb/processes/syncAsync.jpd"/></port> <service name="syncAsync">
<port name="syncAsyncSoap" binding="s0: syncAsyncSoap">
<soap:address
location="http://localhost:7001/sync2AsyncIM/SyncAsyncWeb/processes/syncAsync.sync2JPD"/>
デシンクロナイザ パターンを使用すると、同期プロセスを非同期的に呼び出せるようになります。これが推奨されるのは次のような場合です。
図 7-12 のプロセスを実装すると、同期プロセスへの非同期インタフェースが提供されます。

これは単純なプロキシ プロセスです。要求および応答の署名は、元のサービスの署名と同じである必要があります。デシンクロナイザでは、その入力値をサブプロセスに渡し、戻り値をサブプロセスの呼び出し側に送信します。
図 7-13 に、大まかなプロセスと詳細なプロセスを組み合わせて使用する方法の例を示します。大まかなプロセスで、多数の詳細なプロセスに対して特定の作業を割り当てます。

図 7-14 にこのパターンを示します。このパターンは、パブリッシュとサブスクライブのアーキテクチャに基づき、メッセージ ブローカを介した共通のメッセージング インタフェースを使用して、緩やかに結合されたプロセスを作成する方法を示しています。

次のコントロールを使用すると、動的なプロパティ駆動型のプロセスを定義できます。
図 7-15 に、登録およびテーブル ルックアップを伴う迅速な動的プロセスの例を示します。

|