Предложения по архитектуре рабочего процесса? - PullRequest
1 голос
/ 23 октября 2008

Мы создали систему подачи заявок на грант для клиента. Теперь они попросили предоставить некоторые простые функции рабочего процесса (для подачи заявки требуется два утверждения).

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

Примечание: Это пользовательское приложение ASP.NET, и мы определенно будем выпускать собственное решение для рабочих процессов. Я не заинтересован в покупке компонента или, тем более, в переносе всего этого на платформу, такую ​​как SharePoint.

Ответы [ 4 ]

4 голосов
/ 23 октября 2008

Если функциональность рабочего процесса настолько проста, тогда достаточно вашего подхода. Но если вы хотите (или если клиент позже попросит) больше функциональности, например:

  • Напоминания утверждающим
  • Предупреждения для администраторов
  • Эскалации и перераспределения назначений
  • Отмена назначения
  • Распределение на основе правил
  • Отслеживание заданий

тогда вам, возможно, придется рассмотреть компонент рабочего процесса, такой как Workflow Foundation .

Академический подход к шаблонам рабочих процессов можно найти здесь , и они сгруппированы в четыре категории:

Я думаю, что более интересная категория для вашего случая - это Шаблоны ресурсов.

4 голосов
/ 23 октября 2008

Не смотреть на Windows Workflow Foundation было бы глупо. Это было сделано именно для того, что вам нужно.

Вот специальная ссылка ASP.NET .

0 голосов
/ 04 ноября 2008

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

Какой из следующих двух дизайнов лучше:

  1. Конструкция на основе базы данных, где каждый процесс обновляет свое состояние и другие данные в таблицах базы данных, а другие процессы запрашивают эти таблицы, или

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

0 голосов
/ 23 октября 2008

Одно из решений, которое хорошо работало в прошлом, - это создание групп утверждения с членами, кодами утверждения в качестве простой справочной таблицы и программным кодом конечного автомата утверждения, чтобы каждый шаг был результатом назначения кода утверждения элемент участником группы. Это позволяет изменить состав группы и пути утверждения без необходимости что-либо перекодировать. Вы также можете добавить триггеры и конечные точки кода (через отражение, например, имя сборки + имя класса + имя метода) для выполнения побочных эффектов и действий фиксации / уведомления на каждом шаге

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