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

Chr*_*ris 3 workflow workflow-foundation

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

Fre*_*örk 7

我认为InvokeWorkflowActivity可能正是您所寻找的.我已经将它用于从其他工作流程中启动工作流程,并且运行良好.

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

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

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