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


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

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

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

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

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

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

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

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

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

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

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

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

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

Универсальные узлы

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

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

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

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

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