重新承载的工作流设计器中新 Workflow Foundation 4.5 功能的支持

.NET Framework 4.5 中的 Windows Workflow Foundation (WF)引入了许多新功能,包括工作流设计器体验的多项增强功能。 本主题详细介绍了重新托管的设计器中支持哪些功能,以及当前不支持哪些功能。

注释

有关 .NET Framework 4.5 中引入的所有新 Windows Workflow Foundation (WF) 功能的列表,包括与设计器重新托管无关的功能,请参阅 .NET Framework 4.5 中 Windows Workflow Foundation 中的新增功能

活动

内置活动库包含现有活动的新活动和新功能。 重新承载的设计器支持所有这些新活动。 有关这些新活动的详细信息,请参阅 .NET Framework 4.5 中 Windows Workflow Foundation 中的“新增功能”部分。

C# 表达式

在 .NET Framework 4.5 之前,工作流中的所有表达式只能用 Visual Basic 编写。 在 .NET Framework 4.5 中,Visual Basic 表达式仅用于使用 Visual Basic 创建的项目。 Visual C# 项目现在使用 C# 语言书写表达式。 在 Visual Studio 2012 中创作工作流时,提供了功能齐全的 C# 表达式编辑器,具有语法突出显示和智能感知等功能。 使用 Visual Basic 表达式的早期版本中创建的 C# 工作流项目将继续工作。

警告

重新托管的设计器不支持 C# 表达式。

新设计器功能

重新托管的设计器不支持 .NET Framework 4.5 中引入的“快速 查找查找文件 ”功能。 重新承载的设计器不支持 Toolbox 搜索。 有关这些功能的详细信息,请参阅 设计器搜索

警告

重新托管的设计器不支持快速查找查找文件

删除变量和参数设计器中的上下文菜单项

在 .NET Framework 4 中,只能使用键盘在设计器中删除变量和参数。 从 .NET Framework 4.5 开始,可以使用上下文菜单删除变量和参数。 重新承载的编辑器支持此功能。

以下屏幕截图显示了变量和参数设计器上下文菜单。

变量和参数设计器上下文菜单

使用顺序进行自动环绕

由于工作流或某些容器活动(例如 NoPersistScope)只能包含单个正文活动,因此在添加第二个活动时,开发人员需要先删除第一个活动,然后添加一个 Sequence 活动,最后将这两个活动依次添加到序列活动中。 从 .NET Framework 4.5 开始,向设计器图面添加第二个活动时,将自动创建一个活动来包装这两个 Sequence 活动。 重新承载的编辑器支持此功能。

以下屏幕快照显示了 WriteLineBody 中的 NoPersistScope 活动。

NoPersistScope 活动正文中的 WriteLine 活动。

以下屏幕快照显示了在第一个 Sequence 下面丢弃第二个时在 Body 中自动创建的 WriteLine 活动。

在 NoPersistScope 正文中自动创建的序列。

平移模式

若要更轻松地在设计器中导航大型工作流,可以启用平移模式,允许开发人员单击并拖动以移动工作流的可见部分,而无需使用滚动条。 在设计器的右下角有一个按钮,可用于激活平移模式。 重新承载的编辑器支持此功能。

以下屏幕截图显示了位于工作流设计器右下角的平移按钮。

工作流设计器中突出显示的平移按钮。

中间鼠标按钮或空格键也可用于平移工作流设计器。

多选

可以一次选择多个活动,方法是在它们周围拖动一个矩形(未启用平移模式时),或者按住 Ctrl 并单击所需的活动一个一个。 重新承载的编辑器支持此功能。

还可以在设计器中拖放多个活动选择,还可以使用上下文菜单进行交互。

工作流项的大纲视图

为了使分层工作流更易于导航,工作流的组件显示在树样式的大纲视图中。 大纲视图显示在 “文档大纲 ”视图中。 若要在 Visual Studio 中打开此视图,请在顶部菜单中选择 “视图”、“ 其他 Windows”、“ 文档大纲”或按 Ctrl W、U。 单击大纲视图中的某个节点将导航到工作流设计器中的相应活动,并且大纲视图将更新,以显示在设计器中选择的活动。 重新承载的编辑器支持此功能。

入门教程 ”中已完成工作流的以下屏幕截图显示了具有顺序工作流的大纲视图。

Visual Studio 中带有顺序工作流的大纲视图的屏幕截图

shell 栏和标头项的更多可见性控制

在重新托管的设计器中,某些标准 UI 控件可能对给定工作流没有意义,并且可能已关闭。 在 .NET Framework 4 中,此自定义仅在设计器底部的 shell 工具栏中支持。 在 .NET Framework 4.5 中,可以通过将WorkflowShellHeaderItemsVisibility设置为适当的ShellHeaderItemsVisibility值来调整设计器顶部 shell 标头项的可见性。

在流程图和状态机工作流中自动连接和自动插入

在 .NET Framework 4 中,必须手动添加流程图工作流中的节点之间的连接。 在 .NET Framework 4.5 中,流程图和状态机节点具有自动连接点,当活动从工具箱拖动到设计器图面时,这些点将变为可见。 将活动放置在这些点中的一个点上会自动添加该活动以及必要的连接。

下面的屏幕快照显示了从工具箱中拖动活动时变为可见的附属点。

流程图起始节点显示自动连接点

也可以将活动拖动到流程图节点和状态之间的连接上,以在两个其他节点之间自动插入该节点。 以下屏幕快照显示了突出显示的连接线,可在此连接线处从工具箱拖动并放置活动。

放置活动的自动插入处理

重新承载的设计器支持自动连接和自动插入。

设计器批注

为了便于开发较大的工作流,设计器现在支持添加批注以帮助跟踪设计过程。 可以将批注添加到活动、状态、流程图节点、变量和参数。 以下屏幕截图显示了用于向设计器添加批注的上下文菜单。

显示用于添加表示法的菜单的屏幕截图。

重新承载的设计器支持设计器批注。

在设计器中定义和使用 ActivityDelegate 对象

.NET Framework 4 中的活动使用 ActivityDelegate 对象公开执行点,其中工作流的其他部分可以与工作流的执行交互,但使用这些执行点通常需要相当数量的代码。 在此版本中,开发人员可以使用工作流设计器定义和使用活动委托。 有关详细信息,请参阅 如何:在工作流设计器中定义和使用活动委托

重新承载的设计器支持活动委托。

构建时验证

在 .NET Framework 4 中,工作流验证错误在工作流项目的生成过程中不算作生成错误。 这意味着即使存在工作流验证错误,生成工作流项目也能成功。 在 .NET Framework 4.5 中,工作流验证错误导致生成失败。

警告

重新托管的设计器不支持生成时验证。

设计时背景验证

在 .NET Framework 4 中,工作流作为前台进程进行验证,这可能会在复杂或耗时的验证过程中阻塞用户界面。 工作流验证现在在后台线程上进行,以便不会阻塞用户界面。

重新承载的设计器支持设计时后台验证。

位于 XAML 文件中的单独位置处的视图状态

在 .NET Framework 4 中,工作流的视图状态信息存储在多个不同位置的 XAML 文件中。 对于想要直接读取 XAML 或编写代码以删除视图状态信息的开发人员来说,这并不方便。 在 .NET Framework 4.5 中,XAML 文件中的视图状态信息序列化为 XAML 文件中的单独元素。 开发人员可以轻松查找和编辑活动的视图状态信息,或者完全删除视图状态。

重新托管的工作流设计器支持此功能。

重新承载的设计器中 Workflow 4.5 功能的选择性加入

为了保持向后兼容性,默认情况下,重新托管的设计器中未启用 .NET Framework 4.5 中包含的某些新功能。 这是为了确保使用重新托管设计器的现有应用程序不会因更新到最新版本而中断。 若要在重新托管的设计器中启用新功能,可以将 TargetFrameworkName 设置为“.Net Framework 4.5”,或将 DesignerConfigurationService 的各个成员设置为启用单个功能。

新的工作流开发模型

除了流程图和顺序工作流开发模型,此版本还包括状态机工作流和以协定为先的工作流服务。

状态机工作流

状态机工作流在 Microsoft .NET Framework 4 平台更新 1 中作为 .NET Framework 4.0.1 的一部分引入。 此更新包括多个新类和活动,这些类和活动允许开发人员创建状态机工作流。 这些类和活动已针对 .NET Framework 4.5 进行了更新。 更新包括:

  1. 对状态设置断点的功能

  2. 在工作流设计器中复制和粘贴转换的功能

  3. 设计器支持共享触发器转换创建

  4. 用于创建状态机工作流的活动,包括: StateMachineStateTransition

以下屏幕截图显示的是来自《入门教程》步骤 "如何创建状态机工作流" 的已完成状态机工作流。

显示已完成状态机工作流的插图。

有关创建状态机工作流的详细信息,请参阅 状态机工作流。 重新承载的工作流编辑器状态机工作流。

协定优先工作流开发

合同优先工作流开发工具允许开发人员先在代码中设计协定,然后在 Visual Studio 中单击几下鼠标,在表示每个作的工具箱中自动生成活动模板。 然后,这些活动用于创建实现合同定义的操作的工作流。 工作流设计器将验证工作流服务,以确保实现这些作,并且工作流的签名与协定签名匹配。 开发人员还可以将工作流服务与已实现的协定集合相关联。 有关协定优先工作流服务开发的详细信息,请参阅 如何:创建使用现有服务协定的工作流服务

警告

工作流设计器不支持协定优先工作流开发。