WLI アプリケーション ライフ サイクルのベスト プラクティス

     前  次    新しいウィンドウで目次を開く     
ここから内容

WLI アプリケーションの主な実装パターン

WLI アプリケーションには、以降の各節で説明するように主な実装パターンがいくつかあります。

JPD の主な実装パターン

JPD には複数のタイプがあり、次のような固有の特性を持つように設計されています。

注意 : 複合プロセスでは、複数の呼び出しが含まれるので、例外管理がより複雑になります。

JPD にはこれらの特性を組み合わせたパターンもいくつかあります。そうしたパターンについて以降の各節で簡単に説明します。

パターン 1 : 基本型の同期ステートレス双方向サービス

図 7-1 にこのパターンを示します。このパターンは一部の最も高速なプロセスの実装に使用します。標準的な使用法は、バックエンド システムへの単純なアクセスやヘルパー プロセスを実装するための単純なアクセスです。

図 7-1 パターン 1

パターン 1

パターン 2 : 基本型の非同期ステートレス双方向サービス

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

図 7-2 パターン 2

パターン 2

パターン 3 : 基本型の非同期ステートレス一方向サービス

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

図 7-3 パターン 3

パターン 3

パターン 4 : 基本型の非同期ステートフル双方向サービス

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

図 7-4 パターン 4

パターン 4

パターン 5 : 基本型の非同期ステートフル一方向サービス

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

図 7-5 パターン 5

パターン 5

パターン 6 : 複合型の同期ステートレス双方向サービス

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

図 7-6 パターン 6

パターン 6

パターン 7 : 複合型の同期ステートフル双方向サービス

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

図 7-7 パターン 7

パターン 7

パターン 8 : 複合型の非同期ステートレス双方向サービス

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

図 7-8 パターン 8

パターン 8

パターン 9 : 複合型の非同期ステートレス一方向サービス

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

図 7-9 パターン 9

パターン 9

パターン 10 : 複合型の非同期ステートフル双方向サービス

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

図 7-10 パターン 10

パターン 10

パターン 11 : 複合型の非同期ステートフル一方向サービス

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

図 7-11 パターン 11

パターン 11

その他のパターン

この節では、主要なパターンのいずれかと組み合わせて使用できる、便利なパターンを改めてまとめます。

SyncAsync パターン

同期または非同期のコールバック名属性プロパティを伴うクライアント要求ノードを含んだビジネス プロセスを作成すると、同期クライアントにおいて、リソースと非同期で対話するビジネス プロセスとの対話ができるようになります。クライアント要求ノードのプロパティには、関連付けられているクライアント応答ノードで使用するコールバック メソッドの名前が保持されています。クライアント要求ノードおよびクライアント応答ノードは、クライアントでプロセスがブロックされているときに発生するアクティビティ (非同期アクティビティを含む) を表します。このプロパティを設定した後に、同期/非同期 WSDL を生成します。同期 WSDL の生成プロセスでは、サービスの SOAP アドレスと、修正した SOAP アドレスが入れ替わります。修正したアドレスにより、同期サーブレットがクライアント要求および後続の戻りアクションを処理します。生成されるサービス エントリの例を次に示します。

標準 WSDL

<service name="syncAsync">
<port name="syncAsyncSoap" binding="s0: syncAsyncSoap">
<soap: address 
location="http://localhost:7001/SyncAsyncWeb/processes/syncAsync.jpd"/>
</port> 

同期 WSDL

<service name="syncAsync">
<port name="syncAsyncSoap" binding="s0: syncAsyncSoap">
<soap:address 
location="http://localhost:7001/sync2AsyncIM/SyncAsyncWeb/processes/syncAsync.sync2JPD"/>
デシンクロナイザ パターン

デシンクロナイザ パターンを使用すると、同期プロセスを非同期的に呼び出せるようになります。これが推奨されるのは次のような場合です。

図 7-12 のプロセスを実装すると、同期プロセスへの非同期インタフェースが提供されます。

図 7-12 デシンクロナイザ パターン

デシンクロナイザ パターン

デシンクロナイザ サービス

これは単純なプロキシ プロセスです。要求および応答の署名は、元のサービスの署名と同じである必要があります。デシンクロナイザでは、その入力値をサブプロセスに渡し、戻り値をサブプロセスの呼び出し側に送信します。

詳細なプロセスに対する大まかなプロセス フロントエンド

図 7-13 に、大まかなプロセスと詳細なプロセスを組み合わせて使用する方法の例を示します。大まかなプロセスで、多数の詳細なプロセスに対して特定の作業を割り当てます。

図 7-13 詳細なプロセスに対する大まかなプロセス フロントエンド

詳細なプロセスに対する大まかなプロセス フロントエンド

共通のメッセージ インタフェースで緩やかに結合されたプロセス

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

図 7-14 メッセージ インタフェースを使用して緩やかに結合されたプロセス

メッセージ インタフェースを使用して緩やかに結合されたプロセス

動的なプロパティ駆動型のプロセス

次のコントロールを使用すると、動的なプロパティ駆動型のプロセスを定義できます。

図 7-15 に、登録およびテーブル ルックアップを伴う迅速な動的プロセスの例を示します。

図 7-15 登録およびテーブル ルックアップを伴う迅速な動的プロセス

登録およびテーブル ルックアップを伴う迅速な動的プロセス

このプロセスの特徴を以下にまとめます。


  ページの先頭       前  次