工作流服务相关性

时间:2011-09-30 15:09:06

标签: workflow workflow-foundation workflow-foundation-4 correlation workflowservice

我想实现下一个工作流场景:  enter image description here
我有两个分支的工作流服务。 Operation2(接收活动)与从消息头初始化的CorrelationHandle“handle2”相关联。

enter image description here

下一步是:

1)有人调用Operation1并初始化Operation2的相关处理程序。因此,Operation2的相关值与Operation1的相关值不同,应该在执行Operation1时在运行时获得。 2)使用相关值客户端可以调用Operation2 3)如果相关性不正确Operation2仍然应该执行但是使用自定义逻辑。

问题是,当我打电话给第一个服务时,我得到一个例外:

  

CorrelationHandle已经与BookmarkScope'{书签一起使用   范围ID x}',因此它不能与BookmarkScope'{书签一起使用   范围ID y}'



调试显示即使我只调用Operation1,来自Operation2的“handle2”也在Receive2活动中初始化了一些值!所以我似乎无法重新初始化它。

有什么想法可以解决吗?

  

更新:

我附带了源代码文件,因此您可以重现该问题。只需启动Operation1。

http://dl.dropbox.com/u/27847776/WorkflowCorrelation.zip

事先谢谢,

-Petro

2 个答案:

答案 0 :(得分:0)

根据我的经验,您无法重新初始化关联句柄。您需要为要关联的每个键创建单独的关联句柄。

答案 1 :(得分:0)

不要使用Pick。使用Parallel并将并行设置为仅在您确定对话结束时才终止。 Parallel有一个属性,您可以在其中设置终止条件。