本主题说明如何从工作流控制台应用程序调用工作流服务。 需要先完成如何:使用消息传递活动创建工作流服务主题。 尽管本主题说明如何从工作流应用程序调用工作流服务,但是,当从工作流应用程序调用任何 Windows Communication Foundation (WCF) 服务时,同样可以使用相同方法。
创建工作流控制台应用程序项目
启动 Visual Studio 2012。
加载在如何:使用消息传递活动创建工作流服务主题中创建的 MyWFService 项目。
右键单击“解决方案资源管理器”中的“MyWFService”解决方案,选择“添加”,然后选择“新建项目”。 从项目类型列表的“已安装的模板”和“工作流控制台应用程序”中,选择“工作流”。 将项目命名为 MyWFClient 并保存在默认位置,如以下插图所示。

单击“确定”按钮关闭“添加新项目”对话框。
创建项目以后,将在设计器中打开 Workflow1.xaml 文件。 单击“工具箱”选项卡打开工具箱(如果尚未打开),然后单击图钉以使工具箱窗口保持打开。
按 Ctrl+F5 生成并启动服务。 与以前一样,将启动 ASP.NET Development Server,并且浏览器将显示 WCF 帮助页。 请注意该页面的 URI,因为在下一步中,您必须使用它。

在“解决方案资源管理器”中,右键单击“MyWFClient”项目,并选择“添加”>“服务引用”。 单击“发现”按钮搜索任何服务的当前解决方案。 在“服务”列表中,单击 Service1.xamlx 旁边的三角形。 单击 Service1 旁边的三角形列出由 Service1 服务实现的约定。 在“服务”列表中,展开“Service1”节点。 “操作”列表中将显示“Echo”操作,如以下插图所示。

保留默认命名空间,然后单击“确定”关闭“添加服务引用”对话框。 将显示以下对话框。

单击“确定”关闭对话框。 接下来,按 Ctrl+Shift+B 生成解决方案。 请注意,工具箱中已添加一个名为“MyWFClient.ServiceReference1.Activities”的部分。 展开此部分,请注意,此时已添加“Echo”活动,如以下插图所示。

将 Sequence 活动拖放到设计器图面。 该活动将位于工具箱的“控制流”部分下。
当焦点位于 Sequence 活动时,单击“变量”链接,然后添加一个名为
inString的字符串变量。 为该变量指定默认值"Hello, world",并指定一个名为outString的字符串变量,如下图所示。
将“Echo”活动拖放到 Sequence 中。 在属性窗口中,将
inMsg参数绑定到inString变量,并将outMsg参数绑定到outString变量,如以下插图所示。 这样会将inString变量的值传入操作中,然后获取返回值,并将返回值放到outString变量中。
将“WriteLine”活动拖放至“Echo”活动下,以显示服务调用返回的字符串。 “WriteLine”活动位于工具箱中的“基元”节点内。 在“WriteLine”活动上的文本框中键入
outString,以将“WriteLine”活动的“Text”参数绑定到outString变量。 现在,此工作流应该如以下插图所示。
右键单击 MyWFService 解决方案,然后选择“设置启动项目”。 选中“多启动项目”单选按钮,并对“操作”列中的每个项目选择“启动”,如以下插图所示。

按 Ctrl+F5 启动服务和客户端。 ASP.NET 开发服务器托管该服务,浏览器显示 WCF 帮助页,客户端工作流应用程序在控制台窗口中启动,并显示从该服务返回的字符串(“Hello, world”)。