OData - Daten anbieten - Funktionseigenschaften

Modul Integration Daten anbieten OData / Kontextmenü Neuer Dienst / Weiter bis Funktionen / Funktion hinzufügen



Hier werden die Eigenschaften einer Funktion definiert.

Name

Der eindeutige Name der Funktion. Darf weder Leer- noch Sonderzeichen enthalten.

HTTP Methode

Definiert, mit welcher http Methode die Funktion aufgerufen werden kann.

Entity Set Name (optional)

Definiert, auf welchem Entity Set die Funktion operiert.

Rückgabetyp

Definiert den Rückgabewerttyp der Funktion. Dies kann entweder ein OData-Datentyp sein (z.B. Edm.String, Edm.Int32, Edm.Double, ...) oder ein Entity-Type.

Ist Collection

Definiert, ob es sich bei dem Rückgabewert um einen oder mehrere Datensätze bzw. Werte handelt.

Parameter

Liste der Eingabe-Parameter einer Funktion. Ein Parameter kann über Parameter hinzufügen zur Parameterliste hinzugefügt werden. Ein bestehender Parameter kann über Parameter bearbeiten geändert werden.

Groovy-Skript

Die eigentliche Funktionslogik wird mit Groovy-Skript implementiert. Dazu kann über den Link Groovy-Skript bearbeiten der Groovy-Editor geöffnet werden. In Groovy stehen alle Standard-Intrexx-Kontextobjekte und Klassen zur Verfügung. Darüber hinaus werden noch zusätzliche OData-spezifische Kontextobjekte angeboten:

Zugriff auf Funktionsparameter in Groovy


Auf Eingabeparameter einer Funktion kann in Groovy wie folgt zugegriffen werden:
def l_param = g_oFunctionParameters['BusinessPartnerName']

Definition der Rückgabewerte einer Funktion


Der Groovy-Rückgabewert einer Funktion muss dem in den Funktionseigenschaften definierten Datentyp entsprechen.

Beispiel 1: Einfacher Rückgabewert vom Typ Edm.String

Das folgende Groovy-Skript gibt einfach den Eingabewert vom Typ Edm.String als Ergebnis zurück:
def l_param = g_oFunctionParameters['BusinessPartnerName']
def l_ret = "Parameter value: " + l_param
return l_ret

Beispiel 2: Rückgabewert vom Typ Entity Type

Um einen einzelnen Datensatz als Rückgabewert der Funktion zu definieren, werden die Felder des Entity-Types einer Map hinzugefügt und diese zurückgegeben.
def l_param = g_oFunctionParameters['ID']
				// load record from database
				// return record value as entity type

				def l_entity = [:]
				l_entity['ID'] = 1;
				l_entity['DeliveryStatus'] = 'OPEN';
				l_entity['OrderStatus'] = 1;
				l_entity['BillingStatus'] = 'OPEN';

				return l_entity

Beispiel 3: Rückgabewert vom Typ Entity-Collection

In diesem Beispiel werden Datensätze anhand eines Eingabeparameters geladen und das Ergebnis als Entity-Collection zurückgegeben. Aus Gründen der Übersichtlichkeit sind die Anweisungen zum Laden der Datensätze nicht enthalten:
def l_param = g_oFunctionParameters['BusinessPartnerName']
				// load records from database
				// return record values as entities

				def l_entity1 = [:]

				l_entity1['ID'] = 1;
				l_entity1['DeliveryStatus'] = 'OPEN';
				l_entity1['OrderStatus'] = 1;
				l_entity1['BillingStatus'] = 'OPEN';
				l_entity1['TotalSum'] = 1200.00d;

				def l_entity2 = [:]

				l_entity2['ID'] = 2;
				l_entity2['DeliveryStatus'] = 'OPEN';
				l_entity2['OrderStatus'] = 1;
				l_entity2['BillingStatus'] = 'OPEN';
				l_entity2['TotalSum'] = 2300.00d;

				return [l_entity1, l_entity2]
Hier wird pro Datensatz eine Map initialisiert, in der die Feldnamen als Key und die Werte als Values gespeichert werden. Zuletzt werden die Map-Objekte in ein Groovy-List-Objekt gespeichert und als Ergebnis zurückgegeben. Der OData-Provider wandelt dann die Datenstruktur gemäß den Datentypen automatisch in das erforderliche OData-Format (JSON/XML) um.