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

     前  次    目次     
ここから内容

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

以下の各節で説明するように、WLI アプリケーションのコア実装パターンは複数あります。

JPD のコア実装パターン

JPD には複数の種類があり、それぞれが以下の固有の特性を持つように設計されます。

注意 : 複合的なプロセスは複数の呼び出しを行うため、例外管理がより複雑になります。

これらの特性の組み合わせから複数の JPD のパターンが発生します。以下の節では、JPD のパターンについて簡単に説明します。

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

最も高速なプロセスのいくつかは、図 6-1 に示す、このパターンを使用して実装します。標準的な使用例は、バックエンド システムに簡単にアクセスしたり、ヘルパー プロセスを実装したりすることです。

図 6-1 パターン 1

パターン 1

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

最も高速なプロセスのいくつかは、図 6-2 に示す、このパターンを使用して実装します。標準的な使用例は、プロセス クライアントから切り離す必要がある場合に、バックエンド システムに簡単にアクセスすることです。

図 6-2 パターン 2

パターン 2

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

最も高速なプロセスのいくつかは、図 6-3 に示す、このパターンを使用して実装します。標準的な使用例は、イベント駆動型環境でバックエンド システムにアクセスすることです。

図 6-3 パターン 3

パターン 3

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

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

図 6-4 パターン 4

パターン 4

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

ほとんどの一方向サービスはステートレスであり、応答を待機する必要がないため、このパターンは非常にまれです。待機する呼び出しが必要なイベント駆動型環境でバックエンド システムにすばやくアクセスする場合は、図 6-5 に示す、このパターンを使用します。

図 6-5 パターン 5

パターン 5

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

優れたパフォーマンスおよびクライアントとの結合が要求される統合ロジックを実装する場合は、図 6-6 に示す、このパターンを使用します。

図 6-6 パターン 6

パターン 6

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

このパターンは、クライアントが応答を受信してからロジックが実装されるまれなケースを表します。一定期間実行され、同期要求または同期応答によって開始されるステートフル プロセスを有効にする場合は、図 6-7 に示す、このパターンを使用します。同期応答が送信されると、プロセスは従来の非同期モデルに移行します。

図 6-7 パターン 7

パターン 7

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

図 6-8 に示すパターンは、クライアントから切り離した状態を保持する一方で優れたパフォーマンスが要求される統合ロジックを実装するための標準的な方法です。このパターンは、呼び出し側との切り離しが必要なときにバックエンド システムにアクセスする場合にも使用できます。使用するすべてのリソースがステートレスである必要があるため、このパターンを必ず実装できるとは限りません。

図 6-8 パターン 8

パターン 8

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

イベント駆動型環境で優れたパフォーマンスが要求される統合ロジックを実装する場合は、図 6-9 に示す、このパターンを使用します。

図 6-9 パターン 9

パターン 9

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

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

図 6-10 パターン 10

パターン 10

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

通常、ほとんどの一方向サービスはステートレスであり、応答を待機する必要がないため、このパターンは一般的ではありません。イベント駆動型のシナリオで統合ロジックを実装し、さらに待機する呼び出しも要求される場合は、図 6-11 に示す、このパターンを使用します。

図 6-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"/>
デシンクロナイザ パターン

デシンクロナイザ パターンを使用すると、同期プロセスを非同期的に呼び出すことができます。このパターンは、以下の場合にお勧めします。

非同期インタフェースを同期プロセスに提供するには、図 6-12 に示すプロセスを実装します。

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

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

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

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

きめの細かいプロセスのきめの粗いプロセス フロントエンド

図 6-13 は、きめの粗いプロセスときめの細かいプロセスの組み合わせの使用例を示します。きめの粗いプロセスは、特定の作業を複数のきめの細かいプロセスに割り当てます。

図 6-13 きめの細かいプロセスのフロントエンドとしてのきめの粗いプロセス

きめの細かいプロセスのフロントエンドとしてのきめの粗いプロセス

一般的なメッセージ インタフェースを使用した疎結合プロセス

図 6-14 に示すパターンは、パブリッシュ アンド サブスクライブ アーキテクチャに基づき、メッセージ ブローカを介した一般的なメッセージング インタフェースを使用して疎結合プロセスを作成する方法を示しています。

図 6-14 メッセージ インタフェースを使用した疎結合プロセス

メッセージ インタフェースを使用した疎結合プロセス

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

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

図 6-15 は、レジスタ ルックアップとテーブル ルックアップを含む俊敏な動的プロセスの例を示しています。

図 6-15 レジスタ ルックアップとテーブル ルックアップを含む機敏な動的プロセス

レジスタ ルックアップとテーブル ルックアップを含む機敏な動的プロセス

このプロセスの特長は以下のとおりです。


  ページの先頭       前  次