我有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”操作。请确保以正确的顺序执行操作,并确保使用中的绑定提供有序的交付保证。
任何人都可以帮我解决这个问题。
答案 0 :(得分:1)
也许我错过了一些东西,但通常在您第一次调用ReceiveB时,工作流将进入序列C.此时,ReceiveB不再处于活动状态,后续调用将失败。
同样,如果您调用ReceiveC,并且您正在关联其ID的实例位于ReceiveB,则它将失败。
您是否希望每个Receive启动工作流程的新实例?如果是这种情况并且这是WF4,无处不在的Maurice在Workflow Receive activity and message correlation上有一个很好的博客条目。