针对外部需求,数据预警在SmartbiX.SDK 项目下开放了部分接口供使用
一、基本使用示例
代码块 |
---|
language | java |
---|
linenumbers | true |
---|
collapse | true |
---|
|
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
代码块 |
---|
|
package smartbix.sdk.alarm.bean;
/**
* 预警信息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
代码块 |
---|
|
package smartbix.sdk.alarm.bean;
/**
* 预警日志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 - 日志错误信息
代码块 |
---|
|
package smartbix.sdk.alarm.bean;
/**
* 日志错误信息
*
*/
public interface IAlarmLogError {
/**
* 获取异常信息
* @return 异常信息
*/
String getErrorMessage();
/**
* 获取异常堆栈
* @return 异常堆栈
*/
String getStacktrace();
/**
* 获取推送渠道异常信息
* @return 推送渠道异常信息
*/
String getChannelErrorMessages();
/**
* 获取推送渠道异常堆栈
* @return 推送推送渠道异常堆栈
*/
String getChannelStacktraces();
}
|
四、数据预警状态说明
1、AlarmEnableStatus - 预警启用状态
代码块 |
---|
|
package smartbix.sdk.alarm.util;
/**
* 预警启用状态
*/
public enum AlarmEnableStatus {
/**
* 启用
*/
ENABLED,
/**
* 禁用
*/
DISABLED
}
|
2、AlarmLogStatus - 预警日志状态
代码块 |
---|
|
package smartbix.sdk.alarm.util;
/**
* 预警日志状态
*/
public enum AlarmLogStatus {
/**
* 成功
*/
SUCCESS,
/**
* 失败
*/
FAILED;
}
|