Лучшее место для сортировки списка задач - PullRequest
0 голосов
/ 25 сентября 2008

Я создаю веб-приложение, которое представляет собой приложение для управления процессами. Несколько различных типов сотрудников будут показаны в списке задач, которые нужно выполнить, и, когда каждый из них выполнит задачу, он будет перемещен к следующему сотруднику для работы.

Иерархия задач: Пакетная обработка> Загрузка> Сборка> Деталь> Задача. В настоящее время существует 8 правил для определения того, над какой задачей нужно работать в первую очередь для каждого типа сотрудников. Эти правила применяются к размеру детали, а также к тому, как это завершение деталей повлияет на Иерархию, например, если деталь A завершена, то она завершает всю серию, тогда как как часть B не будет, так как в этой партии еще есть другие детали, которые необходимо завершить.

Во всяком случае, это высота лифта того, как работает система. То, что я пытаюсь выяснить, является эффективным, быстрым и обслуживаемым способом сделать это, имея в виду, что правила могут измениться, и может быть добавлено больше правил.

Первоначально я намеревался позволить БД (sql 2005) выполнять всю тяжелую работу, но у меня есть опасения, что более сложные правила будет трудно реализовать с помощью БД. Таким образом, альтернатива состоит в том, чтобы вытащить список задач на средний уровень и создать коллекцию объектов и применить каждое из правил к коллекции. Я не сомневаюсь, что каждое правило может быть переведено в T-SQL по отдельности, но упорядочение по 8 критериям в зависимости от типа задачи вызывает много хлопот.

Одно преимущество, которое я вижу в подходе среднего уровня, заключается в том, что я могу создать более свободно ограниченную систему, в которой поток задач может быть изменен, что было бы более сложным в БД, я думаю.

Так что бы вы, ребята, порекомендовали? Есть ли третий вариант, о котором я не подумал?

РЕДАКТИРОВАТЬ [1] Просто, чтобы уточнить это немного, не ожидается, что БД изменится по сравнению с тем, в чем я изначально его разрабатывал.

Ответы [ 2 ]

3 голосов
/ 25 сентября 2008

Сложно определить по деталям в вопросе. Однако перевод вашей логики на уровень бизнес-логики (средний уровень) будет означать, что ваши бизнес-правила могут продолжать использовать один и тот же код независимо от того, какой может быть внутренняя база данных. На данный момент вы указываете T-SQL, но возможно ли в будущем перейти на среду, отличную от SQL Server?

0 голосов
/ 25 сентября 2008

Какая платформа? .NET 3.5 представляет LinqToSQL, который может сделать этот вопрос спорным. Вы можете использовать шаблон стратегии, чтобы выбрать / построить соответствующий запрос на основе типа задачи, а затем позволить LINQ выполнить перевод в SQL для вас. Таким образом, вы можете построить запрос в коде, но все же выполнить его в БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...