为 CORBARequest 节点构建消息
您可以将 XML 消息用于 CORBARequest 节点,也可以使用另一个消息流节点来构建消息。
准备工作
确保已创建并配置具有 CORBARequest 节点的消息流,如 使用 CORBARequest 节点开发消息流中所述。
关于此任务
您可以在入局消息树中指定从中检索数据以构成 CORBARequest 节点发送的请求的位置。 使用“请求”选项卡上的数据位置属性指定此位置。 缺省值为 $Body。
过程
- 查找要发送到 CORBARequest 节点的消息主体中需要的数据。
- 指定需要发送到 CORBARequest 节点的消息的顶级元素 (interface.operationName)。
- 为每个 in 和 inout 参数指定一个子代。 您不必传入 out 参数的值。
示例
以下示例显示消息流可收到的 XML 和 ESQL。
混合 inout 和 out 参数
以下是 IDL 文件的示例:
interface
ExampleOne {
enum completion{YES, NO, MAYBE};
typedef sequence<string> stringlist;
struct stringobject {string member;};
string exampleOneOperation(in string inparamA, inout string inoutparamA, out string outparamA);
completion exampleOneOperationB(in stringlist inparamB, inout stringobject inoutparamB, out completion outparamB);
}此 IDL 文件包含具有两个操作的接口,其中包含一个 in 参数、一个 inout 参数和一个 out 参数。对于第一个操作 exampleOneOperationA,必须在顶级类型 ExampleOne.exampleOneOperationA 下传入参数 inparamA 和 inoutparamA。 无需传入 outparamA 参数。
以下是 XML 示例:
<ExampleOne.exampleOneOperationA>
<inparamA>your value</inparamA>
<inoutparamA>your value</inoutparamA>
</ExampleOne.exampleOneOperationA>以下是 ESQL 示例:SET
OutputRoot.DataObject."ExampleOne.exampleOneOperationA".inparamA = 'yourvalue';
SET
OutputRoot.DataObject."ExampleOne.exampleOneOperationA".inoutparamA = 'yourvalue'; 对于第二个操作 exampleOneOperationB,您必须在顶级类型 ExampleOne.exampleOneOperationB 下传入参数 inparamB 和 inoutparamB。 无需传入 outparamB 参数。以下是 XML 示例:
<ExampleOne.exampleOneOperationB>
<inparamB><item>your value</item></inparamB>
<inoutparamB><member>your value</member></inoutparamB>
</ExampleOne.exampleOneOperationB>以下是 ESQL 示例:SET
OutputRoot.DataObject."ExampleOne.exampleOneOperationB".inparamB.item = 'your value';
SET
OutputRoot.DataObject."ExampleOne.exampleOneOperationB".inoutparamB.member = 'your value'仅 in 和 inout 参数
以下是 IDL 文件的示例:
interface
ExampleTwo {
enum completion{YES, NO, MAYBE};
typedef sequence<string> stringlist;
struct stringobject {string member;};
string exampleTwoOperationA(in string inparamA, inout string inoutparamA);
completion exampleTwoOperationB(in stringlist inparamB, inout stringobject inoutparamB);
}此 IDL 文件包含仅含 in 和 inout 参数的两个操作。 移除 out 参数且仅保留 in 和 inout 参数不会更改需要传入的参数。要调用第一个操作 exampleTwoOperationA,请在顶级类型 ExampleTwo.exampleTwoOperationA 下传入 inparamA 和 inoutparamA。
以下是 XML 示例:
<ExampleTwo.exampleTwoOperationA>
<inparamA>your value</inparamA>
<inoutparamA>your value</inoutparamA>
</ExampleTwo.exampleTwoOperationA>以下是 ESQL 示例:
SET
OutputRoot.DataObject."ExampleTwo.exampleTwoOperationA".inparamA = 'yourvalue';
SET
OutputRoot.DataObject."ExampleTwo.exampleTwoOperationA".inoutparamA = 'yourvalue'; 要调用第二个操作 exampleTwoOperationB,请在顶级类型 ExampleTwo.exampleTwoOperationB 下传入 inparamB 和 inoutparamB。以下是 XML 示例:
<ExampleTwo.exampleTwoOperationB>
<inparamB><item>your value</item></inparamB>
<inoutparamB><member>your value</member></inoutparamB>
</ExampleTwo.exampleTwoOperationB>以下是 ESQL 示例:SET
OutputRoot.DataObject."ExampleTwo.exampleTwoOperationB".inparamB.item = 'your value';
SET
OutputRoot.DataObject."ExampleTwo.exampleTwoOperationB".inoutparamB.member = 'your value';无参数或仅 out 参数
如果操作不包含参数或者仅包含 out 参数,那么无需向消息体添加任何内容。 CORBARequest 节点不查看入局消息。