0

我有两个接收操作(开始和完成)的工作流程(附加图像)。两个操作都与 WorkflowId 参数相关。我也有 FinishWorkflow (bool) 参数。

我想使用 Start Action 启动工作流,然后等到 FinishWorkflow 参数更改为 true(使用 FinishWorkflow 操作)。

我认为当 FinishWorkflow 动作完成时,整个工作流程就完成了,所以 StartWorkflow 动作不会等待并检查 FinishWorkflow 参数。您知道如何更改 FinishWorkflow 操作,使其不会结束整个工作流程吗?

TIA

在此处输入图像描述

4

1 回答 1

3

是的,您的情况有点难以理解。为什么您的 Start Workflow 在 Pick 中?您是否希望取消“启动工作流”操作?

您当然可以完全摆脱选择并使用 Start Workflow -> Do Some Stuff -> Finish Workflow 进行排序,但我怀疑这只是因为您的图表过于简化了您的场景。

可能你应该问自己的是

调用我的 Finish 操作的人/代码如何得到通知该过程可以完成或(取决于您希望它如何实现)他们的完成调用失败并且他们需要稍后再试一次?.

如果以上都不适用,因为您使用的是单向消息传递,那么解决问题的一种方法是将 FinishWorkflow 保持在 while 循环中,条件设置为“FinishWorkflow = false”,因此它将一直循环直到最后一次调用FinishWorkflow 变量设置为 true。然后,您可以摆脱 Inner Pick、Branch2 和延迟等。您需要的唯一选择是在 Start 之后,分支之一将包含您的 While 和 Finish,而 Branch 2 将包含您拥有的任何计算代码,当完成,将完成工作流变量设置为 true。

请记住,接收活动将阻塞当前分支并等待消息,因此您不需要延迟来继续检查值,事实上,如果有延迟,您的活动将不必要地醒来并在有输入时寻找输入没有任何。相当昂贵且不可扩展。

于 2012-02-27T01:49:56.010 回答