Workflow 工作流服务关联

Workflow 工作流服务关联,workflow,workflow-foundation,workflow-foundation-4,correlation,workflowservice,Workflow,Workflow Foundation,Workflow Foundation 4,Correlation,Workflowservice,我想实施下一个工作流场景: 我有两个分支机构的工作流服务。Operation2(接收活动)与从消息头初始化的CorrelationHandle“handle2”相关联 接下来是流程: 1) 有人调用Operation1,它初始化Operation2的相关处理程序。因此,情况是Operation2的相关值与Operation1的相关值不同,应该在运行时执行Operation1时获得相关值。 2) 使用相关值客户端可以调用操作2。 3) 如果相关性不正确,则仍应使用自定义逻辑执行操作2。 问题是

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

接下来是流程:

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

问题是,当我调用第一个服务时,我得到一个异常:

CorrelationHandle已与BookmarkScope“{bookmark”一起使用 作用域id x}',因此不能与BookmarkScope{bookmark一起使用 作用域id y}'



调试表明,即使我调用Operation1,Operation2中的“handle2”也会在Receive2活动中用一些值初始化!!!因此,我似乎无法重新初始化它

有什么办法可以解决吗?

更新:

我已经附上了源代码文件,所以你可以复制的问题。只需启动操作1

事先谢谢,


-Petro

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

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

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

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

您使用的是基于上下文的关联还是基于内容的关联?您提到了头,所以我假设您使用的是WCF上下文绑定。如果是这样,您的上下文绑定类型是什么?我使用的是基于内容的关联和基本http绑定。我在自定义WCF消息头上进行关联(在基本http绑定中,它似乎是SOAP头)。客户端必须将消息中所需的头传递给具有特定工作流实例的corelate。我刚刚附上了一些资料,你可以看一下。你使用的是基于上下文的关联还是基于内容的关联?您提到了头,所以我假设您使用的是WCF上下文绑定。如果是这样,您的上下文绑定类型是什么?我使用的是基于内容的关联和基本http绑定。我在自定义WCF消息头上进行关联(在基本http绑定中,它似乎是SOAP头)。客户端必须将消息中所需的头传递给具有特定工作流实例的corelate。我刚刚附上了资料来源,以便您进行审查。