工作流服务关联

问题描述:

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

enter image description here

流量是下一个:

1)有人打电话Operation1并将其初始化相关处理程序操作2。因此,Operation2的相关值与Operation1不同,应在运行时执行Operation1时获取。
2)使用相关值客户端可能会调用Operation2。
3)如果相关性不正确Operation2应仍然执行,但与自定义逻辑。

问题是,当我把第一的服务我得到一个异常:

的CorrelationHandle已经与BookmarkScope使用“{书签 范围ID X}”,因此它不能与BookmarkScope使用“{书签 范围ID Y}”



调试表明,即使我打电话Operation1只有“handle2”从操作2也与Receive2活动有一定值初始化!所以我似乎无法重新初始化它。

任何想法如何解决?

UPDATE:

我已经附加文件的源代码,所以你可能会重现该问题。只需启动Operation1。

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

由于事前,

-Petro

+0

您正在使用基于内容的关联还是基于内容的关联?你提到标题,所以我假设你正在使用WCF上下文绑定。如果是这样,你的上下文绑定类型是什么? – SliverNinja

+0

我正在使用基于内容的关联和基本的http绑定。我确实关联了我的自定义WCF消息头(在基本http绑定中它似乎是SOAP头)。客户端必须在消息中传递所需的标题以与特定的工作流实例进行核对。我刚刚附上消息来源,以便您可以查看。 –

根据我的经验,你不能重新初始化的相关处理。您需要为要关联的每个键创建单独的相关句柄。

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