开发者中心

实时语句

下面的API不通过"/platform"访问, 而是通过URL "/cep"访问。

实时语句接口组成:

  • 表示模块集合的 cep API资源。
  • 查询模块和创建新模块的 module collection 资源。
  • 表示单个模块查询, 修改, 部署或取消部署的 module 资源。

注意: 所有的PUT/POST请求必须设置accept头, 否则会返回空的应答正文。

模块API

CepApi [application/vnd.com.nsn.cumulocity.cepApi+json]
名称 类型 次数 描述
self URL 1 此资源链接地址。
modules ModuleCollection 1 所有模块集合。
GET - 查询CepApi资源

应答正文: CepApi

所需角色: ROLE_CEP_MANAGEMENT_READ

请求示例: 查询CepApi资源集合

GET /cep
                      Host: ...
                      Authorization: Basic ...
                    

应答示例:

HTTP/1.1 200 OK
                      Content-Type: application/vnd.com.nsn.cumulocity.cepApi+json;ver=...
                      Content-Length: ...
                      {
                      "self":"<<CepAPI URL>>",
                      "modules":{
                      "self":"<<ModuleCollection URL>>"
                    }
                  }
                

模块集合

模块集合 [application/vnd.com.nsn.cumulocity.cepModuleCollection+json]
名称 类型 次数 描述
self URI 1 此资源链接地址。
modules Collection 0..n 模块列表, 如下所示。
statistics PagingStatistics 1 分页统计信息。
prev URI 0..1 上一页链接。
next URI 0..1 下一页链接。
GET - 查询模块集合

应答正文: 模块集合

所需角色: ROLE_CEP_MANAGEMENT_READ

请求示例: 查询模块集合

GET /cep/modules
                  Host: ...
                  Authorization: Basic ...
                

应答示例:

HTTP/1.1 200 OK
                  Content-Type: application/vnd.com.nsn.cumulocity.cepModuleCollection+json;ver=...
                  Content-Length: ...
                  {
                  "id":"1",
                  "self":"CURRENT URL",
                  "name":"CepModule 1",
                  "application":{
                  "application":{
                  "id":"3",
                  "key":null,
                  "name":"energyapp",
                  "self":"<<this module application URL>>"
                },
                "self":"<<this module application reference URL>>"
              },
              "lastModified":"2012-01-10T17:15:24+01:00",
              "self": "<<URL to this module>>"
            }
          
POST - 创建包含语句的新模块

请求正文: 模块文件 应答正文: 模块 (如果提供"Accept"头)
所需角色: ROLE_CEP_MANAGEMENT_ADMIN.

请求示例:

POST /cep/modules
              Host: ...
              Authorization: Basic ...
              Content-Length: ...
              Content-Type: multipart/form-data
            

示例文件:

module testmodule;
              @Name('test1')select * from EventCreated.win:time(1 hour)
            

@Name注解可以忽略 - 这种情况下QuarkIoE平台将给语句分配缺省名。

应答示例:

HTTP/1.1 201 Created
              Content-Type: application/vnd.com.nsn.cumulocity.cepModule+json;ver=...
              {
              "id":"3",
              "lastModified":"2013-06-27T15:37:51.091+02:00",
              "name":"management",
              "self":"http:\/\/localhost:8181\/cep\/modules\/3",
              "status":"DEPLOYED"
            }
          

新模块的"id"和"lastModified"由服务器产生。应答也包含模块创建操作的状态。

模块名也被认为是应用程序名。

模块

模块 [application/vnd.com.nsn.cumulocity.cepModule+json]
名称 类型 次数 描述 PUT/POST
id String 1 模块唯一标记。
self URI 1 此资源链接地址。
lastModified String 1 模块创建或修改的时间。
name String 1 模块名称。 POST: 必选 PUT: 可选
status String 1 模块状态: DEPLOYED, NOT_DEPLOYED (缺省). POST: 否 PUT: 可选
GET - 查询模块

应答正文: 模块

所需角色: ROLE_CEP_MANAGEMENT_READ

应答示例:

HTTP/1.1 200 OK
                  Content-Type: application/vnd.com.nsn.cumulocity.cepModule+json;ver=...
                  Content-Length: ...
                  {
                  "id":"1",
                  "lastModified":"2013-04-08T14:35:29.879+02:00",
                  "name":"the_module",
                  "self":"<<URL of cepModule>>",
                  "status":"NOT_DEPLOYED"
                }
              
GET - 查询包含语句的模块文件

应答正文: text/plain

所需角色: ROLE_CEP_MANAGEMENT_READ

应答示例:

HTTP/1.1 200 OK
                Content-Type: text/plain
                Content-Length: ...

                @Name('test1')select * from EventCreated.win:time(1 hour)@Name('test2')select id, count(*) from MyOffOnStream.win:time(1 hour) group by id;
              

警告: 如果语句由QuarkIoE平台分配名称, @Name注解不会出现。

更新模块

请求正文: 模块

应答正文: 模块 (如果提供"Accept"头)

所需角色: ROLE_CEP_MANAGEMENT_ADMIN

请求示例:

PUT /cep/module/<<模块Id>>
                Host: ...
                Authorization: Basic ...
                Content-Type: application/vnd.com.nsn.cumulocity.cepModule+json;ver=...
                {
                "name" : "the_module",
                "status" : "DEPLOYED"
              }
            

应答示例:

HTTP/1.1 200 OK
              Content-Type: application/vnd.com.nsn.cumulocity.cepModule+json;ver=...
            
更新模块文件 - 修改保护语句的模块

请求正文: 模块文件 应答正文: 模块 (如果提供"Accept"头)
所需角色: ROLE_CEP_MANAGEMENT_ADMIN.

请求示例:

PUT /cep/module/<<模块Id>>
                Host: ...
                Authorization: Basic ...
                Content-Length: ...
                Content-Type: multipart/form-data
              

文件示例:

module testmodule;
                @Name('test1')select * from EventCreated.win:time(1 hour)@Name('test2')select id, count(*) from MyOffOnStream.win:time(1 hour) group by id;
              

应答示例:

HTTP/1.1 200 OK
                Content-Type: application/vnd.com.nsn.cumulocity.cepModule+json;ver=...
                {
                "id":"3",
                "lastModified":"2013-06-27T15:37:51.091+02:00",
                "name":"management",
                "self":"http:\/\/localhost:8181\/cep\/modules\/3",
                "status":"DEPLOYED"
              }
            

模块修改过程中原模块删除并取消部署, 新模块创建并部署, 因此模块id变化。

DELETE - 删除模块

请求正文: N/A. 所需角色: ROLE_CEP_MANAGEMENT_ADMIN

请求示例: 删除模块

DELETE /cep/module/<<模块Id>>
               Host: [hostname]
               Authorization: Basic xxxxxxxxxxxxxxxxxxx
             

应答示例:

HTTP/1.1  204 NO CONTENT
             

通知

实时通知允许立即从语句输出接收。通过URL "/cep/notifications"访问。

所需角色: ROLE_NOTIFICATION_READ

订阅通道命名格式

订阅通道包含定义实时语句的模块名称以及实时语句本身名称。结构如下:

/<<模块名>>/<<语句名>>
              

例如, 要订阅模块"alarms"中的语句"overHeatAlarms", 订阅通道为如下字符串:

/alarms/overHeatAlarms