WF4.0活动模型(1):工作流既活动
如果你已经开发过Windows Workflow Foundation(WF)程序,那么你应该会非常熟悉活动。在WF世界中,程序被定义为一个活动树。有些活动用来控制程序的流,比如Sequence、If和While;有些活动执行特殊的操作,比如Assign、InvokeMethod和WriteLine;还有一些可以和外部系统通讯,比如Send和Receive。
如果你已经开发过Windows Workflow Foundation(WF)程序,那么你应该会非常熟悉活动。在WF世界中,程序被定义为一个活动树。有些活动用来控制程序的流,比如Sequence、If和While;有些活动执行特殊的操作,比如Assign、InvokeMethod和WriteLine;还有一些可以和外部系统通讯,比如Send和Receive。
在上一篇文章《MOSS多级审批工作流【StateMachine版】》中,有这样一个情景,我创建了两个任务,并且要等到这两个任务都完成后,根据其结果进行一些操作。在这一部分,我遇到一个问题,如何并行的处理这两个任务呢?
在Windows Workflow中,活动的状态共有六种。这些状态通过ActivityExecutionStatus枚举来表示:Initialized、Executing、Closed、Canceling、Compensating和Faulting。所有活动都从Initialized状态开始,并以Closed状态结束。
引进依赖属性的最终目标是管理状态.依赖属性并不是Windows Workflow专有的,与WF类似,同样使用XAML来表示的Windows Presentation Foundation也应用了依赖属性.
组合活动就像一个黑盒子,工作流设计器无法获取这个黑盒子内部的属性和事件,除非我们把这些属性和事件曝露给外部世界.属性升级(Property promotion)允许组合活动的设计者去决定属性对于外部世界的可见性.
有两种方式可以创建自定义活动,即通过组合的方式和使用继承的方式.
这一章将会讲述如何编写自定义活动,并且深入研究实现自定义活动的不同方式.我们会讨论如何使用组合的方式创建黑盒活动和白盒活动;如何使用继承的方式来创建自定义活动;如何创建验证和设计时的行为.接着,我们还会讨论一些相关概念,比如依赖性属性(Dependency Property)和执行上下文(Execution Context).在本章的最后,我们将比较组合和继承这两种创建自定义活动方式,并理解创建自定义活动的要点.
Windows Workflow Foundation是.NET 3.0中新增的一部分,新的.NET 3.0还包括Windows Presentation Foundation(WPF)和Windows Communication Foundation(WCF)这两项新技术.