1. 概述
预警模块使用 SPI 机制管理种子数据。新增业务预警需要实现 WarnSeedInitial<T> 接口并注册为 Spring Bean,调用初始化接口后自动同步入库。
2. 种子数据接口
// 位于 sys-api 层
public interface WarnSeedInitial<T> {
List<T> getSeedData();
}
所有实现此接口的 Spring Bean 会被 WarnInitService 自动收集。
3. 支持的种子数据类型
| 类型 | 说明 | 示例实现 |
|---|---|---|
WarnChannel |
消息渠道 | DemoWarnChannelSeedInitial |
WarnCategory |
业务分类 | DemoWarnCategorySeedInitial |
WarnNodeSeedDTO |
预警节点 + 策略配置 | DemoWarnNodeSeedInitial |
WarnTemplateSeedDTO |
预警模板 | DemoWarnTemplateSeedInitial |
4. 新增业务预警步骤
第一步:创建渠道种子数据(如已有则跳过)
@Component
public class MyWarnChannelSeedInitial implements WarnSeedInitial<WarnChannel> {
@Override
public List<WarnChannel> getSeedData() {
return List.of(
new WarnChannel()
.setCode("sms")
.setName("短信")
.setIsEnabled("1")
);
}
}
第二步:创建业务分类种子数据
@Component
public class MyWarnCategorySeedInitial implements WarnSeedInitial<WarnCategory> {
@Override
public List<WarnCategory> getSeedData() {
return List.of(
new WarnCategory()
.setCode("myBusinessCategory")
.setName("我的业务分类")
);
}
}
第三步:创建预警节点种子数据
WarnNodeSeedDTO 同时定义了节点和对应的策略配置:
@Component
public class MyWarnNodeSeedInitial implements WarnSeedInitial<WarnNodeSeedDTO> {
@Override
public List<WarnNodeSeedDTO> getSeedData() {
return List.of(
new WarnNodeSeedDTO() {{
setCategory("myBusinessCategory"); // 关联业务分类 code
setCode("myWarnNode"); // 节点编码(唯一)
setName("我的预警节点"); // 节点名称
setClassName("com.xxx.MyWarnProcessor"); // 处理器全类名(用于定时调度)
setIntervalMinutes(5); // 检测间隔(分钟)
setRepeatedWarningType("TIME_PERIOD"); // 防重复类型
setProhibitRepeatedCycle(30); // 禁重复周期(分钟)
}}
);
}
}
第四步:创建预警模板种子数据
@Component
public class MyWarnTemplateSeedInitial implements WarnSeedInitial<WarnTemplateSeedDTO> {
@Override
public List<WarnTemplateSeedDTO> getSeedData() {
return List.of(
new WarnTemplateSeedDTO() {{
setCode("myWarnTemplate"); // 模板编码(唯一)
setName("我的预警模板"); // 模板名称
setNode("myWarnNode"); // 关联节点 code
setChannel("sms"); // 渠道编码
setTitle("预警通知"); // 消息标题
setContent("您有一条新的预警:{content}"); // 消息内容(支持占位符)
}}
);
}
}
第五步:调用初始化接口
POST /sys/v1/warn/init
系统自动完成:
- 按 code 去重同步所有种子数据
- 创建策略(默认禁用状态)
- 为每个策略自动创建 high/middle/low 三级等级
- 创建 PowerJob 定时调度任务
5. 初始化后的配置工作
初始化完成后,需要在管理界面完成:
- 启用策略:策略默认禁用,需手动启用
- 配置推送方式:为每个策略等级选择推送渠道
- 配置接收人:为每个策略等级添加接收人
- 调整定时:根据需要修改检测间隔
6. 种子数据同步规则
| 规则 | 说明 |
|---|---|
| 按 code 去重 | 已存在的 code 不会重复创建 |
| 策略默认禁用 | 新策略 isEnabled = 0 |
| 策略等级自动创建 | 每个新策略自动创建 3 个等级 |
| 调度任务自动注册 | 有 className 的节点自动创建 PowerJob 任务 |
| 幂等调用 | 多次调用 init 不会产生重复数据 |
7. 枚举值参考
| 枚举 | Code | 名称 |
|---|---|---|
| 消息渠道 | sms |
短信 |
| 消息渠道 | email |
邮箱 |
| 消息渠道 | wecom |
企业微信 |
| 消息渠道 | dingtalk |
钉钉 |
| 消息渠道 | innerMessage |
站内信 |
| 消息渠道 | app |
APP |
| 预警等级 | high |
高 |
| 预警等级 | middle |
中 |
| 预警等级 | low |
低 |