Update Alert Rule¶
更新告警规则。所有请求参数(Body)中包含的参数,只要不是null,都可以被更新。需要进行校验的字段有:模型ID(modelId)、测点(measurepointId)、告警级别(severityId)、告警内容(contentId)、查询范围(scope)。
请求格式¶
POST https://{apigw-address}/event-service/v2.1/alert-rules?action=update
请求参数(URI)¶
名称  | 
位置(Path/Query)  | 
必需/可选  | 
数据类型  | 
描述  | 
|---|---|---|---|---|
orgId  | 
Query  | 
必需  | 
String  | 
资产所属的组织ID。如何获取orgId信息>>  | 
isPatchUpdate  | 
Query  | 
必需  | 
Boolean  | 
  | 
请求参数(Body)¶
备注
以下非必须字段中,必须提供 measurepointId 或 deviceStatus 作为告警触发条件。
- isPatchUpdate = True 时,以下表格的 必需/可选 栏不适用:此时,只有 ruleId 为必选,其他参数都是可选
名称  | 
必需/可选  | 
数据类型  | 
描述  | 
|---|---|---|---|
ruleId  | 
必需  | 
String  | 
告警规则编号,由用户指定,是用于定位需要更新的告警规则的唯一标识。  | 
ruleDesc  | 
必需  | 
StringI18n  | 
国际化告警描述,只支持全量更新。结构请见 国际化名称结构体>>  | 
modelId  | 
必需  | 
String  | 
规则适用的模型。如何获取modelId信息>>  | 
measurepointId  | 
可选  | 
String  | 
资产测点。如何获取测点(pointId)信息>>  | 
deviceStatus  | 
可选  | 
String  | 
设备状态,如“offline”。详见 设置由设备状态触发的告警  | 
condition  | 
必需  | 
String  | 
类查询表达式。如“${temperature} = 19”表示“测点temperature的值等于19”。使用“/”表达层级关系,如“${pointA/att1} = 18”表示“测点A的att1属性值为18”。目前只支持最多向下一层。如何使用查询表达式>>  | 
severityId  | 
必需  | 
String  | 
告警级别编号  | 
contentId  | 
必需  | 
String  | 
告警内容编号  | 
tags  | 
可选  | 
Map  | 
规则标签,只支持全量更新。详情见 标签的作用与表示方法>>  | 
scope  | 
必需  | 
Scope结构体数组  | 
指定资产树上的节点来表明告警规则的作用域。见 Scope结构体>>  | 
isEnabled  | 
可选  | 
Boolean  | 
是否启用,默认启用(true)  | 
triggeringDelayTimer  | 
可选  | 
Integer  | 
延后告警触发时间。单位为秒,范围[60 - 10800]。当发生匹配告警规则的异常状况,且该状况在所设定的时间内仍未恢复正常时,系统才会产生告警。若设为0则表示立即触发告警。详见 教程:设置异常持续一段时间后触发的告警>>  | 
AssetNode结构体  ¶
名称  | 
必需/可选  | 
数据类型  | 
描述  | 
|---|---|---|---|
treeId  | 
必需  | 
String  | 
资产树ID。若为“all”,则这是一个特殊的节点,代表组织下的全局。  | 
assetId  | 
必需  | 
String  | 
资产ID。如何获取Asset ID信息>>  | 
示例¶
请求示例¶
url: https://{apigw-address}/event-service/v2.1/alert-rules?action=update&orgId=yourOrgId&isPatchUpdate=false
method: POST
requestBody:
{
    "alertRule": {
        "ruleId": "user BID",
        "ruleDesc": {
      "defaultValue": "Grid is connected from converter",
            "i18nValue": {
                "en_US": "Grid is connected from converter",
                "zh_CN": "电网由变频器连接"
            }
        },
        "modelId": "EnOS_Solar_CombinerBox",
        "measurepointId": "CBX.BranchStateAttr",
        "condition": "${CBX.BranchStateAttr} = 18",
        "severityId": "WARN",
        "contentId": "planetTemperature",
        "tags": {
            "key1": "v1"
        },
        "scope": [{
            "treeId": "ptde66nd",
            "assetId": "FbFy8qyz"
        }],
        "isEenabled": true
     }
}
返回示例¶
{
    "code": 0,
    "msg": "OK",
    "requestId": "4873095e-621d-4cfd-bc2c-edb520f574ea",
    "data": null
}
Java SDK调用示例¶
public void testUpdateAlertRule() {
    private static String accessKey = "yourAppAccessKey";
    private static String secretKey = "yourAppSecretKey";
    private static String orgId = "yourOrgId";
    private static String url = "https://{apigw-address}";
    UpdateAlertRuleRequest request = new UpdateAlertRuleRequest();
    request.setOrgId(orgId);
    request.setRuleId("yourRuleID");
    Map < String, String > map = new HashMap < > ();
    map.put("yourTagKey", "yourTagValue");
    request.setTags(map);
    request.setIsPatchUpdate(true);
    try {
        UpdateAlertRuleResponse response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
            .url(url)
            .getResponse(request, UpdateAlertRuleResponse.class);
        System.out.println(response);
    } catch (Exception e) {
        System.out.print(e);
    }
}