7.7. APIs - Supporting Services - Scheduling¶
7.7.1. Architecture Reference¶
For a description of the architecture, see Scheduling
7.7.2. Introduction¶
The following API RESTful Web Service(s) for EdgeX Foundry.”
https://github.com/edgexfoundry/edgex-go/blob/master/api/raml/support-scheduling.raml
7.7.3. Description¶
Scheduler Service - a service that can be used to schedule invocation of a URL. Requires the use of interval(s), and interval action(s).
- Interval(s)
- name - unique name of the service.
- start - identifies when the operation starts. Expressed in ISO 8601 YYYYMMDD’T’HHmmss format. Empty means now.
- end - identifies when the operation ends. Expressed in ISO 8601 YYYYMMDD’T’HHmmss format. Empty means never
- frequency - identifies the interval between invocations. Expressed in ISO 8601 PxYxMxDTxHxMxS format. Empty means no frequency.
- Interval Action(s)
- name - unique name of the interval action.
- interval - unique name of an existing interval.
- target - the recipient of the interval action (ergo service or name).
- protocol - the protocol type to be used to contact the target. (example HTTP).
- httpMethod - HTTP protocol verb.
- address - the endpoint server host.
- port - the desired port.
- path - the api path which will be acted on.
- parameters - (optional) parameters which will be included in the BODY tag for HttpMethods. Any parameters that should be provided to the call, e.g. {“milliseconds”:86400000}
7.7.4. Examples¶
Create an interval upon which the scheduler will operate
- curl -X POST -H “Content-Type: application/json” -H “Cache-Control: no-cache” -d ‘{
- “name”: “midnight”, “start”: “20180101T000000”, “frequency”: “P1D”}’ “http://localhost:48081/api/v1/interval”
Example of a second interval which will run every 20 seconds
- curl -X POST -H “Content-Type: application/json” -H “Cache-Control: no-cache” -d ‘{
- “name”: “every20s”, “start”:”20000101T000000”, “end”:””, “frequency”:”PT20S”}’ “http://localhost:48081/api/v1/interval”
Create an interval action that will invoke the interval action (drive the scrubber) in core-data
- curl -X POST -H “Content-Type: application/json” -H “Cache-Control: no-cache” -d ‘{
- “name”: “scrub-pushed-events”, “interval”: “midnight”, “target”: “core-data”, “protocol”: “http”, “httpMethod”: “DELETE”, “address”: “localhost”, “port”: 48080, “path”: “/api/v1/event/scrub”}’ “http://localhost:48085/api/v1/intervalaction”
This is a Random-Boolean-Device which created by edgex-device-virtual that connects every 20 seconds.
- curl -X POST -H “Content-Type: application/json” -d ‘{
- “name”: “put-action”, “interval”: “every20s”, “target”: “edgex-device-modbus”, “protocol”: “http”, “httpMethod”: “PUT”, “address”: “localhost”, “port”: 49990, “path”:”/api/v1/device/name/Random-Boolean-Device/RandomValue_Bool”, “parameters”: “{“RandomValue_Bool”: “true”,”EnableRandomization_Bool”: “true”}”