OData - Provide Data - Properties of the function
Integration module
Provide data
OData / Context menu - New service / Continue to Functions / Add function
The properties of a function are defined here.
Name
The unique name of the function. It cannot contain special characters or spaces.
HTTP method
Defines the HTTP method that will be used to request the function.
Entity set name (optional)
Defines the entity set on which the function operates.
Return type
Defines the return value type of the function. This can be either an OData data type (such as
Edm.String, Edm.Int32, Edm.Double, etc.) or an Entity Type.
Is collection
Defines whether the return value contains one or multiple data records/values.
Parameters
List of input parameters of a function.
A parameter can be added to the parameters list by clicking
Add parameter, or an existing parameter can be changed by clicking
Edit parameter.
Groovy Script
The actual function logic is implemented with a Groovy script. To do this, click on
Edit Groovy script link to open the Groovy Editor. All standard Intrexx context objects and classes are available in Groovy. In addition to this, a number of OData-specific context objects are provided:
- g_guidODataService (Type String)
Contains the GUID of the OData service.
- g_oFunctionParameters (Type Map)
Contains the function parameters and their values.
- g_oProducerContext (Type IProducerCommandContext)
Context object of the OData Producer. Provides access to the OData service configuration and the processing context.
- g_oFunctionContext (Type CallFunctionCommandContext)
Context object of the OData function. Provides access to the function properties, the input parameters and values, and optional OData query string variables.
Access to function parameters in Groovy
Input parameters in a function can be accessed in Groovy as follows:
def l_param = g_oFunctionParameters['BusinessPartnerName']
Definition of the return values of a function
The Groovy return value of a function must correspond to the data type defined in the function properties.
Example 1: Simple return value of type Edm.String
The following Groovy script simply returns the input value of type Edm.String as result:
def l_param = g_oFunctionParameters['BusinessPartnerName']
def l_ret = "Parameter value: " + l_param
return l_ret
Example 2: Return value of type Entity
To define a single data record as the return value of the function, the fields of the Entity Type are added to a map, which are then returned.
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
Example 3: Return value of type Entity Collection
In this example, data records are loaded based on an input parameter, then the result returned as an Entity Collection (to clarify the example, the instructions to load the data records are not included):
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]
A map is initialized for each data record here, in which the field names are stored as a key and the values as values. Last, the map objects are stored in a Groovy list object and returned as the result. The OData Provider then converts the data structure corresponding to the data types automatically into the required OData format (JSON/XML).