저는 작업이 중앙 대기열에 추가 될 수있는 작업 대기열 유형 시스템을 개발하기 위해 노력하고 있습니다. 그런 다음 프로세서는 대기열의 작업을 읽고 실행하고 어딘가에 결과를 저장합니다.작업/작업 큐에 입력 옵션을 결과와 함께 포함해야합니까?
각 작업에는 순서대로 수행 할 작업 목록과 작업 및 작업을 실행할 때 사용할 옵션이 있습니다.
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
클래스에 추가하기 위해이 작업을 수행했습니다.
그러나 여기에는 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; }
}
이러한 시스템은 일반적으로 어떻게 작동합니까? 결과와 함께 입력 사본을 반환하는 것은 나쁜 생각/코드 냄새입니까?
아, 좋은 지적입니다. 그것은 확실히 "관계가 있습니다". 위의 업데이트에서 개별 결과 클래스를 생략하고 결과를 작업 및 작업 클래스에 결합하는 것에 대해 어떻게 생각합니까? –
@EricAnastas 솔직히 나는 새로운 콘텐츠를 삭제할 것이고 새로운 질문을 추가 할 것입니다. 시간외 질문을 확장하고 Q & A를 실시간 채팅으로 변환 할 수는 없습니다 ............ –
@EricAnastas 당신은 어떤 것을 매우 구체적으로 물었고 대답했습니다. 그것이 당신에게 유용했다면, 내 대답을 받아 들인 것으로 표시하고 다른 질문을 새로운 질문 본문의 일부로 복사하여 붙여 넣어야합니다 –