Workflow foundation 4 从两个不同的操作启动/完成工作流服务

Workflow foundation 4 从两个不同的操作启动/完成工作流服务,workflow-foundation-4,workflowservice,Workflow Foundation 4,Workflowservice,我有两个接收操作(开始和完成)的工作流(附图)。 这两个操作都与WorkflowId参数相关。我还有FinishWorkflow(bool)参数 我想用start Action启动工作流,然后等待FinishWorkflow参数更改为true(使用FinishWorkflow Action) 我认为当FinishWorkflow操作完成时,整个工作流完成,所以StartWorkflow操作不会等待并检查FinishWorkflow参数。 您知道如何更改FinishWorkflow操作,使其不会结

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

我想用start Action启动工作流,然后等待FinishWorkflow参数更改为true(使用FinishWorkflow Action)

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

短暂性脑缺血发作


是的,您的场景有点难以理解。为什么您的启动工作流在一个选择中?是否希望取消启动工作流操作

当然,您可以完全摆脱选择,并有一个序列,即开始工作流->做一些事情->完成工作流,但我怀疑这只是因为您的图表过于简化了您的场景

也许你应该问自己的是

调用my Finish操作的人员/代码如何得到流程可以完成的通知,或者(取决于您希望如何实现)他们对Finish的调用失败,需要稍后重试?

如果由于您使用的是单向消息,因此上述任何一项都不适用,那么解决此问题的一种方法是将FinishWorkflow保持在while循环中,条件设置为“FinishWorkflow=false”,因此它将保持循环,直到FinishWorkflow变量设置为true后的最后一次调用。然后,您可以去掉内部拾取、Branch2和延迟等。您需要的唯一拾取是在开始之后,分支1将包含您的While,其中包含Finish,分支2将包含任何计算代码,完成后,将Finish工作流变量设置为true


请记住,Receive活动将阻止当前分支并等待消息,因此您不需要延迟来持续检查值,事实上,如果有延迟,您的活动将在没有输入的情况下不必要地醒来并查找输入。非常昂贵且不可扩展。

是的,您的场景有点难以理解。为什么您的启动工作流在一个选择中?是否希望取消启动工作流操作

当然,您可以完全摆脱选择,并有一个序列,即开始工作流->做一些事情->完成工作流,但我怀疑这只是因为您的图表过于简化了您的场景

也许你应该问自己的是

调用my Finish操作的人员/代码如何得到流程可以完成的通知,或者(取决于您希望如何实现)他们对Finish的调用失败,需要稍后重试?

如果由于您使用的是单向消息,因此上述任何一项都不适用,那么解决此问题的一种方法是将FinishWorkflow保持在while循环中,条件设置为“FinishWorkflow=false”,因此它将保持循环,直到FinishWorkflow变量设置为true后的最后一次调用。然后,您可以去掉内部拾取、Branch2和延迟等。您需要的唯一拾取是在开始之后,分支1将包含您的While,其中包含Finish,分支2将包含任何计算代码,完成后,将Finish工作流变量设置为true


请记住,Receive活动将阻止当前分支并等待消息,因此您不需要延迟来持续检查值,事实上,如果有延迟,您的活动将在没有输入的情况下不必要地醒来并查找输入。相当昂贵且不可扩展。

你的问题很难理解,不知道你想解决什么。您知道平台更新1中有状态机吗?我只是喜欢它,所以尽可能地使用它。触发器、转换、状态等。你的问题很难理解,不知道你想解决什么。您知道平台更新1中有状态机吗?我只是喜欢它,所以尽可能地使用它。触发器、转换、状态等。。