在WF3.x时代我们可以使用声明性的条件和代码方式的条件,也可以使用支持正向链接的RuleSet。当然我们还可以使用基于CodeDOM的API来用代码的方式声明。
在微软刚刚发布的WF4.0 Beta1中我们已经看不到这些了,WF4.0提供了统一的完全声明式的表达式(Expression)。现在的版本只支持使用VB来构建表达式(Expression),但是在设计上是可以支持任何语言的,微软也会在未来的版本中提供对其他语言的支持。
WF4.0中表达式是ValueExpression类型的,我们在VS中构造表达式的窗口是ExpressionTextBox类的实例,它也是可以再外部重新宿主的,只不过只有和VS结合的
时候才有智能感知和颜色的支持。在表达式中我们可以引用工作流中的变量和参数。这些信息都会被序列化到XAML中。提供了表达式(Expression)并不是就不
要原来的方式,微软在开发WF4.0一个很重要的部分就是对WF3.x全面兼容。在WF4.0中提供了一个Interop活动可以帮助我们很好的完成现有WF3.x程序的迁移,
我们只需要简单的设置它的Body Type属性即可,我们可以将WF4.0中的变量和参数绑定到WF3.x中的依赖属性上,如下图:
在WF4.0 beta1中没有提供对正向链接的RuleSet功能,官方已经声明会在将来的版本中加大这部分的投入。现在如果我们要想在WF4.0 Beta1使用类似的功能我们可以开发一个自定义活动来完成,下面的例子来源于WF Samples中,首先是活动的代码部分:
下面是活动的设计器部分,在WF4.0中提供了对活动设计器的可视化支持:
效果如下图:
下面是当点击按钮后,会出现RuleSet的编辑器:
这样我们就可以再WF4.0中使用该活动了,如下图:
本文详细介绍了从WF3.x过渡到WF4.0的过程,包括表达式的引入、活动设计的现代化、正向链接功能的缺失以及如何通过自定义活动实现类似功能。重点讨论了表达式(Expression)在WF4.0中的应用,包括如何在Visual Studio中构造表达式、引用工作流变量和参数、序列化到XAML,以及如何利用Interop活动完成现有WF3.x程序的迁移。此外,文章还展示了如何在WF4.0中实现类似RuleSet的功能,通过自定义活动和编辑器支持进行验证和规则执行。

![clip_image002[5]](/https://i-blog.csdnimg.cn/blog_migrate/995d9f83097865eaef197061ba43ae3c.jpeg)
![clip_image002[7]](/https://i-blog.csdnimg.cn/blog_migrate/446cdcc55a66313dd817b5dc157c3d96.jpeg)

4494

被折叠的 条评论
为什么被折叠?



