《WF编程》系列之25 – 基本活动:InvokeWorkflowActivity
4.1.8 InvokeWorkflowActivity
InvokeWorkflow活动可以异步的执行另一个工作流.因为执行过程是异步的,所以我们无法获取另一个工作流的输出参数,但我们可以和宿主建立额外的通信机制来获取其输出.
在设计器中,我们设置InvokeWorkflow的TargetWorkflow属性来引用想要执行的工作流类型,我们可以选择项目内或引用程序集的工作流类型.设置了目标类型之后,属性面板中就会列出目标类型的工作流参数,我们可以将其与当前工作流的域或属性绑定.在开始第二个工作流之前, InvokeWorkflow活动将触发Invoking事件,可以在此事件内编写代码来初始化参数.
InvokeWorkflow活动允许我们独立的执行一个工作流.举例来说,一个软件bug跟踪工作流在每次新的build到达时都可能要进行好几中不同类型的测试,而其中每一种测试都可能被设计为一个工作流.




Windie Chai @ 豆瓣
windiechai @ Twitter
windiechai @ 新浪微博
你好
我想问一下,使用InvokeWorkflowActivity如何传递参数到子工作流去?
在Invoking事件处理程序中怎样写?
@尽风仁文章的意思是说,当你指定了TargetWorkflow之后,InvokeWorkflowActivity的属性面板中就会显示出目标工作流的共公属性,你可以将它们绑定到本地的变量,然后就可以在Invoking事件中给这些本地变量赋值了。
@Windie Chai(笑煞天)
感��回复!
我明白了,当我指定了TargetWorkflow之后,面板上会出现TargetWorkflow的所有公开属性。通过给这些属性添加绑定来让WorkflowRuntime完成赋值。
那么,在Invoking事件中,我能够做什么呢?
初始化参数?这个通过设定绑定就可以了。
@尽风仁绑定是在属性面板里做的。但绑定好之后,你总得给本地变量赋值吧?不然目标工作流如何拿到输入参数?Invoking事件就是给本地变量复制的地方,当然,只要在InvokeWorkflowActivity执行之前给绑定的本地变量赋值都是有效的。
[...] 《WF编程》系列之25 – 基本活动:InvokeWorkflowActivity [...]