我想实现下一个工作流场景:
我有两个分支的工作流服务。 Operation2(接收活动)与从消息头初始化的CorrelationHandle“handle2”相关联。
下一步是:
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
答案 0 :(得分:0)
根据我的经验,您无法重新初始化关联句柄。您需要为要关联的每个键创建单独的关联句柄。
答案 1 :(得分:0)
不要使用Pick。使用Parallel并将并行设置为仅在您确定对话结束时才终止。 Parallel有一个属性,您可以在其中设置终止条件。