WorkflowInstance.EnqueueItemOnIdle Yöntem

Tanım

İş akışı boşta olduğunda belirtilen iş akışı kuyruğuna bir ileti gönderir. EnqueueItemOnIdle(IComparable, Object, IPendingWork, Object) , iş akışı bir boşta noktasına ulaşana kadar bekler ve iş akışı zamanlayıcısının boşta olduğunu doğruladıktan sonra (yani etkin bir işlem yürütülmeden) sıraya alınır.

public:
 void EnqueueItemOnIdle(IComparable ^ queueName, System::Object ^ item, System::Workflow::Runtime::IPendingWork ^ pendingWork, System::Object ^ workItem);
public void EnqueueItemOnIdle (IComparable queueName, object item, System.Workflow.Runtime.IPendingWork pendingWork, object workItem);
member this.EnqueueItemOnIdle : IComparable * obj * System.Workflow.Runtime.IPendingWork * obj -> unit
Public Sub EnqueueItemOnIdle (queueName As IComparable, item As Object, pendingWork As IPendingWork, workItem As Object)

Parametreler

queueName
IComparable

WorkflowQueue öğesinin adı.

item
Object

Sıraya almak için nesne.

pendingWork
IPendingWork

IPendingWork Teslim edildiğinde item gönderenin bilgilendirilmesini sağlayan bir.

workItem
Object

Yöntemlere geçirilecek IPendingWork bir nesne.

Özel durumlar

queueNamenull başvurudur (Nothing Visual Basic).

İş akışı çalışma zamanı altyapısı çalışmıyor.

-veya- İş akışı örneği askıya alınır.

-veya- tarafından WorkflowQueue belirtilen queueName yok.

-veya- tarafından WorkflowQueue belirtilen queueName etkin değil.

Örnekler

Aşağıdaki örnek, yöntemini kullanarak bir iş akışı örneğine bilgi göndermeyi EnqueueItemOnIdle gösterir. İlk olarak bir WorkflowInstance nesnesi oluşturulur ve başlatılır; ardından arabirimini uygulayan IPendingWork bir nesne oluşturulur. EnqueueItemOnIdle daha sonra çağrılır ve kuyruk adı, sıraya alınan öğe ve pendingWork nesnesinin yöntemlerine geçirilecek iş öğesi için dize değerlerini geçirir.

// Create a workflow runtime environment
WorkflowRuntime workflowRuntime = new WorkflowRuntime();
// Create a new instance of the out-of-box SqlWorkflowPersistenceService.
// Use the non-locking constructor, since we're only creating a single Workflow Runtime.
NameValueCollection parameters = new NameValueCollection();
parameters.Add("ConnectionString",
    "Initial Catalog=SqlPersistenceService;Data Source=localhost;Integrated Security=SSPI;");
//Set UnloadOnIdle to true, so that the service will persist the workflow
parameters.Add("UnloadOnIdle", "true");
SqlWorkflowPersistenceService persistenceService =
   new SqlWorkflowPersistenceService(parameters);

// Add the service to the runtime
workflowRuntime.AddService(persistenceService);
// Create a WorkflowInstance object
WorkflowInstance workflowInstance = workflowRuntime.CreateWorkflow(typeof(Workflow1));
// Start the instance
workflowInstance.Start();
// Create an instance of a class that implements IPendingWork for notification
PendingService pendingWork = new PendingService();
// Send the workflow the message
workflowInstance.EnqueueItemOnIdle("ActionQueue", "StartWork", pendingWork, "ActionItem");
' Create a workflow runtime environment
Dim workflowRuntime As New WorkflowRuntime()
' Create a new instance of the out-of-box SqlWorkflowPersistenceService.
' Use the non-locking constructor, since we're only creating a single Workflow Runtime.
Dim parameters As New NameValueCollection()
parameters.Add("ConnectionString", _
    "Initial Catalog=SqlPersistenceServiceData Source=localhostIntegrated Security=SSPI")
'Set UnloadOnIdle to true, so that the service will persist the workflow
parameters.Add("UnloadOnIdle", "true")
Dim persistenceService As _
   New SqlWorkflowPersistenceService(parameters)

' Add the service to the runtime
workflowRuntime.AddService(persistenceService)
' Create a WorkflowInstance object
Dim workflowInstance As WorkflowInstance = workflowRuntime.CreateWorkflow(GetType(Workflow1))
' Start the instance
workflowInstance.Start()
' Create an instance of a class that implements IPendingWork for notification
Dim pendingWork As New PendingService()
' Send the workflow the message
workflowInstance.EnqueueItemOnIdle("ActionQueue", "StartWork", pendingWork, "ActionItem")

Açıklamalar

İş akışı örneğinin boşta olmasını bekler ve ardından öğesini item belirtilen WorkflowQueueöğesine gönderir. İş akışı örneği askıya alınırken çağrısı EnqueueItemOnIdle yaparsanız, iş akışı çalışma zamanı altyapısı bir InvalidOperationExceptionoluşturur. İleti teslim edildiğinde bildirim almak istiyorsanız, hizmetinize uygulayabilir IPendingWork ve öğesine bir workItem ve nesnesi IPendingWork EnqueueItemgeçirebilirsiniz. Böyle bir bildirim istemiyorsanız ve workItemiçin pendingWork null başvuru (NothingVisual Basic içinde) geçirebilirsiniz.

Bu yöntemi bir durum makinesi iş akışıyla kullanırken, "'' kuyruğu{0} etkinleştirilmedi" iletisini içeren bir özel durum alabilirsiniz. Durum makinesinin geçerli durumu belirli bir olayı nasıl işleyeceklerini bilmediğinde bu durum oluşur. Örneğin, geçerli durumdan başka bir durum ''{0} kuyruğu tarafından temsil edilen öğesini içeren değerini içerdiğinde.EventDrivenActivity HandleExternalEventActivity

Şunlara uygulanır