Pregunta

Estoy teniendo algunos problemas pensando a través de un problema de diseño y pensó que la comunidad puede ayudarme a señalarme en la dirección correcta. Estoy modelando un sistema de gestión de empleados para mi compañía y he llegado a una pregunta de diseño que me ha perplejo.

Aquí está el escenario:

Tengo una clase de empleados que la clase de empleados tiene una lista de objetos de oficina (donde trabaja el empleado y ha funcionado). Tengo un requisito para crear la capacidad de transferir a un empleado entre oficinas. Hay algunas sobrecargas adicionales para la solicitud de transferencia (aprobaciones, revisiones), pero al final, las aprobaciones, mi objeto de transferencia debe hacer que la lista de la oficina de objetos de los empleados se cambie.

Estoy usando C #, EF4 y Poco para mis objetos. No estoy seguro de cómo modelar el objeto de transferencia. Va a ser persistido durante algún tiempo y no se puede completar durante unos días (las aprobaciones deben completarse antes de que se permita continuar). El objeto de transferencia debe conocer al empleado para modificar y la nueva oficina para el empleado. Siento que es un mal diseño hacer que el empleado sea un hijo del objeto de transferencia y modifíquelo allí. Me pregunto si alguien tiene algún consejo sobre cómo modelar este requisito.

¿Fue útil?

Solución

Podría tratar la transferencia como un objeto completamente separado, un empleado.

Como mínimo, contendría los siguientes datos: 1. El identificador único de un empleado. 2. El identificador único de una transferencia de la oficina. 3. El identificador único de una transferencia a la oficina. 4. Un indicador de estado para el progreso de la transferencia.

Este es un objeto liviano que no contiene ningún otro objeto, lo hace reference por un identificador único.Cuando se procesa la transferencia, valida que el empleado y la transferencia a las oficinas siguen siendo válidas, actualice la colección de oficinas de empleados.

El único requisito previo para esta solución es que el empleado y las oficinas deben existir antes de la creación de la transferencia.

Otros consejos

Suena como la transferencia no es un objeto, es un flujo de trabajo.Mire la Fundación Windows Workflow ... Aquí hay una buen ejemplo de inicio rápido.

Si piensa en la responsabilidad del objeto de transferencia, es administrar la transferencia de un empleado a otra oficina.Diseñaría esto con el objeto de transferencia separado del empleado y de la oficina, sino que tiene una referencia a cada uno.El objeto de transferencia probablemente tendría un enumeración de valores de estado de aprobación y al llegar a un estado final (aprobación cancelada o final), el objeto de transferencia podría realizar la acción de asociar al empleado con la nueva oficina y marcar como completado.No es un diseño malo para el objeto de transferencia para tener referencias a los otros objetos.La relación entre la transferencia y el empleado (y también la transferencia y el cargo) en este caso una relación "usa".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top