CORBARequest ノードを構成して、応答の送信先とするロケーションを定義します。
始める前に:以下のトピックで説明されているタスクを完了します。
CORBARequest ノードには 3 つの出力ターミナルがあります。
- Out: 正常な操作の呼び出しに使用します。
- Error: CORBA システムの例外またはユーザー定義の例外が発行されるときに使用します。
- Failure: ノードで障害が発生するときに使用します。
例えば、ノードがネーミング・サービスと通信できないときや、不正確なメッセージを受け取るときなどです。
「結果」タブで「
出力データのロケーション」プロパティーを構成することにより、応答の送信先とするロケーションを選択できます。 このプロパティーは、
CORBARequest ノードが出力を入れるメッセージ・ツリーのロケーションを指定します。
出力は、DataObject ドメインの下に入れられます。
詳しくは、結果メッセージと着信メッセージの結合を参照してください。
- 正常な呼び出しの処理
呼び出しが成功すると、結果として出されるメッセージは Out ターミナルに伝搬されます。 ツリーの中には、InterfaceName.OperationNameResponse という名前の最上位エレメントがあります。
このタイプの下には、操作の戻りの型 (named _return)、およびすべての inout または out パラメーターがあります。 in パラメーターは変更されないので、伝搬されません。
in、inout、および out パラメーターの混合
以下に示すのは、IDL ファイルの例です。
interface
ExampleOne {
string exampleOneOperation(in string inparam, out string outparam, inout string inoutparam);
}
パラメーターの
outparam および
inoutparam を、最上位エレメント
ExampleOne.exampleOneOperationResponse の下で受け取ります。
以下に示すのは、XML の例です。
<ExampleOne.exampleOneOperationResponse>
<_return>The operation return value</_return>
<outparam>value from corba app</outparam>
</inoutparam>your value changed by the corba app<inoutparam>
</ExampleOne.exampleOneOperationResponse>
out および inout パラメーター
以下に示すのは、IDL ファイルの例です。
interface
ExampleTwo {
string exampleTwoOperation(out string outparam, inout string inoutparam);
}
in パラメーターは伝搬されないので、in パラメーターを除去しても、
CORBARequest ノードから伝搬されるメッセージに変更はありません。
以下に示すのは、XML の例です。
<ExampleTwo.exampleTwoOperationResponse>
<_return>The operation return value</_return>
<outparam>value from corba app</outparam>
</inoutparam>your value changed by the corba app<inoutparam>
</ExampleTwo.exampleTwoOperationResponse>
in パラメーターのみ、またはパラメーターなし
操作にパラメーターが含まれないか、または in パラメーターのみの場合は、最上位エレメントの下で _return 値を受け取ります。
以下に示すのは、IDL ファイルの例です。
interface
ExampleThree {
string exampleThreeOperation(in string inparam);
}
以下に示すのは、XML の例です。
<ExampleThree.exampleThreeOperationResponse>
<_return>The operation return value</_return>
</ExampleThree.exampleThreeOperationResponse>
戻りの型がなく (void)、inout または out パラメーターがない
呼び出す操作で戻りの型がなく (void)、inout または out パラメーターもない場合は、CORBA アプリケーションからツリーに入れる値が戻されません。 この場合、最上位エレメントだけが作成されます。
以下に示すのは、IDL ファイルの例です。
interface
ExampleFour {
void exampleFourOperation(in string inparam);
}
以下に示すのは、XML の例です。
<ExampleFour.exampleFourOperationResponse>
</ExampleFour.exampleFourOperationResponse>
- ユーザー定義の例外および CORBA システムの例外の処理
CORBA ユーザー定義の例外または CORBA システムの例外が発生すると、メッセージは Error ターミナルに伝搬されます。 CORBA システムの例外には、次のような標準の形式があります。
IDL ファイルでは:
exception SystemException { // descriptive of error
unsigned long; // more detail about error
CompletionStatus; // yes, no, maybe
}
ツリーでは:
<SystemException>
<minor>10</minor>
<completed>maybe</completed>
</SystemException>
最上位エレメントは、発行される CORBA システムの例外の名前です。 ユーザー定義の例外の構造は、その例外の IDL に基づいています。 以下に例を示します。
IDL ファイルでは:
exception BadRecord {
string why;
};
メッセージでは:
<BadRecord>
<why>reason text</why>
</BadRecord>
この例から分かるように、メッセージの構造は例外に基づいていて、呼び出される操作によって修飾されることはありません。
- ノードでの障害の処理
すべての障害は、Failure ターミナルに伝搬されます。 起こりうる障害には、以下のものがあります。
- CORBA サーバーとの通信不能
- CORBA ネーミング・サービスとの通信不能
- 無効な本体 (最上位エレメントが間違っていることや、パラメーターが欠落していることなど)