Windows工作流:从工作流中启动单独的工作流

时间:2009-06-10 20:22:47

标签: workflow workflow-foundation

这似乎比我猜想的要复杂得多。我有一个工作流程需要启动代码中的另一个工作流程。这是怎么做到的?我是否必须首先获得对当前工作流实例的WorkflowRuntime的引用?

2 个答案:

答案 0 :(得分:7)

我认为InvokeWorkflowActivity可能就是你想要的。我已经将它用于从其他工作流程中启动工作流程,并且运行良好。

请注意新工作流程(就像所有工作流程一样)是异步执行的,因此“父工作流程”将在启动子工作流程后直接继续执行。

如果您(出于某种原因)无法使用InvokeWorkflowActivity(例如,如果要从父工作流调用的服务中的代码启动新工作流),您将以某种方式获取保持工作流运行时实例。

我接近这种情况的方法是在服务接口中声明一个事件,并让工作流主机在将服务添加到运行时时为该事件附加一个侦听器。然后,您将拥有一个可以从服务中调用的代码点(通过引发事件),该代码点也可以访问运行时;那么你就拥有了启动新工作流程所需的一切。

答案 1 :(得分:1)

如果您不需要显式活动,则可以使用运行时提供的IStartWorkflow服务。

另外,如果你需要同步执行,我会在这里看一下开始:

http://www.masteringbiztalk.com/blogs/jon/PermaLink,guid,33cfb35c-aca7-4a5e-8b35-ff983b0b83e4.aspx