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


Решение SQLStoreExtensibility

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

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

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

Рабочий процесс подсчета является резидентным в узле службы рабочих процессов. Метод Main программы выполняет следующие действия.

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

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

  • Создает клиент, который вызывает метод запуска рабочего процесса подсчета.

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

Для продвижения значения подсчета в качестве пользовательского свойства должны быть выполнены следующие шаги.

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

  2. При создании хранилища экземпляров новое свойство, CountStatus, определяется через метод store.Promote().

  3. Действие SaveCounter рабочего процесса присваивает текущее значение подсчета полю состояния Count.

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

  1. Создайте базу данных хранилища экземпляров.

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

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

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

  2. Откройте Visual Studio 2010 и загрузите решение SqlStoreExtensibility.sln, после чего постройте его нажатием клавиши F6.

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

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

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

  1. Используйте среду SQL Server Management Studio, чтобы просмотреть содержимое таблицы экземпляров, выбрав в обозревателе объектов Базы данных, InstanceStore, затем System.ServiceModel.Activities.DurableInstancing.InstanceTable, щелкните правой кнопкой мыши System.ServiceModel.Activities.DurableInstancing.InstanceTable и выберите команду Выделить 1000 верхних строк. Дополнительные сведения среде SQL Server Management Studio см. в разделе Введение в SQL Server Management Studio.

  2. Просмотрите перечисленные экземпляры рабочих процессов.

  3. В командной строке Visual Studio 2010 запустите скрипт QueryInstanceStore.cmd, находящийся в каталоге образцов (\WF\Basic\Persistence\SqlStoreExtensibility).

  4. Просмотрите значение подсчета, отображаемое в поле CountStatus.

  5. Чтобы просмотреть изменение значения поля CountStats, несколько раз запустите скрипт.

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

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

  1. Удалите базу данных хранилища образцов, запустив скрипт RemoveInstanceStore.cmd, находящийся в каталоге образцов (\WF\Basic\Persistence\SqlStoreExtensibility).
Ee622979.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\SQLStoreExtensibility

См. также

Основные понятия

Сохраняемость рабочего процесса

Другие ресурсы

Службы рабочего процесса