用InvokeWorkflow调用外部工作流.docx

用InvokeWorkflow调用外部工作流.docx

ID:27247784

大小:71.93 KB

页数:5页

时间:2018-12-02

用InvokeWorkflow调用外部工作流.docx_第1页
用InvokeWorkflow调用外部工作流.docx_第2页
用InvokeWorkflow调用外部工作流.docx_第3页
用InvokeWorkflow调用外部工作流.docx_第4页
用InvokeWorkflow调用外部工作流.docx_第5页
资源描述:

《用InvokeWorkflow调用外部工作流.docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、用InvokeWorkflow调用外部工作流  这儿要问你一个问题:假如你有一个正在执行的工作流,该工作流能执行第二个工作流吗?  答案是Yes!有这样一个活动,InvokeWorkflow活动,可用它来启动第二个工作流。我们通过一个例子来简要地看看这个活动。我们将创建一个新的控制台应用程序示例来启动一个工作流,该工作流只是向控制台输出一条信息。在输出该信息后,该工作流实例启动第二个工作流实例,被启动的工作流实例也输出一条信息,这样就生动地为我们展示了两个工作流都执行了。  调用第二个工作流  1.和前面一样,本章的源代码中包含了完整版和练习版两种版本的Wor

2、kflowInvoker应用程序。我们现在打开练习版的WorkflowInvoker解决方案。  2.在VisualStudio加载WorkflowInvoker解决方案后,在WorkflowInvoker解决方案中添加一个新的基于顺序工作流库的项目,工作流的名称命名为:Workflow1,保存该项目。  3.下一步,从工具箱中拖拽一个Code活动到工作流视图设计器界面上。在该活动的ExecuteCode属性中键入“SayHello”,然后按下回车键。 4.VisualStudio会自动切换到代码编辑界面。定位到VisualStudio刚刚添加的SayHell

3、o方法,在该方法内输入下面的代码://Outputtexttotheconsole.Console.WriteLine("HellofromWorkflow1!");  5.我们现在需要添加第二个要执行的工作流,因此重复步骤2,但工作流的名称命名为:Workflow2。重复步骤3和4,但把信息“HellofromWorkflow1!”替换为“HellofromWorkflow2!”,当然工作流源文件的名称也要重命名为workflow2.cs,以避免冲突。  6.我们想在第一个工作流中调用第二个工作流,但这样做,我们还需要添加对第二个工作流的引用。在这之前,我们

4、需要编译并生成Workflow1。  7.回到VisualStudio解决方案资源管理器,为Workflow1项目添加对项目Workflow2的项目级引用。  8.回到Workflow1的工作流视图设计器界面上。这次,拖拽一个InvokeWorkflow活动到你的顺序工作流视图设计器界面上。    9.看看这个新活动的属性,我们会看到它有一个“TargetWorkflow”属性需要我们去设置。点击以激活它的TargetWorkflow属性,然后点击它的浏览(...)按钮(该按钮带三个点)。    10.这将打开一个“浏览和选择一个.NET类型”对话框。在左边面

5、板中选择Workflow2,这将在右边的面板中显示Workflow2类型。在右边的面板中选择Workflow2类型(Workflow2.Workflow2是它的完全限定名称),然后点击确定。   11.然后VisualStudio会检查该Workflow2工作流,并在工作流视图设计器的InvokeWorkflow活动内部展示它的图形界面。    12.工作流现在就完整地实现了,我们现在需要为WorkflowInvoker项目添加对Workflow1和Workflow2的项目引用。  13.接下来在Program.cs文件中定位到下面的代码上:  Console

6、.WriteLine("Waitingforworkflowcompletion.");  14.在上面的代码下添加如下代码://Createtheworkflowinstance.WorkflowInstanceinstance= workflowRuntime.CreateWorkflow(typeof(Workflow1.Workflow1));//Starttheworkflowinstance.instance.Start();  15.我们现在将为宿主应用程序添加少量的代码,以便每个工作流完成后通知我们。在WorkflowCompleted的事件处

7、理程序中插入下面的代码:if(e.WorkflowDefinitionisWorkflow1.Workflow1) Console.WriteLine("Workflow1completed.");else Console.WriteLine("Workflow2completed.");waitHandle.Set();  第一个完成的工作流设置AutoResetEvent,以便强制应用程序等待工作流完成。我们可添加代码以使应用程序等待所有的工作流,但出于展示的目的这已足够。假如你编译并执行该WorkflowInvoker应用程序,你将在控制台中看到下面图8

8、-4中所展示的输出结果。假如输出信息的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。