//======================================================================================== // @file IntelliAlmMsg.proto // @brief 智能告警服务相关消息及结构 // @author yikenan //======================================================================================== syntax="proto2"; package iot_idl; // 缩写说明: // Intelli : Intelligent // Alm : Alarm // IA : Intelligent Alarm // SEPR: Separate // S2C : Server To Client // C2S : Client To Server //======================================================================================== // 消息类型枚举 //======================================================================================== enum enIntelliAlmMsgType { //==================================================================================== // 服务端(S)发给客户端(C,比如告警窗)的所有CMbMessage,Para1是AS的DomainID,Para2是消息序号 MT_IA_S2C_SEQNO = 1; // 服务端向客户端发送当前序号,本消息自身不占用(不增加)序号 MT_IA_C2S_SEQNO_REQ = 2; // 客户端向服务端请求当前序号 MT_IA_S2C_ALL = 3; // 服务端向客户端发送全部告警 MT_IA_C2S_ALL_REQ = 4; // 客户端请求全部告警 MT_IA_C2S_RT_REQ = 5; // 客户端向服务端请求重传消息, // Para1是客户端收到的最后一条有效消息序号 // 服务端从请求序号的下一条开始重传 MT_IA_S2C_ADD = 6; // 服务端向客户端发送添加告警 MT_IA_S2C_DEL = 7; // 服务端向客户端发送删除告警,逻辑状态切换为 IALS_DELETED MT_IA_C2S_DEL_REQ = 8; // 客户端请求删除告警 MT_IA_S2C_BROKEN = 9; // 服务端向客户端通知告警不完整,逻辑状态切换为 IALS_BROKEN MT_IA_S2C_RELEASE = 10; // 服务端向客户端发送释放告警,释放内存 MT_IA_C2S_SEPR_REQ = 11; // 将原始告警从原来的智能告警中分离出来,组成新的一条智能告警 MT_IA_C2S_MERGE_REQ = 12; // 将多条原始告警合并为一条智能告警 } // 单条智能告警的逻辑状态 enum enIntelliAlmLogicState { IALS_NORMAL = 1; // 正常 IALS_DELETED = 2; // 已删除 // 不完整的,该智能告警包含的原始告警有至少一条在原始告警端内存中不存在,可能性如下: // 1、当智能告警处于 IALS_DELETED 状态时,其原始告警允许被释放, // 原始告警服务端按先入先出原则从缓存队列释放允许释放的告警, // 智能告警端收到原始告警已释放的通知后,将其所属的智能告警标记为 IALS_BROKEN 状态。 // 当该智能告警的全部原始告警都释放后,释放该智能告警条目。 // 2、异常情况,比如服务端异常退出,缓存文件被人为删除、修改等。 // 在告警窗上建议的显示方式:不显示 或 显示为“详细内容请查询历史事件” IALS_BROKEN = 3; } //======================================================================================== // 服务端之间同步,以及与客户端的交互消息结构 //======================================================================================== // 单个智能告警信息 message SIntelliAlmInfo { required enIntelliAlmLogicState logic_state =1; //客户端上的逻辑状态 required int32 domain_id =2; //域ID required int32 priority =3; //告警优先级 required int64 time_stamp =4; //时标(RFC1305、POSIX时标标准) required string uuid_base64 =5; //本条智能告警的唯一标识,base64编码 required string content =6; //告警内容 optional string disposal_plan =7; //处置预案 //关联的 原始告警 的uuid,base64编码,其中第一个可被认为是主告警 repeated string raw_alm_uuid =8; } // 服务端通知客户端增加告警,或同步全部告警,均使用本消息结构,使用消息类型区分 message SIntelliAlmAdd { // 序号使用消息总线中的可选参数,服务端与接口库内自己维护,无需应用管理 repeated SIntelliAlmInfo alm_info =1; //智能告警信息序列 } // 客户端向服务端请求删除告警、服务端回复、向其他客户端同步,逻辑状态切换为 IALS_DELETED // 不要动原始告警,原始告警端有消息通知 message SIntelliAlmDel { //若客户端批量删除不同域的告警,应当先行分组 required int32 domain_id =1; //域ID,本消息中的告警都应属于此域 repeated string uuid_base64 =2; //需删除的 智能告警 的uuid } // 服务端向客户端通知智能告警不完整,逻辑状态切换为 IALS_BROKEN message SIntelliAlmBroken { repeated string uuid_base64 =1; //不完整的 智能告警 的uuid } // 服务端向客户端通知释放智能告警,释放相应智能告警记录的内存 // 不要动原始告警,原始告警端有消息通知 message SIntelliAlmRelease { repeated string uuid_base64 =1; //需释放的 智能告警 的uuid } // 客户端向服务端请求 将原始告警从其原智能告警中分离 message SIntelliAlmSepr { required int32 domain_id =1; //域ID,被分离的告警都属于此域 // 需分离的 原始告警 的uuid,base64编码 // 这些原始告警,应属于同一条智能告警,否则服务端将忽略本次操作 repeated string raw_alm_uuid =2; } // 客户端向服务端请求 将多条原始告警合并为一条智能告警 message SIntelliAlmMerge { required int32 domain_id =1; //域ID,合并的告警都属于此域 // 需合并 原始告警 的uuid,base64编码 // 这些原始告警不应属于任何智能告警,否则服务端将忽略本次操作 repeated string raw_alm_uuid =2; }