WEB开发网
开发学院软件开发C语言 《WF编程》系列之47 第八章 工作流中的通信 阅读

《WF编程》系列之47 第八章 工作流中的通信

 2010-10-01 08:20:45 来源:WEB开发网   
核心提示: WorkflowQueue和WorkflowQueueInfo 下面的截图显示了WorkflowQueue类,它代表了在工作流实例中的一个队列;还显示了WorkflowQueueInfo类,《WF编程》系列之47 第八章 工作流中的通信(10),它描述了一个队列,代表性地,我们将在事件处理程序中

WorkflowQueue和WorkflowQueueInfo

下面的截图显示了WorkflowQueue类,它代表了在工作流实例中的一个队列;还显示了WorkflowQueueInfo类,它描述了一个队列。代表性地,当我们使用诸如HandleExternalEvent或Delay这样的事件侦听活动时,我们不需要知道这些底层的队列。然而,这些队列不能支持大量的场景,它们在更高级的抽象上是不可能的。让我们看一些例子。

《WF编程》系列之47 第八章 工作流中的通信

查找和等待活动

让我们回到本章开始的那个工作流。在工作流中,我们在Parallel活动的两个分支中使用了HandleExternalEvent活动。这些事件处理程序等待来自本地通信服务的投票事件到达,并使用相关性记号来保证投票到达正确的分支。我们将在事件处理程序中为运行时的WorkflowIdled事件调用下面的代码。当工作流被阻塞并等待事件到达时,运行时触发这个事件。

static void DumpQueueInfo(WorkflowInstance workflow)
{
  ReadOnlyCollection<WorkflowQueueInfo> queueInfos;
  queueInfos = workflow.GetWorkflowQueueData();

  Console.WriteLine("Queue Info for {0}", workflow.InstanceId);

  for (int i = 0; i < queueInfos.Count; i++)
  {
    Console.WriteLine();
    Console.WriteLine("Queue #{0}", i.ToString());
    Console.WriteLine(queueInfos[i].QueueName);
    Console.WriteLine("Subscribed activities: ");

    ReadOnlyCollection<string> names = queueInfos[i].SubscribedActivityNames;

    foreach (string name in names)
    {
      Console.Write("{0} ", name);
    }

    Console.WriteLine();
    Console.WriteLine();
  }
}

上一页  5 6 7 8 9 10 

Tags:WF 编程 系列

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接