Я работаю над созданием системы типа очереди заданий, где Джобсы могут быть добавлены в центральную очередь. Затем процессор считывает задания очереди, запускает их и где-то сохраняет результаты.Должны ли параметры ввода включаться в результаты в очередь заданий/задач?
Каждое задание содержит список задач для выполнения в порядке и параметры, используемые при выполнении задания и задач.
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; }
}
процессоров будут возвращать результаты для работ и связанных с ними задач, которые идентифицируют, если работа и задача успешно и включают в себя сообщение с описанием результатов.
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
.
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
}
Но с этим не существует прямая связь между задачей и 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; }
}
Как обычно такие системы работают? Это плохой идеал/запах кода, который возвращает копию ввода с результатами?
Ах да, хорошая точка. Это определенно «имеет» отношения. Что вы думаете о моем обновлении выше, касающемся исключения отдельных классов результатов и объединения результатов в классы Job и Task? –
@EricAnastas Честно говоря, я бы удалил ваш новый контент, и я бы добавил новый вопрос. Вы не можете расширять вопрос сверхурочно и преобразовывать вопросы и ответы в чат в режиме реального времени ............ –
@EricAnastas Вы задали кое-что очень конкретное, и я ответил на него. Если это было полезно для вас, вы должны пометить мой ответ как принятый и скопировать другой вопрос как часть нового вопроса –