规则引擎 API

规则引擎 API

概述

主文主要描述规则引擎参数设备和管理 API,规则引擎主要用于处理设备上报的数据流,触发操作或发出告警。

告警

属性列表

NAME SORTABLE TYPE DESCRIPTION
id - ObjectId 文件 ID
created true Date 创建时间, 单位为毫秒
details - Object 告警详情
level true Number 告警级别
location - Object 告警相关的位置
message true String 告警消息
name true String 告警名称
ownerId - ObjectId 这条告警所属的公司账号
period true Number 沉默周期
resource - Object 告警相关的设备
ruleId - ObjectId 相关的规则的 ID
status true Number 报警状态
title true String 告警标题
type true String 告警类型
updated true Date 最后更新时间, 单位为毫秒

报警状态 - status

  • 0 - 恢复正常
  • 1 - 预警
  • 2 - 报警

告警级别 - level

  • fatal, 5 - 严重
  • critical, 4 - 危险/重度
  • warning, 3 - 中度
  • warning, 2 - 警告/轻度
  • info, 1 - 正常
  • info, 0 - 优秀

沉默周期 - period

  • ONCE 每次都发送
  • ONCE_A_MINUTE 每分钟只发送一次
  • ONCE_AN_HOUR 每小时只发送一次
  • ONCE_A_DAY 每天发送一次
  • ONCE_A_WEEK 每周只发送一次
  • OFF 不发送

创建一个新的告警

POST /alert/add

请求参数:

NAME REQUIRED TYPE DESCRIPTION
name true String 告警名称
level - Number 告警级别
device - Object 告警相关的设备
title - String 告警消息
status - Number 告警状态
recipient - Object 告警接收者
location - Object 告警位置
details - Object 告警详情

响应结果:

返回创建的告警的信息

{
    "id": String,
    "level": Number,
    "name": String,
    "device": Object,
    "title": String,
    "status": Number,
    "recipient": Object,    
    "location": Object, 
    "details": Object
}

错误码:

CODE MESSAGE NOTE
100401 Unauthorized 用户没有登录, 或身份没有认证
100403 Permission denied 禁止访问, 没有相应的权限
104001 Miss required parameter 缺失必选参数,请参考API文档

获取指定的告警信息

GET /alert/get

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 告警 ID

响应结果:

返回修改后的告警的信息

{
    "id": String,
    "level": Number,
    "name": String,
    "device": Object,
    "title": String,
    "status": Number,
    "recipient": Object,
    "location": Object, 
    "details": Object
}

修改告警属性

POST/alert/update

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 告警 ID
name true String 告警名称
level - Number 告警级别
device - Object 告警相关的设备
title - String 告警消息
status - Number 告警状态
recipient - Object 告警接收者
location - Object 告警位置
details - Object 告警详情

响应结果:

返回修改后的告警的信息

{
    "id": String,
    "level": Number,
    "name": String,
    "device": Object,
    "title": String,
    "status": Number,
    "recipient": Object,    
    "location": Object,   
    "details": Object
}

删除一个告警

POST /alert/del

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 告警 ID

响应结果:

返回删除的告警的信息

{
    "id": String,
    "level": Number,
    "name": String,
    "device": Object,
    "title": String,
    "status": Number,
    "recipient": Object,    
    "location": Object,   
    "details": Object
}

查询告警列表

GET /alert/list

请求参数:

NAME TYPE DEFAULT DESCRIPTION
offset Number 0 开始返回的记录的索引
limit Number 100 最多返回的记录数
order String asc 排序方式 (asc, desc)
orderBy String - 排序字段名
q String - 搜索条件字符串
did String - 设备 ID
key String - 产品编码

示例:

GET /alert/list

响应结果:

返回包含告警信息的列表

{
    "total": Number,
    "offset": Number,
    "limit": Number,
    "alerts": [{
        "id": String,
        "level": Number,
        "name": String,
        "device": Object,
        "title": String,
        "status": Number,
        "recipients": Object, 
        "location": Object,
        "details": Object
    }]
}

接收者

用来接收推送消息的一组用户

属性列表

NAME SORTABLE TYPE DESCRIPTION
id - ObjectId 任务 ID
name true String 名称
delay true Number 延时通知时间
principals - Object 负责人
users - Object 用户列表
description - String 简单描述
created true Date 创建时间,单位为毫秒
updated true Date 最后更新时间,单位为毫秒
ownerId - ObjectId 这条任务所属的账号

创建一个新的接收者

POST /recipient/add

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 接收者 ID

响应结果:

{
    "id": String,
    "name": String,
    "description", String,
    "created": Date,
    "updated": Date,
    "ownerId": String,
    "users": [{
        "id": String,
        "realname": String,
        "username": String
    }]
}

获取指定的接收者信息

GET /recipient/get

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 接收者 ID

响应结果:

返回修改后的接收者的信息

{
    "id": String,
    "name": String,
    "description", String,
    "created": Date,
    "updated": Date,
    "ownerId": String,
    "users": [{
        "id": String,
        "realname": String,
        "username": String
    }]    
}

修改接收者属性

POST /recipient/update

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 接收者 ID

响应结果:

{
    "id": String,
    "name": String,
    "description", String,
    "created": Date,
    "updated": Date,
    "ownerId": String,
    "users": [{
        "id": String,
        "realname": String,
        "username": String
    }]
}

删除一个接收者

POST /recipient/del

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 接收者 ID

响应结果:

返回删除的接收者的信息

{
    "id": String,
    "name": String,
    "description", String,
    "created": Date,
    "updated": Date,
    "ownerId": String,
    "users": [{
        "id": String,
        "realname": String,
        "username": String
    }]
}

查询接收者列表

GET /recipient/list

请求参数:

NAME TYPE DEFAULT DESCRIPTION
offset Number 0 开始返回的记录的索引
limit Number 100 最多返回的记录数
order String asc 排序方式 (asc, desc)
orderBy String - 排序字段名
q String - 过滤条件字符串

响应结果:

返回包含接收者信息的列表

{
    "total": Number,
    "recipients": [{
        "id": String,
        "name": String,
        "description", String,
        "created": Date,
        "updated": Date,
        "ownerId": String,
        "users": [{
            "id": String,
            "realname": String,
            "username": String
        }]
    }]
}

规则

规则是一系列条件,当条件被满足时会触发指定的活动 (如告警等)

属性列表

NAME SORTABLE TYPE DESCRIPTION
id - ObjectId 规则 ID
actions - Object 满足条件后要执行的操作
conditions - Object 条件列表,具体请参考 规则引擎 一文
created true Date 创建时间,单位为毫秒
description - String 规则简要描述
did true String 这个规则应用的设备的 ID
end true Number 结束时间,如果没有指定则为晚上 12 点整, 单位为秒
fact true String 相关的属性或事件的名称
isEnable true Boolean 是否启用
key true String 这个规则应用的产品的编码
name true String 规则名称, 只能由字母和数字组成
ownerId - ObjectId 这条规则所属的账号
period true Number 这个规则触发事件最小间隔, 单位为秒
recipient true ObjectId 接收者
start true Number 开始时间,如果没有指定则从 0 点开始, 单位为秒
type true String 规则类型,暂未使用
updated true Date 最后更新时间,单位为毫秒
  • 一个规则只能应用于一个产品,所以 key 是必需的
  • 如果 did 为空,表示这个规则应用于相关产品的所有设备
  • 在间隔时间内就算满足条件也只会执行一次动作或告警,主要是为了避免频繁告警

类型

type:

  • change 当指定属性的值发生改变
  • rule 执行指定的规则
  • event 当收到设备上报的指定名称的事件

因子

fact:

  • 当类型为 change 表示要检查的属性的名称
  • 当类型为 event 时表示要检查的事件的名称

沉默周期

period

  • 单位为秒
  • 在此间隔时间内不会重复执行操作方法

条件

表示要执行相关动作的条件

conditions:

{
    all|any: [ // 根节点
        { condition }, // 条件
        {
            all|any: [ // 嵌套条件
                { condition }
            ]
        }
    ]
}

condition:

{
    "operator": String,
    "path": String,
    "fact": String,  
    "value": Any
}
  • operator 操作符
    • equal (===)
    • notEqual (!==)
    • lessThan (<)
    • lessThanInclusive (<=)
    • greaterThan (>)
    • greaterThanInclusive (>=)
    • in (value 为数组)
    • notIn (value 为数组)
    • contains (value 为数组)
    • doesNotContain (value 为数组)
  • path 可选,对象属性名 (如果 fact 代表的值是一个对象)
  • fact 输入参数名称
  • value 比较值

操作

表示满足条件后将执行的动作

actions:

{
    email: String,
    webhook: String,
    wechat: String
}
  • webhook 执行 Web Hook, url 为要访问的 URL 地址
  • wechat 推送给指定的微信用户

创建一个新的规则

POST /rule/add

请求参数:

NAME REQUIRED TYPE DESCRIPTION
name true String 规则名称
type - String 规则类型
title true String 规则显示标题
key true String 相关的产品的编码
did - String 设备的 ID
interval - String 事件最小发送间隔
description - String 规则简要描述
isEnable - Boolean 是否启用
conditions - Object 条件列表

响应结果:

返回创建的规则的信息

{
    "id": String,
    "title": String,
    "name": String,
    "key": String,
    "did": String,
    "description": String,
    "isEnable": Boolean,
    "interval": Number,    
    "conditions": Object
}

获取指定的规则信息

GET /rule/get

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 规则 ID

响应结果:

返回修改后的规则的信息

{
    "id": String,
    "title": String,
    "name": String,
    "key": String,
    "did": String,
    "description": String,
    "isEnable": Boolean,
    "interval": Number,    
    "conditions": Object
}

修改规则属性

POST/rule/update

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true String 规则 ID
name - String 规则名称
type - String 规则类型
title - String 规则显示标题
key - String 相关的产品的编码
did - String 设备的 ID
interval - String 事件最小发送间隔
description - String 规则简要描述
isEnable - Boolean 是否启用
actions - Object 执行动作
conditions - Object 条件列表

响应结果:

返回修改后的规则的信息

{
    "id": String,
    "title": String,
    "name": String,
    "key": String,
    "did": String,
    "description": String,
    "isEnable": Boolean,
    "interval": Number,
    "actions": Object,
    "conditions": Object
}

删除一个规则

POST /rule/del

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 规则 ID

响应结果:

返回删除的规则的信息

{
    "id": String,
    "title": String,
    "name": String,
    "key": String,
    "did": String,
    "description": String,
    "isEnable": Boolean,
    "interval": Number,
    "actions": Object,
    "conditions": Object
}

错误码:

查询规则列表

查询系统已存在的所有规则,可以指定查询和过滤条件。

GET /rule/list

请求参数:

NAME TYPE DEFAULT DESCRIPTION
offset Number 0 开始返回的记录的索引
limit Number 100 最多返回的记录数
order String asc 排序方式 (asc, desc)
orderBy String - 排序字段名
q String - 过滤条件字符串

响应结果:

返回包含规则信息的列表

{
    "total": Number,
    "offset": Number,
    "limit": Number,
    "rules": [{
        "id": String,
        "title": String,
        "name": String,
        "key": String,
        "did": String,
        "description": String,
        "period": Number,
        "interval": Number,
        "actions": Object,
        "conditions": Object
    }]
}

任务

定时计划任务

属性列表

NAME SORTABLE TYPE DESCRIPTION
id - ObjectId 任务 ID
name true String 任务名称, 只能由字母和数字组成
type true String 任务类型,暂未使用
actions - Object 满足条件后要执行的操作
isEnable true Boolean 是否启用
created true Date 创建时间,单位为毫秒
updated true Date 最后更新时间,单位为毫秒
ownerId - ObjectId 这条任务所属的账号

创建一个新的任务

POST /task/add

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 任务 ID

响应结果:

{

}

获取指定的任务信息

GET /task/get

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 任务 ID

响应结果:

返回修改后的规则的信息

{

}

修改任务属性

POST /task/update

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 任务 ID

响应结果:

{

}

删除一个任务

POST /task/del

请求参数:

NAME REQUIRED TYPE DESCRIPTION
id true ObjectId 任务 ID

响应结果:

返回删除的任务的信息

查询任务列表

GET /task/list

请求参数:

NAME TYPE DEFAULT DESCRIPTION
offset Number 0 开始返回的记录的索引
limit Number 100 最多返回的记录数
order String asc 排序方式 (asc, desc)
orderBy String - 排序字段名
q String - 过滤条件字符串

响应结果:

返回包含任务信息的列表

{
    "tasks": [{

    }]
}
image-modal