2016-08-12 9 views
0

Я работаю над созданием системы типа очереди заданий, где Джобсы могут быть добавлены в центральную очередь. Затем процессор считывает задания очереди, запускает их и где-то сохраняет результаты.Должны ли параметры ввода включаться в результаты в очередь заданий/задач?

Каждое задание содержит список задач для выполнения в порядке и параметры, используемые при выполнении задания и задач.

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

Как обычно такие системы работают? Это плохой идеал/запах кода, который возвращает копию ввода с результатами?

ответ

0

Я голосую за ассоциирование JobResult с Job, потому что Job не является JobResult и наоборот.

JobResultимеет ассоциированные Job, так и в объектно-ориентированном мире программирования имеет отношение означает composition.

+0

Ах да, хорошая точка. Это определенно «имеет» отношения. Что вы думаете о моем обновлении выше, касающемся исключения отдельных классов результатов и объединения результатов в классы Job и Task? –

+0

@EricAnastas Честно говоря, я бы удалил ваш новый контент, и я бы добавил новый вопрос. Вы не можете расширять вопрос сверхурочно и преобразовывать вопросы и ответы в чат в режиме реального времени ............ –

+0

@EricAnastas Вы задали кое-что очень конкретное, и я ответил на него. Если это было полезно для вас, вы должны пометить мой ответ как принятый и скопировать другой вопрос как часть нового вопроса –

 Смежные вопросы

  • Нет связанных вопросов^_^