You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.9 KiB
97 lines
2.9 KiB
using X1.Domain.Entities.TestCase;
|
|
using X1.Domain.Events;
|
|
using X1.Domain.Models;
|
|
|
|
namespace X1.Application.Features.TaskExecution.Events.NodeExecutionEvents;
|
|
|
|
/// <summary>
|
|
/// 节点执行事件基类
|
|
/// 提供通用的事件属性和工厂方法,减少重复代码
|
|
/// </summary>
|
|
public abstract class BaseNodeExecutionEvent : INodeExecutionEvent
|
|
{
|
|
/// <summary>
|
|
/// 事件ID
|
|
/// </summary>
|
|
public string EventId { get; set; } = Guid.NewGuid().ToString();
|
|
|
|
/// <summary>
|
|
/// 任务执行ID
|
|
/// </summary>
|
|
public string TaskExecutionId { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// 执行人/执行终端ID
|
|
/// </summary>
|
|
public string ExecutorId { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// 蜂窝设备运行时编码
|
|
/// </summary>
|
|
public string RuntimeCode { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// 测试场景编码
|
|
/// </summary>
|
|
public string ScenarioCode { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// 测试场景ID
|
|
/// </summary>
|
|
public string ScenarioId { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// 测试用例流程名称
|
|
/// </summary>
|
|
public string FlowName { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// 测试用例流程ID
|
|
/// </summary>
|
|
public string FlowId { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// 设备编码(来自TestScenarioTask)
|
|
/// </summary>
|
|
public string DeviceCode { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// 终端设备集合
|
|
/// </summary>
|
|
public IReadOnlyList<TerminalDeviceDto> TerminalDevices { get; set; } = new List<TerminalDeviceDto>();
|
|
|
|
/// <summary>
|
|
/// 事件时间戳
|
|
/// </summary>
|
|
public DateTime Timestamp { get; set; } = DateTime.UtcNow;
|
|
|
|
/// <summary>
|
|
/// 下一个节点信息
|
|
/// </summary>
|
|
public NextNodeInfo NextNodeInfo { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// 静态工厂方法:从 NodeExecutionStartedEvent 创建具体事件实例
|
|
/// </summary>
|
|
/// <typeparam name="T">具体的事件类型</typeparam>
|
|
/// <param name="notification">原始事件通知</param>
|
|
/// <returns>具体事件实例</returns>
|
|
public static T CreateFrom<T>(NodeExecutionStartedEvent notification) where T : BaseNodeExecutionEvent, new()
|
|
{
|
|
return new T
|
|
{
|
|
EventId = Guid.NewGuid().ToString(),
|
|
TaskExecutionId = notification.TaskExecutionId,
|
|
ExecutorId = notification.ExecutorId,
|
|
RuntimeCode = notification.RuntimeCode,
|
|
ScenarioCode = notification.ScenarioCode,
|
|
ScenarioId = notification.ScenarioId,
|
|
FlowName = notification.FlowName,
|
|
FlowId = notification.FlowId,
|
|
DeviceCode = notification.DeviceCode,
|
|
TerminalDevices = notification.TerminalDevices,
|
|
NextNodeInfo = notification.NextNodeInfo,
|
|
Timestamp = DateTime.UtcNow
|
|
};
|
|
}
|
|
}
|
|
|