页面树结构
转至元数据结尾
转至元数据起始

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

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;
}


  • 无标签