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


Встроенная конфигурация

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

Этот образец показывает использование и настройку хранилища экземпляров рабочих процессов SQL. Хранилище экземпляров рабочих процессов SQL — это реализация хранилища экземпляров на основе SQL Server. Она позволяет экземпляру загружать свое состояние из базы данных SQL Server или SQL Server Express, либо сохранять состояние в этой базе данных.

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

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

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

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

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

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

Рабочий процесс подсчета является резидентным в узле службы рабочих процессов. Метод Main программы создает экземпляр узла службы рабочих процессов, в котором размещается рабочий процесс подсчета. Он определяет конечные точки, по которым можно получить доступ к рабочему процессу подсчета. После этого он определяет поведение хранилища экземпляров рабочих процессов SQL, которое используется для настройки экземпляра рабочего процесса SQL. Затем программа создает клиент, который вызывает метод запуска рабочего процесса подсчета.

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

Образец состоит из двух частей:

  1. InstanceStore1 показывает настройку SqlWorkflowInstanceStore с использованием кода C# (см. файл Program.cs).

  2. InstanceStore2 показывает настройку SqlWorkflowInstanceStore с использованием XML (см. файл App.config).

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

  • Установите свойство HostLockRenewalPeriod. Это время определяет интервал, в течение которого узел обновляет владение блокировкой выполняемых им экземпляров. Сведения о блокировке хранятся в хранилище экземпляров. Если владение не обновляется в течение двух интервалов, определенных в HostLockRenewalPeriod, экземпляр считается прерванным. Если другой узел WorkflowServiceHost выполняет тот же рабочий процесс и подключен к тому же хранилищу экземпляров (на той же или на другой машине), он восстанавливает экземпляр. (Восстановление экземпляра находится вне рамок обсуждения для данного образца.)

  • Установите свойство RunnableInstancesDetectionPeriod. Этот период определяет интервал, в течение которого узел выполняет опрос в поисках экземпляров, которые стали готовы к запуску. Экземпляры могут стать готовыми к запуску, если произойдет одно из следующих событий.

    • Истекает срок действия устойчивого таймера (Delay).

    • Еще один узел пропускает тактовый импульс HostLockRenewal (например, вследствие сбоя компьютера) и экземпляр восстанавливается.

  • Установите свойство InstanceCompletionAction. Это свойство, если для него установлено значение DeleteNothing, сохраняет завершенные экземпляры в хранилище экземпляров; если же задано значение DeleteAll, экземпляры удаляются из хранилища после завершения. Обратите внимание, что

    Ee622978.note(ru-ru,VS.100).gifПримечание
    завершение узла нажатием клавиши ВВОД перед завершением подсчета не приводит к завершению экземпляра рабочего процесса.

  • Установите свойство InstanceLockedExceptionAction. Эта настройка определяет, что должен сделать узел, если требуется загрузить экземпляр, блокированный другим узлом. Возможны следующие варианты.

    • Если задано значение NoRetry: Не предпринимать повторных попыток загрузки и возвратить узлу InstanceLockedException.

    • Если задано значение BasicRetry: Повтор попыток загрузки экземпляра. Повторные попытки включаются в расписание по простому линейному алгоритму (например, повторная попытка через каждые 5 секунд).

    • Если задано значение AggressiveRetry: Повтор попыток загрузки экземпляра. Повторные попытки включаются в расписание по агрессивному алгоритму с экспоненциальной задержкой.

  • Установка параметра Encoding (кодировки). Этот параметр определяет способ сохранения состояния экземпляра в хранилище экземпляров рабочего процесса SQL. Возможны следующие варианты.

    • Состояние экземпляра сжимается с применением алгоритма сжатия GZip.

    • Состояние экземпляра не сжато.

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

  1. Откройте командную строку Visual Studio 2010 от имени учетной записи администратора, если имеются разрешения на это.

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

  3. Если права администратора не доступны, создайте имя входа SQL Server. Перейдите к Security, затем выберите пункт Имена входа. Щелкните правой кнопкой мыши узел Имена входа и создайте новое имя входа.

  4. Добавьте пользователя из списка ACL к роли SQL. Откройте пункт меню Базы данных, InstanceStore, Безопасность. Щелкните правой кнопкой мыши раздел Пользователи и выберите команду Создать пользователя. Задайте Имя входа для пользователя, созданного на предыдущем шаге. Добавьте пользователя к членам роли базы данных System.Activities.DurableInstancing.InstanceStoreUsers (и к другим ролям). Обратите внимание, что пользователь может уже существовать (например, пользователь dbo).

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

  6. В обозревателе Windows перейдите в соответствующий каталог образца bin\debug directory (\WF\Basic\Persistence\BuiltInConfiguration\cs\InstanceStore(1 или 2)\bin\debug), щелкните правой кнопкой мыши файл InstanceStore.exe и выберите команду Запуск от имени администратора. Этот образец необходимо запускать с правами администратора, так как он открывает прослушиватель каналов.

  7. Если хранилище экземпляров создано в базе данных, отличной от локального экземпляра SQL Server Express, необходимо обновить строку подключения базы данных (const string ConnectionString в файле Program.cs проекта InstanceStore1, и атрибут connectionString в файле App.config проекта InstanceStore2) в образце и перекомпилировать образец.

Проверка правильности работы образца

  1. Во время работы образца запустите среду SQL Server Management Studio.

  2. В Обозревателе объектов выберите Базы данных, InstanceStore, Таблицы, затем выберите System.Activities.DurableInstancing.InstanceTable.

  3. Щелкните правой кнопкой мыши таблицу InstanceTable и выберите Выделить 1000 верхних строк.

  4. Обратите внимание на новый элемент и на то, что Истечение срока действия блокировки меняется через каждые 5 секунд, (нажмите кнопку Выполнить на панели элементов, чтобы обновить запрос). Это происходит вследствие того, что для параметра Период обновления блокировки узла установлено значение 5.

  5. Обратите внимание, что после завершения подсчета запись в таблице экземпляров удаляется. Это происходит потому, что параметру Действие завершения экземпляра назначено значение DeleteAll.

  6. Нажмите клавишу ВВОД, чтобы завершить ведущее приложение рабочего процесса. Обратите внимание, что таблица LockOwnersTable удаляется.

Удаление образца

  1. Запустите файл RemoveInstanceStore.cmd в каталоге образцов (\WF\Basic\Persistence\BuiltInConfiguration).
Ee622978.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\BuiltInConfiguration