アクション・ノードは、それ自体ではコネクターまたは別のコラボレーションに要求を送信することはできません。
代わりに、ユーザーがアクション・ノードをサービス呼び出しに接続する必要があります。InterChange Server
Express では、同期および非同期のサービス呼び出しがサポートされています。以下は、Retrieve 要求を使用する同期サービス呼び出しの例です。
サービス呼び出しは常にアクションに接続されます。アクションは、サービス呼び出しを生成し、サービス呼び出しの結果をその出力遷移リンク上で処理します。アクションとサービス呼び出しはペアとして機能し、サービス呼び出しはアクションのリモート入出力関数を実行します。
図 40 に、アクション・ノードとサービス呼び出し間の関係を示します。この図は、コラボレーション・ランタイム環境がアクションおよびそのサービス呼び出しを処理する順序を示します。
図 40 に、コラボレーション・ランタイム環境が最初にアクションのコードを処理し、次にサービス呼び出しを実行する様子を示します。サービス呼び出しが完了すると、アクション・ノードの出力遷移リンクがその結果を処理します。サービス呼び出しを生成するアクション・ノードの場合、ServiceCallException 例外をチェックする出力例外リンクを組み込むことをお勧めします。
InterChange Server Express では、同期、非同期アウトバウンド、非同期インバウンドの 3 つのタイプのサービス呼び出しがサポートされています。以下のセクションでは、呼び出しの各タイプについて説明します。
このタイプのサービス呼び出しは、同期要求/応答機構を使用します。サービス呼び出しは、要求を送信しますが、応答が到着して処理されるまではその処理が完了しません。
同期サービス呼び出しでは、差し戻しがサポートされています。また、長期存続ビジネス・プロセスのタイムアウト値もサポートされています。
デフォルトでは、アクティビティー・ダイアグラムに追加されるすべてのサービス呼び出しは同期サービス呼び出しです。必要に応じて、シナリオでタイプを変更できます。
非同期アウトバウンド・サービス呼び出しは要求を送信しますが、応答を待たずに処理を続行します。非同期アウトバウンド・サービス呼び出しを使用するために、コラボレーション・テンプレートは長期存続ビジネス・プロセスをサポートしている必要があります。
非同期アウトバウンド・サービス呼び出しに設定されているポートが、コネクターではなくコラボレーションにバインドされている場合、このサービス呼び出しは自動的に同期サービス呼び出しになります。
「非同期アウトバウンド」サービス呼び出しでは、差し戻しはサポートされますが、長期存続ビジネス・プロセスのタイムアウト値はサポートされません。
非同期インバウンド・サービス呼び出しは、受信イベントを識別する相関属性または相関属性のセットに基づいて受信イベントの受信を待機します。この呼び出しは長期存続ビジネス・プロセスとともに使用されます。(詳細については、相関属性の使用を参照。)
非同期インバウンド・サービス呼び出しが作成されると、タイムアウト値が付与されます。サービス呼び出しがこのタイムアウト値以内に受信イベントを受信しない場合、例外 TimeoutException が発生します。
非同期インバウンド・サービス呼び出しを使用できるのは、コラボレーション・テンプレートで長期存続ビジネス・プロセスがサポートされる場合のみです。このサポートは、テンプレート定義の「一般」タブで「長期存続ビジネス・プロセスのサポート」オプションをクリックして、テンプレート作成時にいつでも使用可能にできます。
非同期インバウンド・サービス呼び出しでは、差し戻しはサポートされません。
サービス呼び出しをアクティビティー・ダイアグラムに追加する手順は、以下のとおりです。
サービス呼び出しを作成したら、それを定義する必要があります。「Service Call Properties」ダイアログ・ボックスを使用して、以下の必須プロパティーを指定します。
詳細については、"差し戻しの定義"を参照してください。
ヒント |
---|
サービス呼び出しが戻されたとき、ビジネス・オブジェクト変数には呼び出しの結果が含まれます。サービス呼び出しがビジネス・オブジェクトに関する新しいデータを取得すると、元のビジネス・オブジェクトのデータは失われます。このため、元のビジネス・オブジェクト値が必要になると予期される場合は、サービス呼び出しを呼び出すアクションの一時変数に元のビジネス・オブジェクトをコピーしておくと便利です。 |
通常のサービス呼び出し (差し戻しや相関セットを使用しないサービス呼び出し) を定義する手順は、以下のとおりです。
サービス呼び出し定義が完了すると、ラベルが割り当てられます。
サービス呼び出しのタイプを変更する手順は、以下のとおりです。
コラボレーションのサブトランザクション・ステップにより、トランザクション・コラボレーションのトランザクションの振る舞いを定義します。
サブトランザクション は、アプリケーション・データ・ストアのトランザクション・データを変更する要求をコラボレーションが送信する操作です。
サービス呼び出しにより、サブトランザクション・ステップが実装されます。Create、Delete、または Update 要求を持つサービス呼び出しは、サブトランザクション・ステップです。ただし、Retrieve 要求はサブトランザクション・ステップではありません (データが変更されないため)。
その他の動詞は、アプリケーション・データ・ストアのデータを変更するかどうかにより、トランザクションであるかどうかが決まります。
トランザクションの振る舞いをサポートするコラボレーション・テンプレートを作成するには、サブトランザクション・ステップごとに差し戻し を定義します。
差し戻しは論理的な取り消しアクションです。つまり、コラボレーション・オブジェクトの実行が失敗すると、前に実行された操作がロールバックされます。ロールバックが行われると、コラボレーション・ランタイム環境ステップが実行経路に応じて逆戻りします。この場合、すでに実行され、差し戻しが定義されているすべての通常ステップに対して差し戻しステップが実行されます。この結果、ロールバックにより、データは、トランザクション・コラボレーションが実行される前の状態に戻されます。
Process Designer Express に表示されるとおり、サブトランザクション・ステップは、Create、Update、または Delete などの操作を要求するサービス呼び出しです。
これらの操作により、常にアプリケーション内のトランザクションのデータが変更されます。また、Retrieve 操作を要求するサービス呼び出しの差し戻しも指定できます。ただし Retrieve 操作実行時にはデータは変更されないため、差し戻しを実行する必要はありません。サービス呼び出しは、コラボレーションが別のコラボレーションまたはコネクターに送信する特定の動詞を持つビジネス・オブジェクトによって定義されます。この操作の差し戻しは、別のビジネス・オブジェクトおよび動詞です。サービス呼び出しに対しては、任意のビジネス・オブジェクトおよび動詞を差し戻しとして使用できます。
表 37 に、差し戻しの共通タイプの一部を示します。
アクション | 差し戻し |
---|---|
ビジネス・オブジェクトの作成 | ビジネス・オブジェクトの削除 |
ビジネス・オブジェクトの削除 | ビジネス・オブジェクトの作成 |
ビジネス・オブジェクトの更新 | 以前の値を復元して、ビジネス・オブジェクトを更新 |
差し戻しは、同期サービス呼び出しと非同期アウトバウンド・サービス呼び出しでサポートされます。コラボレーションがトランザクションであり、このサービス呼び出しの動詞がデータの変更を要求する場合、通常のサービス呼び出しをロールバックする差し戻し操作を指定できます。差し戻しを定義する手順は、以下のとおりです。
トランザクション・コラボレーションについては、"トランザクション機能の使用"を参照してください。
相関属性により会話が識別されます。 会話 とは、2 つのビジネス・プロセス間での首尾一貫した情報伝達の単位です。2 つ以上のビジネス・プロセスが相互に通信する場合には複数の会話が発生するため、相関属性によって会話を識別する必要があります。相関属性は会話の UID として考えることができます。この ID は会話開始時に初期化されます。後続の参加プログラムが会話に加わるときには、この ID を使用する必要があります。
InterChange Server Express ではシナリオ当たり 1 つの会話のみがサポートされています。複数の会話が必要な場合には、コラボレーション・テンプレート内で複数のシナリオを使用するか、または複数のコラボレーション・テンプレートを使用する必要があります。また、相関属性の初期化はシナリオ内で 1 回のみ実行できます。
相関属性を使用するには、以下の条件を満たしていることを確認してください。
サービス呼び出しで相関属性を使用すると、ビジネス・オブジェクトが自動的に判別されます。これは常に、サービス呼び出しで使用されるポートに割り当てられているビジネス・オブジェクトです。
シナリオで初期化された相関属性をアウトバウンド・サービス呼び出しに設定し (相関属性の設定を参照)、非同期インバウンド・サービス呼び出しで属性をマッチングできます (相関属性のマッチングを参照)。
相関属性を使用するには、最初に初期化を行います。相関属性を初期化するときに、ビジネス・オブジェクト属性と、属性の値を収集するために使用するテンプレート変数を指定します。アウトバウンド・サービス呼び出しに相関属性を設定する前、またはランタイム環境で相関属性のマッチングを実行する前に初期化を実行してください。
開始ノード、非同期アウトバウンド・サービス呼び出し、または同期サービス呼び出しで初期化を実行できます。
サービス呼び出しの相関属性を定義および初期化する手順は、以下のとおりです。
開始ノードの相関セットを初期化する手順は、「初期化」チェック・ボックスをクリックする点を除き上記の手順と同じです。開始ノードは相関属性のマッチングに関連していないので、初期化は暗黙に実行されます。
相関セットの定義と初期化が完了したら、相関セットをアウトバウンド・サービス呼び出しに割り当てることができます。次にサービス呼び出しは、相関セットが組み込まれている要求を送信します。相関属性を設定できるアウトバウンド・サービス呼び出しの数に制限はありません。
アウトバウンド・サービス呼び出しで相関属性を設定する手順は、以下のとおりです。
相関セットの初期化が完了したら、特定の相関セットと一致する応答を受信できるように非同期インバウンド・サービス呼び出しを構成できます。
非同期インバウンド・サービス呼び出しに相関セットを指定する手順は、以下のとおりです。
実行時に、非同期インバウンド・サービス呼び出しの属性が相関セットで定義されている属性と一致する場合には、サービス呼び出しはシナリオにより呼び出されます。属性が一致しない場合には、一致する相関セットが定義されている他のシナリオまたはコラボレーションへサービス呼び出しの経路が設定されます。
サービス呼び出しが実行されると、シナリオは、状況とビジネス・オブジェクトという 2 つの戻り値を受け取ります。表 38 で、それぞれの使用について説明します。
戻り値 | 説明 |
---|---|
状況 | サービス呼び出しを生成したアクションの通常の出力遷移リンクは、サービス呼び出しが成功かどうかテストします。例外遷移リンクは、ServiceCallException 例外をチェックし、サービス呼び出しが失敗かどうかテストします。
サービス呼び出しは、トランスポート問題やアプリケーション問題が原因で失敗することがあります。転送障害によってデータが重複する可能性があるため、サービス呼び出しの障害が転送問題が原因であるかどうかを確認することが重要です。詳細については、特定のサービス呼び出し例外の処理を参照してください。 |
ビジネス・オブジェクト | サービス呼び出しによってアプリケーションが変更された場合は、サービス呼び出しが完了すると、サービス呼び出しが使用したビジネス・オブジェクト変数に新しいデータ値が含まれます。 |
コラボレーションのパフォーマンスは、サービス呼び出しの数や、サービス呼び出しによって渡されるビジネス・オブジェクトのサイズの影響を受けます。ビジネス・オブジェクトのサイズは変更できませんが、コラボレーションが作成するサービス呼び出しの数は減らすことができます。
例えば、シナリオが階層ビジネス・オブジェクト内の子ビジネス・オブジェクトに対して操作を行う必要があるとします。場合によっては、サービス呼び出しを実行する必要がある子ビジネス・オブジェクトごとにサービス呼び出しを作成する代わりに、階層オブジェクト全体を検索し、階層オブジェクトを通じてローカルに操作を繰り返す方が効率的なことがあります。