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


Сохранение приложения рабочего процесса

Данный раздел относится к версии Windows Workflow Foundation 4.

Этот образец демонстрирует, как запускать приложение WorkflowApplication, выгружать его при переходе в состояние бездействия и снова загружать для продолжения выполнения.

Подробные сведения об образце

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

Образцом рабочего процесса может служить действие WriteLine, предлагающее пользователю ввести свое имя, действие ReadLine, считывающее имя в качестве входного значения через запрос возобновления Bookmark, или другое действие WriteLine, отображающее приветствие пользователю. Время ожидания рабочим процессом входных данных — это естественный момент для запуска операций сохранения. Этот момент часто называют точкой Idle. WorkflowApplication создает событие Idle всякий раз, когда программа рабочего процесса может быть сохранена, ожидает возобновления закладки, и когда не выполняются никакие другие работы. В данном образце рабочего процесса этот момент наступает сразу после выполнения действия ReadLine.

Для выполнения операций сохранения над InstanceStore осуществляется настройка WorkflowApplication. В этом образце используется привязка SqlWorkflowInstanceStore. Значение InstanceStore необходимо назначить свойству InstanceStore до запуска приложения WorkflowApplication.

В этом образце происходит добавление обработчика к событию PersistableIdle. Обработчик этого события, возвращая действие PersistableIdleAction, указывает, что должно делать приложение WorkflowApplication. Если возвращается действие Unload, приложение WorkflowApplication будет выгружено.

Данный образец затем принимает входное значение от пользователя и загружает сохраненный рабочий процесс в новое приложение WorkflowApplication. Это делается посредством создания нового приложения WorkflowApplication, восстановления InstanceStore, и сопоставления завершенных и выгруженных событий в экземпляре и затем вызова Load с идентификатором экземпляра целевого рабочего процесса. После получения экземпляра закладка активности ReadLine возобновляется. Рабочий процесс продолжает выполняться в рамках действия ReadLine вплоть до завершения. После завершения и выгрузки рабочего процесса еще один раз (последний) вызывается метод InstanceStore для удаления рабочего процесса.

Использование этого образца

  1. Откройте окно командной строки Visual Studio 2010.

    Этот образец требует наличия SQL Server Express, устанавливаемого по умолчанию вместе с Visual Studio 2010.

  2. Перейдите в каталог образцов (\WF\Basic\Persistence\InstancePersistence\CS) и запустите команду CreateInstanceStore.cmd.

    Dd807516.Caution(ru-ru,VS.100).gifВнимание!
    Скрипт CreateInstanceStore.cmd создает базу данных в экземпляре SQL Server 2008 Express по умолчанию. Чтобы установить базу данных в другом экземпляре, измените скрипт.

  3. Откройте в среде Visual Studio 2010 файл решения Persistence.sln и нажмите клавишу F6 для построения решения.

    Dd807516.Caution(ru-ru,VS.100).gifВнимание!
    Если база данных установлена в именованном экземпляре SQL Server, обновите строку соединения в коде перед построением решения.

  4. С правами администратора запустите образец. Для этого перейдите в каталог исполняемых файлов (\WF\Basic\Persistence\InstancePersistence\bin\Debug) проекта в обозревателе Windows, щелкните правой кнопкой мыши файл Workflow.exe и выберите команду Запуск от имени администратора.

Удаление базы данных хранилища экземпляров

  1. Откройте окно командной строки Visual Studio 2010.

  2. Перейдите в каталог образцов и запустите команду RemoveInstanceStore.cmd.

Dd807516.Important(ru-ru,VS.100).gif Примечание
Образцы уже могут быть установлены на компьютере. Перед продолжением проверьте следующий каталог (по умолчанию).

<диск_установки>:\WF_WCF_Samples

Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.

<диск_установки>:\WF_WCF_Samples\WF\Basic\Persistence\InstancePersistence