输入选项是否应该包含在 job/task 队列中的结果中?
Should the input options be included with the results in a job/task queue?
我正在开发一个作业队列类型系统,可以将作业添加到中央队列。处理器然后读取队列的作业,运行 它们,并将结果存储在某处。
每个作业都包含要按顺序执行的任务列表以及在 运行设置作业和任务时要使用的选项。
public class Job
{
public Guid JobId { get; set; }
public string Name { get; set; }
public DateTime Created { get; set; }
public string CreatedBy { get; set; }
IDictionary<string, string> Options { get; set; }
public IList<Task> Tasks { get; set; }
}
public class Task
{
public string Command { get; set; }
IDictionary<string, string> Options { get; set; }
}
处理器将 return 作业和相关任务的结果,这些结果确定作业和任务是否成功,并包含一条描述结果的消息。
public class JobResult
{
public Guid JobId { get; set; }
public bool Succeeded { get; set; }
public string StatusMessage { get; set; }
IList<TaskResult> TaskResults { get; set; }
}
public class TaskResult
{
public bool Succeeded { get; set; }
public string StatusMessage { get; set; }
}
然而,如果我要创建某种显示作业结果的 GUI 或报告,我还想显示作业本身的详细信息和选项,而不仅仅是结果。我想这样做的一种方法是将对 Job
的引用添加到 JobResult
class.
public class JobResult
{
public Guid JobId { get; set; }
public bool Succeeded { get; set; }
public string StatusMessage { get; set; }
IList<TaskResult> TaskResults { get; set; }
public Job Job {get; set;} <-- Add Job details to JobResult
}
然而,除了它们在各自列表中的位置之外,Task 和 TaskResult 之间没有直接关联。
或者,JobResult 和 Task 可以简单地继承自 Job 和 Task,分别添加结果状态属性。
public class JobResult: Job
{
public bool Succeeded { get; set; }
public string StatusMessage { get; set; }
}
public class TaskResult: Task
{
public bool Succeeded { get; set; }
public string StatusMessage { get; set; }
}
这样的系统通常如何工作? idea/code 将输入的副本与结果一起 return 是不是很糟糕?
我投票赞成将 JobResult
与 Job
相关联,因为 Job
不是 JobResult
,反之亦然。
一个JobResult
有一个关联的Job
,在面向对象的编程世界里,一个有一个关系表示composition.
我正在开发一个作业队列类型系统,可以将作业添加到中央队列。处理器然后读取队列的作业,运行 它们,并将结果存储在某处。
每个作业都包含要按顺序执行的任务列表以及在 运行设置作业和任务时要使用的选项。
public class Job
{
public Guid JobId { get; set; }
public string Name { get; set; }
public DateTime Created { get; set; }
public string CreatedBy { get; set; }
IDictionary<string, string> Options { get; set; }
public IList<Task> Tasks { get; set; }
}
public class Task
{
public string Command { get; set; }
IDictionary<string, string> Options { get; set; }
}
处理器将 return 作业和相关任务的结果,这些结果确定作业和任务是否成功,并包含一条描述结果的消息。
public class JobResult
{
public Guid JobId { get; set; }
public bool Succeeded { get; set; }
public string StatusMessage { get; set; }
IList<TaskResult> TaskResults { get; set; }
}
public class TaskResult
{
public bool Succeeded { get; set; }
public string StatusMessage { get; set; }
}
然而,如果我要创建某种显示作业结果的 GUI 或报告,我还想显示作业本身的详细信息和选项,而不仅仅是结果。我想这样做的一种方法是将对 Job
的引用添加到 JobResult
class.
public class JobResult
{
public Guid JobId { get; set; }
public bool Succeeded { get; set; }
public string StatusMessage { get; set; }
IList<TaskResult> TaskResults { get; set; }
public Job Job {get; set;} <-- Add Job details to JobResult
}
然而,除了它们在各自列表中的位置之外,Task 和 TaskResult 之间没有直接关联。
或者,JobResult 和 Task 可以简单地继承自 Job 和 Task,分别添加结果状态属性。
public class JobResult: Job
{
public bool Succeeded { get; set; }
public string StatusMessage { get; set; }
}
public class TaskResult: Task
{
public bool Succeeded { get; set; }
public string StatusMessage { get; set; }
}
这样的系统通常如何工作? idea/code 将输入的副本与结果一起 return 是不是很糟糕?
我投票赞成将 JobResult
与 Job
相关联,因为 Job
不是 JobResult
,反之亦然。
一个JobResult
有一个关联的Job
,在面向对象的编程世界里,一个有一个关系表示composition.