从两个不同的操作开始/完成工作流服务

时间:2012-02-26 20:15:40

标签: workflow-foundation-4 workflowservice

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

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

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

TIA

enter image description here

1 个答案:

答案 0 :(得分:3)

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

你当然可以完全摆脱选择,并有一个序列与开始工作流 - >做一些东西 - >完成工作流程,但我怀疑这只是因为您的图表已经过度简化了您的方案。

可能你应该问自己的是

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

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

请记住,Receive活动将阻止当前分支并等待消息,因此您不需要延迟来继续检查该值,实际上有一个延迟,您的活动将不必要地唤醒并寻找输入时没有。相当昂贵且不可扩展。