原文:http://msdn.microsoft.com/en-us/library/hh305677%28VS.110%29.aspx
微软在 .NET Framework 4.5 Developer Preview 中发布了 WF 4.5,新的功能如下:
1.Activity
新活动 NoPersistScope: 在此活动之内不会发生工作流的持久化操作。之前网上也有很多开源的实现,现在终于集成进来了。
Flowchart 增强: FlowSwitch 和FlowDecision 的 DisplayName属性可以编辑了,这样在工作流设计器中,分支判断就就更加直观。
Flowchart 新增属性 ValidateUnconnectedNodes, 默认为false。若这支为true,则没有被连接到 chart node 验证时会报错误
2.设计器功能增强
a.搜索查询,可搜索活动,变量,参数,表达式等:目前只在VS中支持,在外部设计器(rehost designer)中不支持
b.选中变量或参数,可在弹出的右键菜单中删除。在WF4中只能猛击键盘上的delete键删除
c.自动生成 Sequence活动
某些活动,如NoPersistScope, Transaction等,只允许包含一个子活动,当在设计器中往其添加第二个字活动时,设计器会自动生成一个Sequence活动将之前的多个子活动包含其中,省去了手动添加Sequence活动的麻烦
当往NoPersistScope中添加第二个WriteLine时,自动生成Sequence ->
d. 可以移动工作流设计图,这样对于大型复杂的工作流的设计更为方便。之前的版本只能放大缩小
e. 多选: 可一次选择多个活动,进行操作(如删除等)
f. 工作流文档结构图: Document Outline 窗口也支持工作流的树形结构显示了。就像WPF中的xaml visual tree一样。
g. 支持C# 表达式: 这个是个人认为最为给力的改进之一。之前写VB表达式是在很痛苦。
h. 当构建外部设计器时,可以对其界面组成和布局进行更多的控制。
i. flowchart 和 state machine 类型的工作流,支持自动连接和插入节点:
自动连接:当将新节点拖动到某个已存节点上的自动连接点时,设计器会自动连接它们。
自动插入节点: 当将新节点拖动到一个连接线时,该连接线会高亮,然后松开鼠标,设计器会将新节点自动插入到两个已存节点中,并新建两条连接线
j. 设计器标注(Designer Annotations)
可以给活动,变量,参数标注说明,相当于代码中的注释
k. 状态机中的状态节点(state node ) 也支持debug 断点了
l. 设计器支持 ActivityDelegate。 之前的版本不支持 ActivityDelegate可视化设计。
3. 工作流版本控制 (给力,这个问题是WF4在企业应用中经常遇到,也最为难控制的地方)
WorkflowApplication和WorkflowServiceHost 均支持工作流反序列化后读取其版本信息的,这样宿主程序就可以根据此版本信息做出进一步处理。同时可进行一定程度的动态更新,这个功能其实WF3.5中就提供了。WF4中被取消。这次又支持了。
4. 编译工作流项目时,之前的流程设计错误(validation errors),不会导致整个功能编译失败,但现在的版本将会导致编译失败
5.xaml文件中的 View state 信息将会单独保存在另一个文件中。这样实现了流程结构和设计器可视化信息的分离,原来是全部存在同一个文件中的。
6. 可扩展的表达式机制。 通过表达式扩展机制,开发人员可以定义自己的表达式语言,这样就可更容易的将设计工作交给非技术人员,如关键客户来做了。
7. 创建外部设计器时,可通过设置 DesignerConfigurationService 属性来开启关闭新的设计器功能,以兼容前一版本的工作流设计。
8. 状态机工作流模型: 这个在 .NET Framework 4 Platform Update 1Microsoft .NET Framework 4 Platform Update 1中已经提供,现在则正是包含进来了。
9. 支持Contract-first workflow的开发。