As operações CORBA podem ter parâmetros que podem ser modificados pelo servidor.
As operações CORBA podem ter parâmetros in, out e inout. Os parâmetros in e inout ditam a aparência da árvore no domínio do DataObject ao ir para um nó CORBARequest. O tipo de retorno, os parâmetros inout e out ditam a aparência da árvore ao sair de um nó CORBARequest.
A mensagem de entrada está contida no elemento interfaceName.operationName e precisa de um elemento para cada parâmetro in ou inout. Se a interface estiver contida em um módulo, o nome é qualificado com o nome do módulo. Se o módulo for agrupado em outros módulos, todos os nomes dos módulos são indicados, como: moduleNameA.moduleNameB.interfaceName.operationName. Os parâmetros out não são necessários porque o cliente não envia um valor para parâmetros out. Estes elementos devem estar na mesma ordem que os parâmetros no arquivo IDL.
A mensagem de saída do nó CORBARequest está contida no elemento interfaceName.operationNameResponse. Se a interface estiver contida em um módulo, o nome será qualificado com o nome do módulo. A mensagem de saída possui um elemento para o tipo de retorno, denominado _return e um elemento para cada parâmetro inout e out.
interface exampleInterface {
string outsideModuleOperation(in string one, out string two, inout string three);
};
A mensagem de entrada pode ser semelhante ao seguinte exemplo:<exampleInterface.outsideModuleOperation>
<one>something</one>
<three>something</three>
</exampleInterface.outsideModuleOperation>
A mensagem de saída
pode ser semelhante ao seguinte exemplo:<exampleInterface.outsideModuleOperationResponse>
<_return>something</_return>
<two>something</two>
<three>something</three>
</exampleInterface.outsideModuleOperationResponse>
A mensagem de
entrada requer todos os parâmetros in e inout, portanto, um e três,
sejam especificados. A saída possui os seguintes elementos:As exceções são propagadas para o terminal Error sob o domínio do DataObject; a estrutura da mensagem depende da exceção.
exception BadRecord {
string why;
};
interface SomeInterface {
long bar(in float pi) raises (BadRecord);
};
A operação bar pode emitir a
exceção BadRecord. Se esta exceção for emitida,
a mensagem a seguir será propagada ao terminal Error.<BadRecord>
<why>Reason text</why>
</BadRecord>
interface exampleInterface {
string exampleOne();
void exampleTwo(in string one);
};
Mensagem de entrada: A mensagem de entrada é irrelevante porque o nó CORBARequest não consulta o corpo da mensagem.
<exampleInterface.exampleOneResponse>
<_return>something</_return>
</exampleInterface.exampleOneResponse>
<exampleInterface.exampleTwo>
<one>something</one>
</exampleInterface.exampleTwo>
<exampleInterface.exampleTwoResponse>
</exampleInterface.exampleTwoResponse>