Visual Sudio提供了一系列的WF设计工具,这些可以让你更方便更高效的开发你的工作流应用,主要包括以下几部分:
1.Visual Studio项目模板
2.可视化的工作流和活动设计器
3.规则条件设计器
4.工作流调试器
5.命令行编译工具(wfc.exe)
在说这些之前,我们先来说说工作流的类型和创作模式
顺序工作流按逐个顺序执行一组包含的活动,它有明确的开始和结束点,从始至终,一步接一步,沿着一条可能的线路执行,这种工作流适合于重复的,相对固定的操作。而在状态机工作流中,工作流本身由一组状态组成。 将一个状态指示为初始状态。 每个状态都可以接收一组特定事件。 视事件而定,可以转换到另一个状态。 状态机工作流可以有最终状态。 当对最终状态进行转换时,工作流将完成。我们需要根据不同的情景选择不同的工作流。
WF中的工作流有三种创作模式:仅限代码,代码分离,无代码
仅限代码:这种是默认的创作模式。
代码分离:这种方式的工作流序列化后保存在一个的以.xoml为扩展名的文件中,它的代码保存在.xoml.cs中。.xoml是workflow的一种标记语言,和.xaml有着同样的句法,有人可能会问既然是一样的为什么还要有两个文件名,其实最开始的时候.xoml使用自己的句法,后来才和.xaml一样的,由于历史的原因就接着使用.xoml了,在wpf中是使用的是.xaml,你添加不同类型的文件它会去调用不用的设计器,代码分离的工作流必须进行编译,并且无法直接加载到工作流运行时引擎。
无代码:通过使用可扩展应用程序标记语言 (XAML) 创建标记源文件从而创建工作流的声明性方式,这种方式不被Visual Studio直接支持,你可以将代码部分(.xoml.cs)删除或直接建立xml文件并更改扩展名为.xoml。这种方式可以让你在运行期间直接加载到工作流运行时引擎中,增加了灵活性。这种方式可以使用 x:Code 指令元素在工作流标记文件中插入过程代码。 代码必须位于 CDATA 节中,以使编译器可以编译代码而非将其视为声明性 XAML 标记。如下例:
然后我们开始说我们的设计时工具
1.Visual Studio项目模板
类型 |
说明 |
顺序工作流控制台应用程序 (Sequential Workflow Console Application) | 创建用于生成工作流的项目,该工作流包含一个默认的顺序工作流和一个控制台测试宿主应用程序。 |
顺序工作流库 (Sequential Workflow Library) | 创建用于以库的形式生成顺序工作流的项目。 |
工作流活动库 (Workflow Activity Library) | 创建一个用来创建活动的库的项目,以后可以将其作为工作流应用程序中的构造块重用。 |
状态机控制台应用程序 (State Machine Console Application) | 创建用于生成状态机工作流和控制台宿主应用程序的项目。 |
状态机工作流库 (State Machine Workflow Library) | 创建用于以库的形式生成状态机工作流的项目。 |
空工作流 (Empty Workflow) | 创建可以包含工作流和活动的空项目。 |
2.可视化的工作流和活动设计器
主要有顺序型工作流,状态机工作流设计器。每种都有设计视图,错误处理视图,取消处理视图.
3.规则条件设计器
在 WF 中,通过两种主要方式公开规则技术:一种是作为活动上的条件,另一种是作为策略活动中的正向链接 RuleSet。IfElseBranchActivity、ConditionedActivityGroup、WhileActivity 和 ReplicatorActivity 活动使用条件来控制活动的执行。 条件可以声明方式表示,也可以在代码中定义。 声明性条件以代码 DOM 语句的形式在规则的 XML 文件中创建。 基于代码的条件可引用工作流的代码文件中的一个方法,该方法通过 Result 属性返回其结果。
与条件一样,规则以代码 DOM 语句的形式表示,并收集到规则的 XML 文件中。 规则包含一个条件语句和一些操作集合,这些集合中的操作是根据条件的结果来执行的。 规则将会收集到规则集中,规则集既支持规则的简单依序执行,也支持规则的复杂正向链接。 规则集由 PolicyActivity 活动执行(摘自MSDN)。看下下面的截图:
有智能感知的,下面这张图是规则集的设计器
4.工作流调试器
调试工作流应用程序也很容易,我们只需要放置断点,你可以在工作的任何一个活动上设置断点,一旦代码流到达设置了断点的活动,Visual Studio 就会将控制权移交给工作流调试器,如何下图:
5.命令行编译工具(wfc.exe)
WF提供一个名为 wfc.exe 的命令行工作流编译器可以用来编译工作流,我们也可以使用WorkflowCompiler 类来编译,具体参数什么可以查阅MSDN。
上一篇:坚持学习WF(1):从HelloWorld开始
下一篇:坚持学习WF(3):WF框架概览