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

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

 2010-10-01 08:20:45 来源:WEB开发网   
核心提示: 在我们的服务接口上,我们具有三个新的特性,《WF编程》系列之47 第八章 工作流中的通信(5),这些特性包括了运行时用于在我们的服务和工作流中独立的活动之间建立会话的相关性元数据,相关性参数 我们把CorrelationParameter特性添加到了我们的接口中, 我们建立了我们在服务接口中所

在我们的服务接口上,我们具有三个新的特性。这些特性包括了运行时用于在我们的服务和工作流中独立的活动之间建立会话的相关性元数据。

相关性参数

我们把CorrelationParameter特性添加到了我们的接口中。这个特性指定了参数的名称,运行时根据它将一个事件映射到一个特定的HandleExternalEvent活动。我们将userName指定为我们的相关性参数。运行时将会在通信服务接口中所有的方法和事件上寻找带有userName名称的参数。当它发现了这样一个参数,它就会把这个参数用于相关性。

如果有多个相关性参数,那么CorrelationParameter特性就可以在一个接口上多次出现,我们只能在接口类型上使用这个特性。

相关性初始化

我们已经对RequestVote方法使用了CorrelationInitializer特性进行装饰。工作流运行时会把对RequestVote的调用识别为工作流和通信服务之间会话的开始。运行时还会把用户名参数识别为相关性参数,并保存这个值。随后,当事件到达工作流时,工作流将会对保存的值和即将收到的相关性参数进行比较。

有一个明显的问题,对于一个事件而言,相关性参数是什么?工作流又是如何知道的?这里并没有用户名参数——我们在事件参数中封装了用户名。这就是第三个特性CorrelationAlias所在的地方。

相关性别名

我们可以把CorrelationAlias特性应用到服务接口中的方法和事件上,从而在独立的成员上覆盖CorrelationParameter特性。我们把这个特性放在VoteCompleted事件上。这个特性告诉运行时从参数e的UserName属性中取出用户名的相关性参数。

我们建立了我们在服务接口中所需要的所有元数据。工作流运行时将具有充分的信息来把传递scott用户名的CallExternalMethod活动与等待scott投票结果的HandleExternalEvent活动相关联。我们下一步要做的是优化工作流中的相关性元数据。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:WF 编程 系列

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