如何:创建工作流
本主题适用于 Windows Workflow Foundation 4。
工作流可基于内置活动以及自定义活动来构造。本主题分步介绍如何创建使用内置活动(如 Flowchart 活动)以及之前的如何:创建活动主题中的自定义活动的工作流。该工作流模拟猜数游戏。
注意: |
---|
入门教程中的每个主题都依赖于前面的主题。若要完成本主题,必须先完成如何:创建活动。 |
创建工作流项目
使用 Visual Studio 2010 打开之前的如何:创建活动主题中的解决方案。
在**“解决方案资源管理器”中右击“GettingStartedTutorial”解决方案,然后依次选择“添加”和“新建项”**。
提示: 如果未显示“解决方案资源管理器”窗口,请从“视图”菜单选择“解决方案资源管理器。 在**“已安装模板”列表中,依次选择“Visual C#”和“工作流”(或依次选择“Visual Basic”和“工作流”**)。
注意: 根据在 Visual Studio 中配置为主要语言的编程语言的不同,“Visual C#”或“Visual Basic”节点可能位于“安装模板”列表下的“其他语言”节点中。 请确保在 .NET Framework 版本下拉列表中选择**“.NET Framework 4”。从“工作流”列表中选择“工作流控制台应用程序”。保留默认设置并单击“确定”**。这将创建适合初学者的工作流应用程序,它具备基本的工作流承载支持。在本主题中,使用活动来填充工作流。在下一主题如何:运行工作流中,将要修改基本宿主代码并使用该代码来运行工作流应用程序。
在**“解决方案资源管理器”中右击新添加的“WorkflowConsoleApplication1”,然后选择“添加引用”。从“项目”选项卡中选择“ActivityLibrary1”,然后单击“确定”**。
按 F6 键生成解决方案。这会将**“ActivityLibrary1”中的自定义活动添加到“工具箱”**中,以便可供此工作流使用。
创建工作流变量和参数
如果设计器中尚未显示**“Workflow1.xaml”工作流,请在“解决方案资源管理器”**中双击该工作流,使其显示在设计器中。
将**“Flowchart”活动从“工具箱”的“流程图”**部分拖放到工作流设计图面。
单击工作流设计器左下方的**“参数”,以显示“参数”**窗格。
单击**“创建参数”**。
在**“名称”框中键入 MaxNumber,从“方向”下拉列表中选择“输入”,再从“参数类型”下拉列表中选择“Int32”**,然后按 Enter 保存该参数。
单击**“创建参数”**。
在新添加的
MaxNumber
参数下方的**“名称”框中键入 Turns,从“方向”下拉列表中选择“输出”,再从“参数类型”下拉列表中选择“Int32”**,然后按 Enter。单击活动设计器左下方的**“参数”,以关闭“参数”**窗格。
单击工作流设计器左下方的**“变量”,以显示“变量”**窗格。
单击**“创建变量”**。
提示: 如果未显示“创建变量”框,请单击工作流设计器图面上的 Flowchart 活动以选择相应工作流。 在**“名称”框中键入 Guess,从“变量类型”下拉列表中选择“Int32”**,然后按 Enter 保存该变量。
单击**“创建变量”**。
在**“名称”框中键入 Target,从“变量类型”下拉列表中选择“Int32”**,然后按 Enter 保存该变量。
单击活动设计器左下方的**“变量”,以关闭“变量”**窗格。
添加工作流活动
将**“Assign”活动从“工具箱”的“基元”部分拖放至工作流,使其位于开始节点之下,开始节点以绿色圆圈表示,位于工作流的顶部。在“到”框中键入 Target,并在“输入 VB 表达式”**框中键入以下表达式。
New System.Random().Next(1, MaxNumber + 1)
提示: 如果“工具箱”窗口未显示,请从“视图”菜单中选择“工具箱”。 若要指示**“Assign”活动是 Flowchart 的起始点,请将鼠标悬停在工作流顶部的开始节点上。单击鼠标悬停在开始节点上时出现的矩形之一,并将鼠标向下拖至“Assign”活动的顶部。鼠标悬停在“Assign”活动上时,会出现四个矩形。拖动鼠标,使连接线从开始节点的底部连接至“Assign”**活动的顶部矩形,然后松开鼠标按钮。
将**“Prompt”活动从“工具箱”的“ActivityLibrary1”部分拖放至上一步中的“Assign”**活动下。
在**“属性窗口”中,将包括引号在内的 "EnterGuess" 键入“BookmarkName”属性值框中。在“Result”属性值框中键入 Guess,并在“Text”**属性框中键入以下表达式。
"Please enter a number between 1 and " & MaxNumber
提示: 如果“属性窗口”未显示,请从“视图”菜单中选择“属性窗口”。 将**“Assign”活动连接到“Prompt”活动。为此,请将鼠标悬停在“Assign”活动上,并单击鼠标悬停在该活动上时出现的位于底部的矩形。将鼠标向下拖至“Prompt”活动的顶部。鼠标悬停在“Prompt”活动上时,会出现四个矩形。拖动鼠标,使连接线从“Assign”活动的底部连接至“Prompt”**活动的顶部矩形,然后松开鼠标按钮。
将**“Assign”活动从“工具箱”的“基元”部分拖放至“Prompt”**活动下。
在**“到”框中键入 Turns,并在“输入 VB 表达式”**框中键入 Turns + 1。
按照前述步骤将**“Prompt”活动连接到“Assign”**活动。
将**“FlowDecision”从“工具箱”的“流程图”部分拖放至“Assign”活动下。将“Assign”活动连接到“FlowDecision”活动,然后单击“FlowDecision”活动将其选中。在“属性窗口”中,在“Condition”**属性值框中键入以下表达式。
Guess = Target
将另一个**“FlowDecision”活动从“工具箱”拖放到第一个活动下。通过从靠上“FlowDecision”活动中标记为“False”的矩形拖至第二个“FlowDecision”**活动的顶部矩形,将这两个活动连接起来。
提示: 如果在“FlowDecision”上看不到“True”和“False”标签,请将鼠标悬停在“FlowDecision”上。 单击第二个**“FlowDecision”活动将其选中。在“属性窗口”中,在“Condition”**属性值框中键入以下表达式。
Guess < Target
将两个**“WriteLine”活动从“工具箱”的“基元”部分并排拖放至两个“FlowDecision”活动下。将靠下“FlowDecision”活动的“True”操作连接到最左边的“WriteLine”活动,并将“False”操作连接到最右边的“WriteLine”**活动。
单击最左边的**“WriteLine”活动将其选中,然后在“属性窗口”的“Text”**属性值框中键入以下表达式。
"Your guess is too low."
将**“WriteLine”连接到上方的“Prompt”**活动的左侧。
单击最右边的**“WriteLine”活动将其选中,然后在“属性窗口”的“Text”**属性值框中键入以下表达式。
"Your guess is too high."
将**“WriteLine”活动连接到上方的“Prompt”**活动的右侧。
下面的示例阐释已完成的工作流。
生成工作流
按 F6 键生成解决方案。
有关如何运行工作流的说明,请参见下一主题如何:运行工作流。