Поделиться через


Процесс утверждения документа

Пример DocumentApprovalProcess демонстрирует использование многих функций Windows Workflow Foundation (WF) и Windows Communication Foundation (WCF). Вместе они реализуют сценарий процесса утверждения документов. Клиентское приложение может отправлять документы на утверждение и затем их утверждать. Приложение диспетчера утверждений существует для упрощения взаимодействия между клиентами и применения правил процесса утверждения. Процесс утверждения — это рабочий процесс, который может выполнять несколько типов утверждения. Действия выполняются для получения одного утверждения, утверждения кворума (процент голосующих за утверждение), и сложного процесса утверждения, состоящего из процесса утверждения кворума и единого утверждения в последовательной форме.

Детали образца

На следующем рисунке показан рабочий процесс утверждения документа:

Рабочий процесс утверждения документа

С точки зрения клиента процесс утверждения функционирует следующим образом:

  1. Клиент регистрируется как пользователь в системе утверждения заявок.

  2. Клиент WCF отправляет запрос в WCF-сервис, размещенный в приложении диспетчера утверждений.

  3. Уникальный идентификатор пользователя возвращается клиенту. Теперь клиент может участвовать в процессах утверждения.

  4. Когда клиент присоединился, он может отправить документ для утверждения с помощью отдельных, кворумных или сложных процессов утверждения.

  5. Кнопка в интерфейсе клиента нажимается, запуская экземпляр рабочего процесса в узле службы рабочих процессов клиента.

  6. Рабочий процесс отправляет запрос на утверждение в приложение диспетчера утверждений.

  7. Диспетчер рабочих процессов запускает рабочий процесс самостоятельно для представления процедуры утверждения.

  8. После завершения процесса утверждения менеджера результаты возвращаются клиенту.

  9. Клиент отображает результаты.

  10. Клиент может получить запрос на утверждение и ответить на запрос в любой момент времени.

  11. Служба WCF, размещенная на клиенте, может получить запрос на утверждение от приложения диспетчера утверждений.

  12. Сведения о документе предоставлены для клиента для ознакомления.

  13. Пользователь может утвердить или отклонить документ.

  14. Клиент WCF используется для отправки ответа на утверждение в приложение диспетчера утверждений.

С точки зрения приложения менеджера по утверждению, процесс утверждения функционирует следующим образом:

  1. Клиент запрашивает участие в системе процесса утверждения.

  2. Служба WCF в диспетчере утверждений получает запрос на участие в системе процесса утверждения.

  3. Для клиента создается уникальный идентификатор. Сведения о пользователе хранятся в базе данных.

  4. Уникальный идентификатор отправляется пользователю.

  5. Запрос на утверждение получен. Руководитель по утверждениям осуществляет процесс утверждения.

  6. При получении запроса на утверждение менеджером по утверждениям начинается новый рабочий процесс.

  7. В зависимости от типа запроса (простого, кворума или сложного) выполняется другое действие.

  8. Действия отправки и получения с корреляцией используются для отправки запроса на утверждение клиенту для проверки и получения ответа.

  9. Результат рабочего процесса утверждения отправляется клиенту.

Использование примера

Настройка базы данных

  1. В командной строке Visual Studio, открывшейся с правами администратора, перейдите в эту папку DocumentApprovalProcess и запустите Setup.cmd.

Настройка приложения

  1. Откройте файл решения DocumentApprovalProcess.sln с помощью Visual Studio.

  2. Для построения решения нажмите CTRL+SHIFT+B.

  3. Чтобы запустить решение, запустите приложение Approval Manager, щелкнув правой кнопкой мыши проект ApprovalManager в обозревателе решений и выбрав Отладка - >Запуск нового экземпляра в контекстном меню.

    Дождитесь сигнала от руководителя, который уведомит вас о готовности задачи.

Выполнение сценария единого утверждения

  1. Откройте командную строку с разрешением администратора.

  2. Перейдите в каталог, содержащий решение.

  3. Перейдите к ApprovalClient\Bin\Debug folder and execute two instances of ApprovalClient.exe.

  4. Нажмите кнопку обнаружения, дождитесь включения кнопки подписки .

  5. Введите любое имя пользователя и нажмите кнопку "Подписаться". Для одного клиента используйте UserType1, а для другого типа — UserType2.

  6. В клиенте UserType1 выберите один тип утверждения в раскрывающемся меню и введите имя документа и содержимое. Нажмите кнопку "Запросить утверждение".

  7. В клиенте UserType2 появится документ, ожидающий утверждения. Выберите его и нажмите кнопку "Утвердить " или отклонить. Результаты должны отображаться в клиенте UserType1 .

Запуск сценария утверждения кворума

  1. Откройте командную строку с разрешением администратора.

  2. Перейдите в каталог, содержащий решение.

  3. Перейдите к ApprovalClient\Bin\Debug folder and execute three instances of ApprovalClient.exeдля утверждения.

  4. Нажмите кнопку обнаружения, дождитесь включения кнопки подписки .

  5. Введите любое имя пользователя и нажмите кнопку "Подписаться". Для одного клиента используется UserType1, а для других двух — тип UserType2.

  6. В клиенте UserType1 выберите тип утверждения кворума в раскрывающемся меню и введите имя документа и содержимое. Нажмите кнопку "Запросить утверждение". Это запрашивает утверждение или отклонение документа двумя UserType2 клиентами. Хотя оба UserType2 клиента должны отвечать, только один клиент должен утвердить документ, чтобы он был утвержден.

  7. В клиентах UserType2 появится документ, ожидающий утверждения. Выберите его и нажмите кнопку "Утвердить " или отклонить. Результаты должны отображаться в клиенте UserType1 .

Запустить сложный сценарий утверждения

  1. Откройте командную строку с разрешением администратора.

  2. Перейдите в каталог, содержащий решение.

  3. Перейдите к ApprovalClient\Bin\Debug folder and execute four instances of ApprovalClient.exe.

  4. Нажмите кнопку обнаружения, дождитесь включения кнопки подписки .

  5. Введите любое имя пользователя и нажмите кнопку "Подписаться". Для одного использования клиента UserType1, в двух использованиях UserType2, и в последнем использовании UserType3.

  6. В клиенте UserType1 выберите один тип утверждения в раскрывающемся меню и введите имя документа и содержимое. Нажмите кнопку "Запросить утверждение".

  7. В клиентах UserType2 появится документ, ожидающий утверждения. Выберите его и нажмите кнопку утверждения, документ передается UserType3 клиенту.

    Если документ утвержден первым UserType2 кворумом, документ передается UserType3 клиенту.

  8. Утвердите или отклоните документ от UserType3 клиента. Результаты должны отображаться в клиенте UserType1 .

Очистка

  1. В командной строке Visual Studio перейдите в папку DocumentApprovalProcess и запустите Cleanup.cmd.