WF服务调用序列问题

时间:2011-07-28 02:32:44

标签: workflow-foundation

我有WWF,它有3个Sequences活动,每个序列由ReceiveAndSendReply活动组成。

Ex:
Sequence A
 ReceiveA (ApplicationObject)
 SendReplyA(ApplicationObject)-> initialize correlation with the user defined ID (ApplicationObject.id)
Sequence B
 ReceiveB (ApplicationObject) -> correlation on with the ID
 SendReplyB (Boolean)
Sequence C
 ReceiveC (ApplicationObject) -> correlation on with the ID
 SendReplyC (Boolean)

在三个后续阶段中调用三个服务。 我有两个问题

1)流程工作正常,直到序列B,但是当我调用ReceiveC时,我在客户端出错了

  

InstancePersistenceCommand的执行被中断,因为实例密钥'8f7ff672-1aba-35f1-f7d8-7dca44343be7'未与实例关联。

2)有时我想一次又一次地拨打ReceiveB。但是当我第二次调用ReceiveB时,我收到了以下错误信息。

  

此时无法执行标识为“858ce665-6785-4840-8812-d277b2574a10”的服务实例上的“ApplicationScreeningRequest | {http://tempuri.org/} IApplicationService”操作。请确保以正确的顺序执行操作,并确保使用中的绑定提供有序的交付保证。

任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

也许我错过了一些东西,但通常在您第一次调用ReceiveB时,工作流将进入序列C.此时,ReceiveB不再处于活动状态,后续调用将失败。

同样,如果您调用ReceiveC,并且您正在关联其ID的实例位于ReceiveB,则它将失败。

您是否希望每个Receive启动工作流程的新实例?如果是这种情况并且这是WF4,无处不在的MauriceWorkflow Receive activity and message correlation上有一个很好的博客条目。