针对外部需求,数据预警在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)