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:
- g_guidODataService (Typ String)
Beinhaltet die GUID des OData-Services.
- g_oFunctionParameters (Typ Map)
Beinhaltet die Funktionsparameter und deren Werte.
- g_oProducerContext (Typ IProducerCommandContext)
Kontext-Objekt des OData-Producers. Bietet Zugriff auf die OData-Servicekonfiguration
und den Verarbeitungskontext.
- g_oFunctionContext (Typ CallFunctionCommandContext)
Kontext-Objekt der OData-Funktion. Bietet Zugriff auf die
Funktionseigenschaften, die Eingabeparameter und –werte und
optionale OData-Query-String-Variablen.
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.