工作流选择活动在操作完成之前不发送回复

时间:2012-03-28 21:25:34

标签: workflow-foundation-4

我有一个包含Pick活动的工作流程。每个PickBranch都由WCF请求触发。然后,触发的分支发送对请求的响应并执行Action活动。但是我看到的行为表明在Action活动完成之前没有发送响应,导致原始请求超时,具体取决于Action活动完成所需的时间。

enter image description here

在上面的PickBranch中,我将工作订单添加到移动数据库。每个工作单最多需要16秒才能添加到数据库中。随着工单数量的增加,原始请求超时的可能性越大。我做错了什么?

4 个答案:

答案 0 :(得分:2)

好的,我想我有一个解决方案。根据{{​​3}},我在SendReplyToReceive之后添加了一个Delay活动,然后工作流程开始按预期运行。

enter image description here

答案 1 :(得分:0)

刚试过这个,它运行正常。如果我在一个触发器内有一个发送和接收的选择并且在操作中有延迟,则会立即收到回复。

您确定SendReply活动上的请求似乎设置正确吗?

Patrick仍然是对的,您应该将您的数据库活动实现为AsyncCodeActivity,但这不是您的回复被延迟的原因。

答案 2 :(得分:0)

我在 SendReplyToReceive 上检查 PersistBeforeSend 到True的经验解决了这个问题。在SendReplyToReceive之后放置Persist块也有帮助。

答案 3 :(得分:-1)

这是按预期工作的。如果操作需要这么长时间,那么通过异步调用它们会更好吗?在这里查看AsyncCodeActivity:

http://msdn.microsoft.com/en-us/library/system.activities.asynccodeactivity.aspx