Pregunta

Estoy creando una aplicación web que es una aplicación de gestión de procesos. A varios tipos diferentes de empleados se les mostrará una lista de Tareas que realizar y, a medida que cada una complete una tarea, pasará al siguiente empleado para trabajar.

La jerarquía de tareas es Lote > Cargar > Asamblea > Parte > Tarea. Actualmente hay 8 reglas para determinar en qué tarea se debe trabajar primero para cada tipo de empleado. Estas reglas se aplican al tamaño de la parte, y también a la forma en que la finalización de las partes afectará a la Jerarquía, por ejemplo, si se completa la Parte A, se completa un Lote completo, mientras que la Parte B no, ya que aún quedan otras partes en su Lote a completar.

De todos modos, esa es la inclinación del ascensor de cómo funciona el sistema. Lo que estoy tratando de averiguar es una manera eficiente, rápida y fácil de hacer esto teniendo en cuenta que las reglas pueden cambiar y se pueden agregar más reglas.

Inicialmente, tenía la intención de dejar que el DB (sql 2005) hiciera todo el trabajo pesado, pero me preocupa que las reglas más complicadas sean difíciles de implementar con un DB. Entonces, una alternativa es extraer una lista de Tareas en un nivel intermedio y crear una Colección de objetos y aplicar cada una de las reglas a la Colección. No tengo ninguna duda de que cada regla se puede traducir a T-SQL de forma aislada, pero el orden de hasta 8 criterios, dependiendo del tipo de tarea, se siente como una gran molestia.

Un beneficio que puedo ver con el enfoque de nivel medio es que puedo crear un sistema más restringido donde el flujo de tareas se puede cambiar, eso sería más difícil en el DB, creo.

Entonces, ¿qué recomendarían ustedes? ¿Hay una tercera alternativa que no haya pensado?

EDITAR [1] Solo para calificar esto un poco más, no se espera que el DB cambie a partir de lo que inicialmente lo desarrollé.

¿Fue útil?

Solución

Es difícil determinar a partir de los detalles en la pregunta. Sin embargo, colocar su lógica en una capa de lógica de negocios (media) significará que sus reglas de negocios pueden continuar usando el mismo código sin importar cuál sea la base de datos de back-end. En el momento en que especifica T-SQL, ¿es posible que en el futuro se cambie a un entorno que no sea de SQL Server?

Otros consejos

¿Qué plataforma? .NET 3.5 introduce LinqToSQL que puede convertir esto en un punto discutible. Podría usar un patrón de estrategia para seleccionar / construir una consulta adecuada en función del tipo de tarea, luego deje que LINQ haga la traducción a SQL por usted. De esa manera, puede generar la consulta en código, pero aún así puede ejecutarla en la base de datos.

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