CORBA-Operationen können Parameter enthalten, die vom Server modifiziert werden können.
CORBA-Operationen können Eingabe-, Ausgabe- und Ein-/Ausgabeparameter enthalten. Eingabe- und Ein-/Ausgabeparameter bestimmen das Aussehen der Baumstruktur unter der DataObject-Domäne beim Eintreffen im CORBARequest-Knoten. Rückgabetyp, Ein-/Ausgabe- und Ausgabeparameter bestimmen das Aussehen der Baumstruktur beim Verlassen des CORBARequest-Knotens.
Die eingehende Nachricht ist im Element interfaceName.operationName enthalten und benötigt für jeden Eingabe- oder Ein-/Ausgabeparameter ein Element. Wenn die Schnittstelle in einem Modul enthalten ist, wird der Name mit dem Namen des Moduls qualifiziert. Wenn die Schnittstelle in anderen Modulen verschachtelt ist, werden alle Modulnamen angegeben. Beispiel: moduleNameA.moduleNameB.interfaceName.operationName. Ausgabeparameter sind nicht erforderlich, weil der Client keinen Wert für Ausgabeparameter sendet. Diese Elemente müssen in derselben Reihenfolge wie die Parameter in der IDL-Datei angeordnet sein.
Die Ausgabenachricht vom CORBARequest-Knoten ist im Element 'interfaceName.operationNameResponse' enthalten. Wenn die Schnittstelle in einem Modul enthalten ist, wird der Name mit dem Modulnamen qualifiziert. Die abgehende Nachricht enthält ein Element für den Rückgabetyp mit dem Namen _return und ein Element für jeden Ein-/Ausgabe- und Ausgabeparameter.
interface exampleInterface {
string outsideModuleOperation(Eingabezeichenfolge one, Ausgabezeichenfolge two, Ein-/Ausgabezeichenfolge three);
};
Die Eingabenachricht kann wie das folgende Beispiel aussehen:<exampleInterface.outsideModuleOperation>
<one>irgendetwas</one>
<three>irgendetwas</three>
</exampleInterface.outsideModuleOperation>
Die Ausgabenachricht kann wie das
folgende Beispiel aussehen:<exampleInterface.outsideModuleOperationResponse>
<_return>irgendetwas</_return>
<two>irgendetwas</two>
<three>irgendetwas</three>
</exampleInterface.outsideModuleOperationResponse>
Die Eingabenachricht muss alle
Eingabe- und Ein-/Ausgabeparameter enthalten, deshalb sind 'one' und 'three' angegeben. Die
Ausgabenachricht enthält folgende Elemente:Ausnahmebedingungen werden an das Fehlerterminal (Error) unter der DataObject-Domäne weitergegeben; die Struktur der Nachricht hängt von der Ausnahmebedingung ab.
exception BadRecord {
string why;
};
interface SomeInterface {
long bar(in float pi) raises (BadRecord);
};
Die Operation bar kann die Ausnahmebedingung
BadRecord ausgeben. Wird diese Ausnahmebedingung ausgegeben, wird folgende
Nachricht an das Fehlerterminal (Error) weitergegeben.<BadRecord>
<why>Ursachenbeschreibung</why>
</BadRecord>
interface exampleInterface {
string exampleOne();
void exampleTwo(Eingabezeichenfolge one);
};
Eingabenachricht: Die Eingabenachricht ist irrelevant, weil der CORBARequest-Knoten den Hauptteil der Nachricht nicht beachtet.
<exampleInterface.exampleOneResponse>
<_return>irgendetwas</_return>
</exampleInterface.exampleOneResponse>
<exampleInterface.exampleTwo>
<one>irgendetwas</one>
</exampleInterface.exampleTwo>
<exampleInterface.exampleTwoResponse>
</exampleInterface.exampleTwoResponse>