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

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

 2010-10-01 08:20:45 来源:WEB开发网   
核心提示: 当我们使用CallExternalMethod和HandleExternalEvent活动来和宿主进行通信时,我们正工作在一个比较高的抽象级别上,《WF编程》系列之47 第八章 工作流中的通信(9),像基于角色的授权和交互性这样的内嵌特性,可以解决很多与消息系统关联的头痛之事,在下面的截图的底

当我们使用CallExternalMethod和HandleExternalEvent活动来和宿主进行通信时,我们正工作在一个比较高的抽象级别上。像基于角色的授权和交互性这样的内嵌特性,可以解决很多与消息系统关联的头痛之事。然而,在某些情况下,当一个设计需要额外的弹性时,就需要更接近本质(close to the metal)。在下一节,我们将看一下在这些高级通信活动之下的队列机制。

工作流队列

如果你回顾一下本章开头的图表,就会记得关于工作流运行时截取事件的会话。在一个特定的工作流实例中把事件发送到恰当的活动,这是运行时的职责。但是工作流如何发送一个事件呢?运行时不能只在一个任意的线程上触发事件——在一个实例中每次只有一个线程能够执行。

答案是一个查询服务,它是工作流运行时的一部分。活动使用这个服务来创建队列,这个队列可以保存即将到来的数据。当一个项到达队列中时,一个活动就会订阅这个通知。这些队列成为工作流的一部分,在持久层服务序列化并保存这个工作流实例时,和工作流一起被序列化。这就是为什么我们的数据交换的事件参数被标记为可序列化的原因之一。

当运行时发送一个事件到工作流时,它会为该事件取出正确的队列,并在这个队列上添加事件参数。当选择了正确的队列时,每个队列都会暴露一些信息,包括那些允许运行时使类型和相关性参数匹配的信息。在下面的截图的底部,我们暗示了运行时将使用工作流队列名称来路由(route)事件。我们将在下一节中看到关于队列名称的细节。

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

上一页  4 5 6 7 8 9 10  下一页

Tags:WF 编程 系列

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