Querying for operations
To search for an operation or a collection of operations, send the com.apama.cumulocity.FindOperation event to Cumulocity IoT, with a unique reqId to the com.apama.cumulocity.FindOperation.CHANNEL channel.
The transport will then respond with zero or more com.apama.cumulocity.FindOperationResponse events and then one com.apama.cumulocity.FindOperationResponseAck event on the com.apama.cumulocity.FindOperationResponse.CHANNEL channel.
Example:
integer reqId := integer.incrementCounter("CumulocityRequestId");
com.apama.cumulocity.FindOperation request :=
new com.apama.cumulocity.FindOperation;
request.reqId := reqId;
// Filter based on operation status
request.params.add("status", "PENDING");
// Subscribe to com.apama.cumulocity.FindOperationResponse.CHANNEL to listen
// for responses
monitor.subscribe(com.apama.cumulocity.FindOperationResponse.CHANNEL);
// Listen for responses based on reqId
on all com.apama.cumulocity.FindOperationResponse(reqId=reqId) as response
// Avoid listener leaks by terminating the listener on completion of the request
and not com.apama.cumulocity.FindOperationResponseAck(reqId=reqId)
{
log "Received Operation " + response.toString() at INFO;
}
// Listen for com.apama.cumulocity.FindOperationResponseAck,
// this indicates that all responses have been received
on com.apama.cumulocity.FindOperationResponseAck(reqId=reqId)
as requestCompleted
{
log "Received all Operation(s) for request "
+ requestCompleted.reqId.toString() at INFO;
// Request is completed and we can unsubscribe from this channel
monitor.unsubscribe(com.apama.cumulocity.FindOperationResponse.CHANNEL);
}
// Send request to find available operations
send request to com.apama.cumulocity.FindOperation.CHANNEL;
Supported query parameters
You can provide the following query parameters with the request:
Parameter | Description |
id | Search for an operation based on operationId. When searching for an operation based on Id, all the query parameters listed below are ignored. |
source | Search for operations based on the device identifier or asset identifier of the source. |
status | Search for operations based on the status. The status can be any of SUCCESSFUL, FAILED, EXECUTING or PENDING. |
agent | Search for operations based on the agent identifier. |
fragmentType | Search for operations based on the fragment type. |
pageSize | Indicates how many entries of the collection are to be retrieved from Cumulocity IoT. |
fromDate | Search for operations from a start date. The date and time is provided as seconds since the epoch. |
toDate | Search for operations within a time range. This is to be used in combination with fromDate. The date and time is provided as seconds since the epoch. |