POST /gemfire-api/v1/functions/{functionId}
POST /gemfire-api/v1/functions/{functionId}
Execute GemFire function on entire cluster or on a specified region, members and member groups.
Resource URL
/gemfire-api/v1/functions/{functionId}?[&onRegion=regionname|&onMembers=member1,member2,...,memberN|&onGroups=group1,group2,...,groupN]
Parameters
- {functionId} This required parameter is the name of the function to execute. Place it in the Resource URL, as in the example request: AddFreeItemToOrders.
- onRegion This optional parameter specifies the target region for the function. You can only invoke a function on a single region. Substitute the region's name for regionname within the sample syntax onRegion=regionname.
- onMembers This optional parameter specifies the target members of the function. For multiple members, specify a comma-delimited list of member names, as in the sample onMembers=member1,member2.
- onGroups This optional parameter specifies the target groups of the function. For multiple groups, specify a comma-delimited list of group names, as in the sample onGroups=membergroup1,membergroup2.
-
filter This optional parameter can only be used with the onRegion
parameter, where the region has a data-policy of
PARTITION. The parameter specifies a list of applicable keys that the
function needs to filter on. There are 3 keys in the example Resource URL:
http://serverURL/functions/SampleFunction?onRegion=TestPartitionRegion&filter=key1,key2,key3
- Any function arguments are passed in the request body in JSON format. The content
of the arguments can depend on how the function is defined. Use @type to declare argument
types and @value for specifying a scalar value. An example set of
arguments:
[ { "@type": "double", "@value": 210 }, { "@type": "com.gemstone.gemfire.web.rest.domain.Item", "itemNo": "599", "description": "Part X Free on Bumper Offer", "quantity": "2", "unitprice": "5", "totalprice": "10.00" } ]
Example Requests
Request Payload: application/json POST /gemfire-api/v1/functions/AddFreeItemToOrders Accept: application/json Content-Type: application/json [ { "@type": "double", "@value": 210 }, { "@type": "com.gemstone.gemfire.web.rest.domain.Item", "itemNo": "599", "description": "Part X Free on Bumper Offer", "quantity": "2", "unitprice": "5", "totalprice": "10.00" } ]Another example:
Request Payload: null POST /gemfire-api/v1/functions/getDeliveredOrders Accept: application/json
Example Success Responses
Response Payload: null 200 OK Location:http: //localhost:8080/gemfire-api/v1/functions/AddFreeItemToOrdersAnother example response:
Response Payload: application/json 200 OK Content-Length: 316 Content-Type: application/json Location: http://localhost:8080/gemfire-api/v1/functions/getDeliveredOrders [ { "purchaseOrderNo": "1121", "deliveryDate": "Thu Feb 20 00:00:00 IST 2014" }, { "purchaseOrderNo": "777", "deliveryDate": "Thu Feb 20 00:00:00 IST 2014" }, { ... } ]
Error Codes
Status code 500 INTERNAL SERVER ERROR is an error encountered in a server. Check the HTTP
response body for a stack trace of the exception. Causes:
- The Region identified by name (%1$s) could not found!
- Could not found the specified members in disributed system!
- no member(s) are found belonging to the provided group(s)!
- Disributed system does not contain any valid data node to run the specified function!
- Key is of an inappropriate type for this region!
- Specified key is null and this region does not permit null keys!
- Server has encountered low memory condition!
- Input parameter is null!
- Could not convert function results into Restful (JSON) format!
- Function has returned results that could not be converted into Restful (JSON) format!
- Server has encountered an error while processing function execution!