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


Участники сохраняемости

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

Участник сохраняемости может участвовать в операции сохраняемости («Сохранение» или «Загрузка»), запущенной узлом приложения. .NET Framework, версия 4 поставляется с двумя абстрактными классами: PersistenceParticipant и PersistenceIOParticipant, которые можно использовать для создания участника сохраняемости. Участник сохраняемости создается как производное от одного из этих классов, реализует методы, представляющие интерес, а затем добавляет экземпляр класса в коллекцию WorkflowExtensions узла WorkflowServiceHost. Узел приложения может искать такие расширения рабочих процессов при сохранении экземпляра рабочего процесса и в нужное время вызывать соответствующие методы для участников сохраняемости.

В следующем списке описываются задания, выполняемые подсистемой сохраняемости на разных стадиях операции сохраняемости (Сохранение). Участники сохраняемости используются на третей и четвертой стадиях. Если участник сохраняемости также является участником ввода/вывода (т.е. участвует в операциях ввода/вывода), он также используется на шестой стадии.

  1. Собирает встроенные значения, включая состояние рабочего процесса, закладки, сопоставленные переменные и отметки времени.

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

  3. Вызывает метод CollectValues, реализуемый всеми участниками сохранения.

  4. Вызывает метод MapValues, реализуемый всеми участниками сохранения.

  5. Сохраняет рабочий процесс в хранилище сохраняемости.

  6. Вызывает метод BeginOnSave для всех участников сохраняемости, являющихся также участниками ввода/вывода. Если участник не участвует в вводе/выводе данных, это задание пропускается. Если эпизод сохраняемости транзакционный, транзакция предоставляется в свойстве Transaction.Current.

  7. Ждет завершения работы всех участников сохраняемости. Фиксирует транзакцию, если все участники успешно сохраняют данные экземпляра.

Участник сохраняемости является производным от класса PersistenceParticipant и может использовать методы CollectValues и MapValues. Участник сохраняемости, участвующий во вводе-выводе, является производным от класса PersistenceIOParticipant и может использовать метод BeginOnSave помимо методов CollectValues и MapValues.

Каждая следующая стадия начинается только после завершения предыдущей. Например, на первой стадии собираются данные из всех участников сохраняемости. На второй стадии все значения, собранные на первой стадии, предоставляются всем участникам сохраняемости для сопоставления. Затем все значения, собранные и сопоставленные на первой и второй стадиях, предоставляются поставщику сохраняемости на третьей стадии и так далее.

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

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

  2. Загружает рабочий процесс из хранилища сохраняемости.

  3. Вызывает BeginOnLoad для всех участников сохраняемости, участвующих также во вводе/выводе, и ждет завершения работы всех участников сохраняемости. Если эпизод сохраняемости транзакционный, транзакция предоставляется в свойстве Transaction.Current.

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

  5. Вызывает PublishValues на каждом участнике сохраняемости.

Участник сохраняемости происходит от класса PersistenceParticipant и может использовать метод PublishValues. Участник сохраняемости, участвующий также во вводе/выводе, происходит от класса PersistenceIOParticipant и может использовать метод BeginOnLoad помимо метода PublishValues.

В этом разделе

См. также

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

Расширяемость хранилища