SqlWorkflowInstanceStore.RunnableInstancesDetectionPeriod Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Задает временной период, по истечении которого хранилище экземпляра рабочего процесса SQL выполняет задачу обнаружения, чтобы найти любые готовые к запуску или активации экземпляры рабочего процесса, появившиеся в базе данных постоянного хранения после предыдущего цикла обнаружения.
public:
property TimeSpan RunnableInstancesDetectionPeriod { TimeSpan get(); void set(TimeSpan value); };
public TimeSpan RunnableInstancesDetectionPeriod { get; set; }
member this.RunnableInstancesDetectionPeriod : TimeSpan with get, set
Public Property RunnableInstancesDetectionPeriod As TimeSpan
Значение свойства
Возвращает TimeSpan.
Примеры
В следующем образце кода показано использование атрибута RunnableInstancesDetectionPeriod в классе SqlWorkflowInstanceStore.
static void Main(string[] args)
{
// Create service host.
WorkflowServiceHost host = new WorkflowServiceHost(new CountingWorkflow(), new Uri(hostBaseAddress));
// Add service endpoint.
host.AddServiceEndpoint("ICountingWorkflow", new BasicHttpBinding(), "");
// Define SqlWorkflowInstanceStoreBehavior:
// Set interval to renew instance lock to 5 seconds.
// Set interval to check for runnable instances to 2 seconds.
// Instance Store does not keep instances after it is completed.
// Select exponential back-off algorithm when retrying to load a locked instance.
// Instance state information is compressed using the GZip compressing algorithm.
SqlWorkflowInstanceStoreBehavior instanceStoreBehavior = new SqlWorkflowInstanceStoreBehavior(connectionString);
instanceStoreBehavior.HostLockRenewalPeriod = new TimeSpan(0, 0, 5);
instanceStoreBehavior.RunnableInstancesDetectionPeriod = new TimeSpan(0, 0, 2);
instanceStoreBehavior.InstanceCompletionAction = InstanceCompletionAction.DeleteAll;
instanceStoreBehavior.InstanceLockedExceptionAction = InstanceLockedExceptionAction.AggressiveRetry;
instanceStoreBehavior.InstanceEncodingOption = InstanceEncodingOption.GZip;
host.Description.Behaviors.Add(instanceStoreBehavior);
// Open service host.
host.Open();
// Create a client that sends a message to create an instance of the workflow.
ICountingWorkflow client = ChannelFactory<ICountingWorkflow>.CreateChannel(new BasicHttpBinding(), new EndpointAddress(hostBaseAddress));
client.start();
Console.WriteLine("(Press [Enter] at any time to terminate host)");
Console.ReadLine();
host.Close();
}
Комментарии
SqlWorkflowInstanceStore выполняется как внутренняя задача, которая периодически активируется и выполняет проверку наличия запускаемых экземпляров в базе данных сохраняемости. Экземпляр можно запустить, если он не находится в состоянии приостановки или завершен и удовлетворяет следующим условиям:
Экземпляр разблокирован и имеет таймер в состоянии ожидания, время которого истекло.
Экземпляр разблокирован и его состояние — Выполняется.
Время блокировки экземпляра истекло.
Хранилище экземпляров рабочих процессов SQL формирует событие HasRunnableWorkflowEvent при обнаружении запускаемого экземпляра в базе данных и находит узел рабочего процесса, поддерживающий загрузку экземпляра, запущенного на этом компьютере.
Узел рабочих процессов при получении этого события выполняет команду TryLoadRunnableWorkflowCommand в хранилище экземпляров, чтобы загрузить экземпляр в память.
Свойство имеет тип TimeSpan, а значение имеет вид "чч:мм:сс". Минимальное значение — "00:00:01" (1 с). Если этот параметр опущен, по умолчанию используется значение "00:00:05" (5 секунд). Этот параметр является необязательным.