Процесс утверждения документа
Пример DocumentApprovalProcess демонстрирует использование многих функций Windows Workflow Foundation (WF) и Windows Communication Foundation (WCF). Вместе они реализуют сценарий утверждения документов. Клиентское приложение может представлять документы на утверждение и утверждать документы. Диспетчер утверждений облегчает взаимодействие между клиентами и обеспечивает соблюдение порядка утверждения. Утверждение - это рабочий процесс, который может выполняться несколькими способами. Поддерживается единичное утверждение, утверждение кворумом (частью группы утверждающих) и составное утверждение, состоящее из утверждения кворумом и следующего за ним единичного утверждения.
Подробные сведения об образце
На следующем рисунке показан рабочий процесс утверждения документа:
С точки зрения клиента процесс утверждения документа протекает следующим образом.
Клиент отправляет заявку на участие в системе утверждения.
Клиент WCF отправляется в службу WCF, размещенную приложением диспетчера утверждений.
Клиенту возвращается индивидуальный пользовательский идентификатор. Теперь клиент может участвовать в процессе утверждения.
Присоединившись к системе, клиент может отправить документ на единичное утверждение, утверждение кворумом и составное утверждение.
Кнопка в интерфейсе клиента нажимается, запуская экземпляр рабочего процесса в узле службы рабочих процессов клиента.
Рабочий процесс отправляет запрос на утверждение приложению диспетчера утверждения.
Диспетчер рабочего процесса запускает на своем сайте рабочий процесс, представляющий процесс утверждения.
По завершении рабочего процесса утверждения диспетчер возвращает клиенту результаты.
Результаты отображаются клиентом.
Клиент может получить запрос на утверждение и в любой момент ответить на него.
Служба WCF, размещенная на клиенте, может получить запрос на утверждение от приложения диспетчера утверждений.
Данные о документе представляются на обозрение в клиенте.
Пользователь может утвердить или отклонить документ.
Клиент WCF используется для отправки ответа на утверждение в приложение диспетчера утверждений.
С точки зрения приложения диспетчера утверждений процесс утверждения выполняется следующим образом:
Клиент отправляет заявку на участие в системе утверждения.
Служба WCF в диспетчере утверждений получает запрос на участие в системе процесса утверждения.
Для клиента создается индивидуальный идентификатор. Пользовательские данные сохраняются в базе данных.
Пользователю возвращается индивидуальный идентификатор.
Получение запроса на утверждение. Диспетчер запускает процесс утверждения.
Диспетчер получает запрос на утверждение и начинает новый рабочий процесс.
В зависимости от типа запроса (простое утверждение, утверждение кворумом или составное утверждение) запускается определенное действие.
Действия по отправке и получению с корреляцией используются для отправки запроса на утверждение клиенту на рассмотрения и для получения ответа.
Результат рабочего процесса утверждения отправляется клиенту.
Использование образца
Настройка базы данных
- В командной строке Visual Studio, открытой с правами Администратор istrator, перейдите к этой папке DocumentApprovalProcess и запустите Setup.cmd.
Настройка приложения
Откройте файл решения DocumentApprovalProcess.sln с помощью Visual Studio.
Для построения решения нажмите CTRL+SHIFT+B.
Чтобы запустить решение, запустите приложение диспетчера утверждений, щелкнув правой кнопкой мыши проект ApprovalManager в Обозреватель решений и щелкнув "Отладка-> Запуск нового экземпляра" в меню правой кнопкой мыши.
Дождитесь вывода руководителя, чтобы сообщить вам, что он готов.
Выполнение сценария одиночного утверждения
Откройте командную строку с разрешениями администратора.
Перейдите в каталог, содержащий решение.
Перейдите в папку ApprovalClient\Bin\Debug и запустите два экземпляра ApprovalClient.exe.
Нажмите кнопку обнаружения, дождитесь включения кнопки подписки.
Введите любое имя пользователя и нажмите кнопку " Подписаться". Для первого клиента используйте
UserType1
, а для второго -UserType2
.На клиенте
UserType1
выберите один тип подтверждения из раскрывающегося меню и введите имя и содержимое документа. Нажмите кнопку "Запросить утверждение".В клиенте
UserType2
появится документ, ожидающий утверждения. Выберите его и нажмите кнопку "Утвердить " или отклонить. Результаты должны отобразиться на клиентеUserType1
.
Выполнение сценария утверждения кворумом
Откройте командную строку с разрешениями администратора.
Перейдите в каталог, содержащий решение.
Перейдите в папку ApprovalClient\Bin\Debug и запустите три экземпляра ApprovalClient.exe.
Нажмите кнопку обнаружения, дождитесь включения кнопки подписки.
Введите любое имя пользователя и нажмите кнопку " Подписаться". Для одного клиента используйте
UserType1
, а для двух других -UserType2
.В клиенте
UserType1
выберите в раскрывающемся меню утверждение кворумом и введите имя и содержимое документа. Нажмите кнопку "Запросить утверждение". В данном случае требуется, чтобы два клиентаUserType2
утвердили или отклонили документ. Хотя ответить должны оба клиентаUserType2
, для утверждения документа достаточно, чтобы его утвердил один из них.На клиентах
UserType2
появится документ, ожидающий подтверждения. Выберите его и нажмите кнопку "Утвердить " или отклонить. Результаты должны отобразиться на клиентеUserType1
.
Выполнение сценария составного утверждения
Откройте командную строку с разрешениями администратора.
Перейдите в каталог, содержащий решение.
Перейдите в папку ApprovalClient\Bin\Debug и запустите четыре экземпляра ApprovalClient.exe.
Нажмите кнопку обнаружения, дождитесь включения кнопки подписки.
Введите любое имя пользователя и нажмите кнопку " Подписаться". Для одного клиента используйте
UserType1
, для двух других -UserType2
, а для последнего -UserType3
.На клиенте
UserType1
выберите один тип подтверждения из раскрывающегося меню и введите имя и содержимое документа. Нажмите кнопку "Запросить утверждение".На клиентах
UserType2
появится документ, ожидающий подтверждения. Выберите его и нажмите кнопку утверждения, документ передаетсяUserType3
клиенту.Если документ был утвержден первым кворумом
UserType2
, этот документ буден передан клиентуUserType3
.Утвердите или отклоните документ, полученный от клиента
UserType3
. Результаты должны отобразиться на клиентеUserType1
.
Очистка
- В командной строке Visual Studio перейдите в папку DocumentApprovalProcess и запустите Cleanup.cmd.