WWF提供了对原有活动进行扩展以及自定义新活动的功能,用户可以通过"Workflow Activity Library"创建和开发自定义活动。
一、自定义活动类型
默认情况下,创建的自定义活动是继承"System.Workflow.Activities.SequenceActivity"父类的。该类型自定义活动的外观是由一个Sequence顺序类型的容器构成的,用户可以在Sequence活动内添加其他子活动。
代码如下:
namespace ActivityLibrary1 { public partial class Activity1: SequenceActivity { public Activity1() { InitializeComponent(); } } }
如果用户想创建一个特殊的补偿类型的自定义活动,那么可以通过继承"System.Workflow.ComponentModel.CompositeActivity"父类来实现。
public partial class Activity1 : CompositeActivity { public Activity1() { InitializeComponent(); } }
该类型的自定义活动外观如下图:
如果用户想在CallExternalMethod活动基础上封装一些额外的功能,那么可以通过继承"System.Workflow.Activities.CallExternalMethodActivity"父类来实现。
如果用户想在HandleExternalEvent活动基础上封装一些额外的功能,那么可以通过继承"System.Workflow.Activities.HandleExternalEventActivity"父类来实现。
用户可以通过继承"System.Workflow.ComponentModel.Activity"父类来自定义一个"ComponentModelActivity"类型的自定义活动。它与"SequenceActivity"类型自定义活动是日常工作中最常使用的两种类型的自定义活动,它与"SequenceActivity"类型自定义活动的区别是用户不能在其内部添加任何子活动。
利用WWF开发出来的自定义活动使用起来也非常简单,在同一个解决方案下开发的自定义活动,只要编译成功后就可以在"工具栏"中看到并可以直接使用。
在WWF中可以通过"DependencyProperty"来存储和管理自定义活动的属性。
首先定义一个"DependencyProperty"属性并且利用它的"Register"方法进行注册。在注册时需要指明该"Dependency Property"属性所存储的"属性名称"、"属性的类型"、以及该属性"所在自定义活动的名称",还可以利用"PropertyMetadata"来为属性定义默认值。