Prototypen für den Servicezugriff
Wenn Sie in einem Funktionsprototyp Parameter für den Zugriff auf einen Service angeben, müssen Sie die hier beschriebenen Regeln befolgen.
Ein Schnittstellenabschnitt wird für den Servicezugriff verwendet und enthält Funktionsprototypen wie beispielsweise den Folgenden:
Function GetEmployeeDetail(employeeCode STRING IN,
employeeSalary FLOAT OUT,
employeeStatus STRING INOUT)
returns(myEmployeeRecordPart);
Falls der Prototyp für den Zugriff auf einen EGL-REST-RPC-Service verwendet wird, gelten die folgenden Regeln:
- Der Prototyp kann Eingabeparameter (IN), Ausgabeparameter (OUT) und Ein-/Ausgabeparameter (INOUT) enthalten.
- Die vom Service empfangenen und zurückgegebenen Daten haben immer das JSON-Format. JSON kann keine Daten des Typs HEX, BLOB oder CLOB enthalten.
- Der Service gibt immer eine JSON-Zeichenfolge zurück. In Rich-UI-Anwendungen werden die vom Service zurückgegebenen numerischen Daten, die mehr als 15 signifikante Ziffern aufweisen, vom EGL-Laufzeitcode auf- bzw. abgerundet. Bei der Rückgabe von JSON an EGL-generierten Java™-Code erfolgt die Rundung nicht.
Falls der Prototyp für den Zugriff auf einen SOAP-Service verwendet wird, kann er Eingabeparameter (IN), Ausgabeparameter (OUT) und Ein-/Ausgabeparameter (INOUT) enthalten.
Falls der Prototyp für den Zugriff auf den REST-Service eines anderen Anbieters verwendet wird, gelten die folgenden Regeln:
- Für jeden Parameter ist der Änderungswert IN erforderlich.
- Falls ein Parameter verwendet wird, um die URI oder die Abfragezeichenfolge zu erstellen, gelten die folgenden Regeln:
- Der Name des Parameters muss mit dem Namen der Substitutionsvariablen in der URI-Schablone übereinstimmen.
- Der Datentyp des Parameters kann ein Basiselementtyp oder ein zugehöriges Datenelement sein.
- Falls der Anforderer für JavaScript generiert wird, muss der Basiselementtyp entweder STRING oder einer der folgenden Typen sein, die zuordnungskompatibel zu STRING sind: FLOAT, BIN bzw. eines der ganzzahligen Äquivalente für BIN (INT, SMALLINT oder BIGINT).
- Falls der Anforderer für Java generiert wird, sind mit Ausnahme von HEX, BLOB und CLOB alle Basiselementtypen gültig.
- Falls der REST-Service eine JSON-Zeichenfolge an eine Rich-UI-Anwendung zurückgibt, rundet der EGL-Laufzeitcode alle numerischen Daten, die vom Service zurückgegeben werden und größer als 15 signifikante Ziffern sind. Bei der Rückgabe von JSON an EGL-generierten Java-Code erfolgt die Rundung nicht.
- Der Wert eines Darstellungsparameters kann eine Zeichenfolge (STRING), einer der bereits erwähnten zuordnungskompatiblen Typen oder ein nicht strukturierter Datensatzabschnitt sein, dessen Felder die folgenden Regeln erfüllen:
- Das Feld hat den Typ STRING oder ist zuordnungskompatibel zu STRING.
- Das Feld basiert auf einem nicht strukturierten Datensatzabschnitt. Das Feld kann insbesondere auf einem Datensatzabschnitt basieren, der ausschließlich Zeichenfolgen, also Werte des Typs STRING, bzw. andere zuordnungskompatible Werte oder andere nicht strukturierte Datensatzabschnitte enthält. Datensätze können auf jeder beliebigen Ebene in Datensätzen verschachtelt sein.
Falls der Prototyp für den direkten Zugriff auf ein IBM® i-Serviceprogramm mittels einer nativen Bindung verwendet wird, gelten die folgenden Regeln:
- Die Parameter müssen eine feste Länge haben. Nicht strukturierte Datensätze und Werte des Typs STRING werden beispielsweise nicht unterstützt. Dynamische Feldgruppen werden ebenfalls nicht unterstützt.
- Der Service kann eine Ganzzahl oder keinen Wert zurückgeben. Falls der native Service eine Ganzzahl zurückgibt, könne Sie mit zwei Verfahren, wie hier vorgeschlagen, eine Serviceoperation namens theOperation aufrufen:
theService myEGLInterfacePart {@BindService{}}; myStatus INT; // either of the next invocations is valid if an integer is returned theService.theOperation(); myStatus = theService.theOperation(); - Wenn der Zugriff auf den nativen Service fehlschlägt oder einen Code ungleich null zurückgibt, wird die Ausnahmebedingung ServiceInvocationException ausgelöst (eine Beschreibung finden Sie im Abschnitt über EGL-Kernausnahmedatensätze).