- 由 朱康健创建, 最后修改于五月 07, 2025
针对外部需求,数据预警在SmartbiX.SDK 项目下开放了部分接口供使用
一、基本使用示例
展开源码
package smartbix.test.alarm; import static org.junit.Assert.assertTrue; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import smartbi.sdk.ClientConnector; import smartbix.sdk.alarm.bean.IAlarmDTO; import smartbix.sdk.alarm.bean.IAlarmLogDTO; import smartbix.sdk.alarm.bean.IAlarmLogError; public class AlarmSDKDemo { public static void main(String[] args) { // 创建连接 String url = "http://localhost:8080/smartbi"; ClientConnector client = new ClientConnector(url); client.open("admin", "admin"); // 创建预警服务 AlarmService alarmService = new AlarmService(client); // 获取所有预警 List<IAlarmDTO> alarms = alarmService.getAllAlarms(); IAlarmDTO alarm = alarms.stream() .filter(a -> "ed1d4df5872d14d8869f952e5493e913".equals(a.getAlarmId())).findFirst().get(); System.out.println(alarm.getAlarmId()); // 分页获取预警 alarms = alarmService.getAlarms(100, 1000); System.out.println((alarms.size() >= 18)); alarm = alarms.stream() .filter(a -> "ed1d4df5872d14d8869f952e5493e913".equals(a.getAlarmId())).findFirst().get(); // 通过资源id获取预警 alarms = alarmService.getAlarmsByResourceId("b511005847cd8a6fa6bc22b3dad6181c"); System.out.println((alarms.size() >= 12)); Set<String> srcResourceIds = alarms.stream().map(IAlarmDTO::getSrcResourceId).collect(Collectors.toSet()); assertTrue(srcResourceIds.size() == 1); alarm = alarms.stream() .filter(a -> "ed1d4df5872d14d8869f952e5493e913".equals(a.getAlarmId())).findFirst().get(); // 通过预警id获取日志 List<IAlarmLogDTO> logs = alarmService.getAlarmLogs("I8a74290101940bea0bea0bd901940c1b79c70016"); System.out.println(logs.size() >= 141); Set<String> alarmIds = logs.stream().map(IAlarmLogDTO::getAlarmId).collect(Collectors.toSet()); System.out.println(alarmIds.size() == 1); IAlarmLogDTO log = logs.stream() .filter(l -> "I8a74eb5001942c802c807e9e0194306c3c4e2ae0".equals(l.getLogId())).findFirst().get(); System.out.println(log.getLogId()); // 通过预警id获取日志-分页 logs = alarmService.getAlarmLogs("I8a74290101940bea0bea0bd901940c1b79c70016", 130, 1000); System.out.println(logs.size() >= 11); alarmIds = logs.stream().map(IAlarmLogDTO::getAlarmId).collect(Collectors.toSet()); System.out.println(alarmIds.size() == 1); log = logs.stream() .filter(l -> "I8a74eb5001942c802c807e9e0194306c3c4e2ae0".equals(l.getLogId())).findFirst().get(); // 通过预警id获取渠道明细 String detail = alarmService.getLogTriggerDetail("I8a74290c01962803280329b301962d4f8a741893"); System.out.println(detail); // 通过预警id获取错误信息 IAlarmLogError error = alarmService.getLogError("I8a74290c01962803280329b301962d4f8a741893"); // 渠道错误信息 System.out.println(error.getChannelErrorMessages()); // 渠道执行过程中产生的堆栈异常 System.out.println(error.getChannelStacktraces()); // 获取本次预警的错误信息(一般是预警执行抛出了异常) System.out.println(error.getErrorMessage()); // 获取本次预警的错误信息(一般是预警执行抛出了异常) System.out.println(error.getStacktrace()); // 执行数据预警 alarmService.execute('ed1d4df5872d14d8869f952e5493e913'); } }
二、SDK 接口方法说明
展开源码
/** * 获取所有的预警 * @return 所有的预警 */ public List<IAlarmDTO> getAllAlarms(); /** * 查询预警信列表 * @param first 起始行数 从0开始 * @param max 最大多少条件结果 * @return 预警信息列表 */ public List<IAlarmDTO> getAlarms(int first, int max); /** * 通过资源id获取预警 * @param resourceId 资源id * @return 通过资源id获取预警 */ public List<IAlarmDTO> getAlarmsByResourceId(String resourceId); /** * 通过预警id获取日志 * @param alarmId 预警id * @return 预警执行记录 */ public List<IAlarmLogDTO> getAlarmLogs(String alarmId); /** * 通过预警id获取日志-分页模式 * @param alarmId 预警id * @param first 起始行号,从0开始 * @param max 读取的最大记录行数 * @return 预警执行记录 */ public List<IAlarmLogDTO> getAlarmLogs(String alarmId, int first, int max); /** * 获取日志触发详情 * @param logId 日志id * @return 日志扩展属性 */ public String getLogTriggerDetail(String logId); /** * 获取日志错误信息 * @param logId 日志id * @return 日志错误信息 */ public IAlarmLogError getLogError(String logId) /** * 执行预警 * @param alarmId 预警id */ public void execute(String alarmId)
三、预警封装Bean接口说明
1、 IAlarmDTO
展开源码
/** * 预警信息DTO * */ public interface IAlarmDTO { /** * 获取预警在当前查询中对应的数据行号 * @return 预警在当前查询中对应的数据行号 */ int getRowNumber(); /** * 获取预警ID * @return 预警ID */ String getAlarmId(); /** * {@inheritDoc} */ /** * 获取预警来源资源ID(仪表盘、透视即席等) * @return 预警来源资源ID */ String getSrcResourceId(); /** * 获取预警名称 * @return 预警名称 */ String getAlarmName(); /** * 获取预警来源资源的名称 * @return 预警来源资源的名称 */ String getSrcResourceName(); /** * 获取触发器描述 * @return 触发器描述 */ String getDetectionDesc(); /** * 获取预警启用状态 * @return 启用 状态 */ AlarmEnableStatus getEnableStatus(); /** * 获取预警创建用户名称 * @return 预警创建用户名称 */ String getCreateUserName(); }
2、IAlarmLogDTO
展开源码
/** * 预警日志DTO * */ public interface IAlarmLogDTO { /** * 获取预警日志ID * @return 预警日志ID */ String getLogId(); /** * {@inheritDoc} */ /** * 获取预警ID * @return 预警ID */ String getAlarmId(); /** * 获取预警执行开始时间 * @return 预警执行开始时间 */ String getStartTime(); /** * 获取预警执行结束时间 * @return 预警执行结束时间 */ String getEndTime(); /** * 获取预警执行结果状态 * @return 预警执行结果状态 */ AlarmLogStatus getStatus(); /** * 获取执行时的数据范围过滤条件描述 * @return 执行时的数据范围过滤条件描述 */ String getDatatRangeCondition(); /** * 获取触发的数据行数 * @return 触发的数据行数 */ Integer getDataCount(); /** * 是否触发了推送 * @return 是否触发了推送 */ boolean isTrigger(); /** * 是否有触发详情 * @return 是否有触发详情 */ boolean isHasTriggerDetail(); }
3、IAlarmLogError
展开源码
/** * 日志错误信息 * */ public interface IAlarmLogError { /** * 获取异常信息 * @return 异常信息 */ String getErrorMessage(); /** * 获取异常堆栈 * @return 异常堆栈 */ String getStacktrace(); /** * 获取推送渠道异常信息 * @return 推送渠道异常信息 */ String getChannelErrorMessages(); /** * 获取推送渠道异常堆栈 * @return 推送推送渠道异常堆栈 */ String getChannelStacktraces(); }
- 无标签