Вопрос

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

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

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

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top