2016-08-12 36 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はそれぞれジョブとタスクから結果ステータスプロパティを追加するだけで継承できます。

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

JobJobResultではなく、その逆もあるので、Jobには、と関連付けて投票します。

JobResultは、関連Jobを有しており、オブジェクト指向プログラミングの世界では、関係compositionを意味しています。

+0

ああ、良い点です。それは間違いなく「関係あり」です。上記の私の更新について、別々の結果クラスを省略し、結果をジョブクラスとタスククラスに組み合わせることについて、あなたはどう思いますか? –

+0

@EricAnastas正に、私はあなたの新しいコンテンツを削除し、私は新しい質問を追加します。時間外で質問を拡大したり、Q&Aをリアルタイムチャットに変換することはできません。............ –

+0

@EricAnastasあなたは何かを非常に具体的に尋ねました。私はそれに答えました。それがあなたにとって便利だったら、私の答えに受け入れられたものをマークし、新しい質問体の一部として他の質問をコピー・ペーストしてください –

関連する問題