Pergunta

Eu estou tendo alguns problemas pensando em uma questão de design e pensei que a comunidade pode ser capaz de ajudar a me apontar na direção certa. Eu estou modelando um sistema de gerenciamento de funcionários para minha empresa e chegou a uma questão de design que me é perplexada.

Aqui está o cenário:

Eu tenho uma aula de funcionários que a classe dos funcionários tem uma lista de objetos do Office (onde o empregado funciona e funcionou). Eu tenho um requisito para criar a capacidade de transferir um funcionário entre escritórios. Há alguma sobrecarga extra para a solicitação de transferência (aprovações, revisões), mas no final as aprovações Meu objeto de transferência deve fazer com que a lista de escritório de objeto de funcionários seja alterada.

Eu estou usando C #, EF4 e Poco para meus objetos. Não tenho certeza de como modelar o objeto de transferência. Vai ser persistido por algum tempo e não pode ser concluído por alguns dias (as aprovações devem completar antes de continuar). O objeto de transferência precisa conhecer o funcionário para modificar e o novo escritório para o funcionário. Eu sinto que é um design ruim para tornar o funcionário uma criança do objeto de transferência e modificá-lo lá. Eu só estou querendo saber se alguém tem algum conselho sobre como modelar este requisito.

Foi útil?

Solução

Você pode tratar a transferência como um objeto completamente separado - um empregoReetRansfer.

No mínimo, conteria os seguintes dados: 1. O identificador exclusivo de um funcionário. 2. O identificador exclusivo de uma transferência do escritório. 3. O identificador exclusivo de uma transferência para o escritório. 4. Um indicador de status para o progresso da transferência.

Este é um objeto leve que não contém outros objetos - referencia-os por identificador exclusivo.Quando a transferência é processada, valide que o funcionário e a transferência para escritórios ainda são válidos e atualize a coleção de escritórios do empregado.

O único pré-requisito para esta solução é que o empregado e os escritórios devem existir antes da criação da transferência.

Outras dicas

Parece que a transferência não é um objeto, é um fluxo de trabalho.Olhe para o Windows Workflow Foundation ... Aqui está um bom exemplo do QuickStart.

Se você pensar sobre a responsabilidade do objeto de transferência, é para gerenciar a transferência de um funcionário para outro escritório.Eu projetaria isso com o objeto de transferência sendo separado do empregado e do escritório, mas ter uma referência a cada.O objeto de transferência provavelmente teria um enum de valores de status de aprovação e atingir um estado final (aprovação cancelada ou final), o objeto de transferência poderia executar a ação de associar o funcionário ao novo escritório e se for concluído.Não é um design ruim para o objeto de transferência ter referências aos outros objetos.A relação entre transferência e funcionário (e também transferência e escritório) neste caso, um relacionamento "usa".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top