【翻译习作】 Windows Workflow Foundation程序开发-第一章03

1.2.2.Visual Studio 2005扩展包

微软也为Windows Workflow开发者提供了Visual Studio 2005扩展包。扩展包将许多功能集成到Visual Studio里,其中就包括一个用于编制工作流的可视化设计器。下面就是可视化设计器的截屏图。

 

这个设计器的窗口式样与我们所熟悉的Windows和Web表单设计器保持一致。Toolbox(工具箱)窗口中列出了可以拖放到设计器台面上的所有活动。我们也可以把自定义的活动添加到Toolbox中去。一旦把一个活动放置到设计器台面上,Properties(属性)窗口中就会列出该活动的可配置属性和可处理事件。下图就是Toolbox窗口

 

1.2.2.1.       Windows Workflow与XAML

WF设计器能够以其生成的C#和Visual Basic代码来表示我们的工作流。这个设计器也能够读写可扩展应用程序标记语言(英文简称XAML,读作zammel)。XAML文件都是合法的XML文件。XAML带给Windows Workflow的是一种声明性编程模型。这里就是设计器为我们先前看到的工作流生成的XAML标记码:

<SequentialWorkflowActivity 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow" 
  x:Class="HelloWorld.HellowWorldWorkflow" 
  > 

  <CodeActivity 
    x:Name="codeActivity1" 
    ExecuteCode="codeActivity1_ExecuteCode_1" />
</SequentialWorkflowActivity> 
 

我们的工作流很简单,只包含了一个活动——一个CodeActivity活动。当工作流引擎执行这个CodeActivity活动时,CodeActivity将调用一个在ExecuteCode属性中指定的方法。我们的XML标记码中也包括了专门的XML命名空间指令。第2章会讲述XAML和这些命名空间。

XAML不是Windows Workflow的专用技术。作为一种“可扩展应用程序”标记语言,XAML也被用在微软的呈现框架——Windows Presentation Foundation(WPF)中。在WPF里,XAML以声明方式构建出丰富的用户界面,其中不仅包括了按钮和标签,也包括了动画情节串连板和数据模板。

声明性XAML的一个重要能力就是能够与命令性代码共同定义一个分部类(partial class)。分部类是.NET 2.0提供的一个新功能,它可以在Visual Basic和C#中使用。分部类允许在多个文件中对一个类进行定义。上面的XAML标记码将被转换成一个名为HelloWorldWorkflow的分部类。我们用XAML标记码根节点中的x:name属性来控制这个类的名字。我们可以在C#代码中为这个类添加成员,前提是用C#定义的类也叫HelloWorldWorkflow,并且使用了partial关键字。

public partial class HelloWorldWorkflow : SequentialWorkflowActivity
{
    private void codeActivity1_ExecuteCode_1(object sender, EventArgs e)
    {
          // ...

    }
}

在这个例子中,我们为XAML标记码定义的类(HelloWorldWorkflow)添加了一个新成员:codeActivity1_ExecuteCode_1方法。

1.2.2.2.       WF有效性验证与调试

工作流设计器的另一项功能是对工作流中的各个活动进行有效性验证,并将结果显示给开发者。每一个活动都可以对其设计时和运行时验证进行定义。如果一个活动的有效性验证失败了,设计器会在该活动上显示一个带有红色惊叹号的圆点。例如,对于一个CodeActivity活动,假设我们不给ExecuteCode属性赋值,它就会始终显示一个红叹号点。如果在执行过程中不调用任何方法,这个CodeActivity活动就是个摆设,幸好有效性验证能够尽早的替我们发现这个问题并给出明显的提示。

工作流设计器也为开发者提供了调试功能。我们可以在设计器中为一个活动设置断点。当工作流在断点处暂停执行,我们可以在Call Stack窗口中查看工作流实例中那些已执行的活动。调试器的命令:Step In(逐语句),Step Out(跳出)和Step Over(逐过程)都能以直观的方式进行操作;比如,当执行到一个复合活动时,使用Step In命令后,会进入这个活动内部,并准备执行它的第一个子活动;而使用Step Over命令后,整个复合活动将被执行完,并准备执行紧跟其后的下一个活动。

1.2.2.3.       设计器外观

工作流设计器允许我们通过主题(themes)对它的设计台面进行定制。一个主题包含了对设计台面的背景色、字体、网格线和边框样式的定义。我们甚至可以为特定的活动类型选择颜色和边框样式。利用Visual Studio,我们可以创建新主题,或者修改现有主题。

但是,所有这些外观定制功能并不仅仅是让设计器看上去很美。WF的设计器就是一个组件,我们可以在自己开发的应用软件中承载它。这种承载设计器的能力给了我们极大的发挥空间。首先,我们可以承载设计器,让非开发人员(也就是业务人员)能够对工作流进行设计和修改。其次,通过对活动进行定制,我们能够以业务人员易于理解的方式来构建工作流(这就是所谓的“域特定语言”)。还有,通过对主题进行定制,我们可以让设计器外观与整个应用软件保持一致。

 

章节链接:

【翻译习作】 Windows Workflow Foundation程序开发

 

【翻译习作】 Windows Workflow Foundation程序开发-前言


【翻译习作】 Windows Workflow Foundation程序开发-第一章01

 

【翻译习作】 Windows Workflow Foundation程序开发-第一章02

 

posted on 2015-04-28 11:15  CuteBlueOne  阅读(533)  评论(0编辑  收藏  举报