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


Активация экземпляра

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

Обнаружение и активация экземпляров запускаемых рабочих процессов

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

  • Экземпляр разблокирован и имеет таймер ожидания, срок действия которого истек.

  • У экземпляра истек срок действия блокировки.

  • Экземпляр разблокирован, и его статус — Выполняется.

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

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

Обнаружение и активация активируемых экземпляров рабочих процессов

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

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

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

Универсальные хосты

Универсальный узел — это узел, где значение свойства метаданных WorkflowServiceType для универсальных узлов установлено в значение WorkflowServiceType.Any, чтобы указать, что он может обрабатывать любой тип рабочего процесса. Универсальный хост имеет параметр XName с именем ActivationType.

В настоящее время хранилище экземпляров рабочих процессов SQL поддерживает универсальные узлы со значением параметра ActivationType, заданного значением WAS. Если параметр ActivationType не установлен на WAS, хранилище экземпляров рабочих процессов SQL выдает исключение InstancePersistenceException. Служба управления рабочими процессами, которая поставляется с функциями размещения Windows Server AppFabric, является универсальным узлом, который имеет тип активации, заданный как WAS.

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

Период обнаружения запускаемых экземпляров

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