如何:从工作流应用程序访问服务
本主题说明如何从工作流控制台应用程序调用工作流服务。 需要先完成如何:使用消息传递活动创建工作流服务主题。 尽管本主题说明如何从工作流应用程序调用工作流服务,但是,当从工作流应用程序调用任何 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”)。