2008-09-25 6 views
0

Im construire une application web qui est une application de gestion de processus. Plusieurs types d'employés différents afficheront une liste de tâches à effectuer et, à mesure que chacun accomplira une tâche, il sera transféré à l'employé suivant.Meilleur endroit pour trier une liste de tâches

La hiérarchie des tâches est Batch> Load> Assembly> Part> Task. Il existe actuellement 8 règles pour déterminer quelle tâche doit être travaillée en premier pour chaque type d'employé. Ces règles s'appliquent à la taille de la pièce et à la manière dont la complétion des pièces affectera la hiérarchie, par exemple si la partie A est complétée alors elle complète un lot où la partie B ne le sera pas car il reste encore d'autres parties à compléter.

De toute façon, c'est la hauteur d'ascenseur du fonctionnement du système. Ce que j'essaie de comprendre est une façon efficace, rapide et durable de faire cela en gardant à l'esprit que les règles peuvent changer et que d'autres règles peuvent être ajoutées.

Initialement, j'avais l'intention de laisser la DB (sql 2005) faire tout le travail lourd mais je crains que les règles plus compliquées seront difficiles à mettre en œuvre avec une base de données. Une alternative consiste donc à extraire une liste de tâches dans un niveau intermédiaire et à créer une collection d'objets, puis à appliquer chacune des règles à la collection. Je n'ai aucun doute que chaque règle pourrait être traduite en T-SQL de manière isolée, mais commander jusqu'à 8 critères en fonction du type de tâche semble être un gros problème. Un avantage que je peux voir avec l'approche de niveau intermédiaire est que je peux créer un système plus librement restreint où le flux de tâche peut être changé, ce serait plus difficile dans la DB je pense.

Alors, que recommanderiez-vous? Y a-t-il une troisième alternative à laquelle je n'ai pas pensé?

EDIT [1] Juste pour qualifier ce un peu plus, la DB ne devrait pas changer de ce que je développe d'abord dans.

Répondre

3

Il est difficile de déterminer à partir des détails de la question. Toutefois, en plaçant votre logique dans une couche de logique applicative (intermédiaire), vos règles métier peuvent continuer à utiliser le même code, quelle que soit la base de données principale. Au moment où vous spécifiez T-SQL mais est-il possible que dans le futur vous passiez à un environnement non-SQL Server?

0

Quelle plateforme? .NET 3.5 introduit LinqToSQL qui peut en faire un point discutable. Vous pouvez utiliser un modèle de stratégie pour sélectionner/construire une requête appropriée en fonction du type de tâche, puis laisser LINQ faire la traduction en SQL pour vous. De cette façon, vous pouvez construire la requête en code, mais l'exécuter en réalité sur la base de données.

Questions connexes