创建自定义活动

若要创建基本的自定义活动,可以从 Activity 类或派生类型继承。 若要创建自定义复合活动,可以从 CompositeActivity 类或派生类型继承。

备注

不支持创建从包含子活动的自定义活动继承的自定义活动。

您创建的自定义活动类将定义自定义活动的属性、事件和执行逻辑。

属性

在自定义活动中可以使用两种活动属性:元属性和实例属性。 元属性在运行时不可变,因此该属性必须在设计时设置为文本值。 实例属性可以在设计时设置,也可以绑定到实例数据,在后一种情况下要到运行时才能确定实际值。 也可以直接在工作流执行过程中修改实例属性。

有关活动属性的更多信息,请参见使用活动属性

执行逻辑

创建自定义活动时,必须通过 Execute 方法显式处理活动的执行逻辑。 可以在活动中根据需要重写其他 Activity 方法。

属性

可以使用各种属性修饰自定义活动以指示各种情况,例如:应加载哪个活动设计器,验证活动时应使用什么验证程序等。 下表列出可用于修饰自定义活动的所有属性。

属性 说明

ActivityCodeGeneratorAttribute

指示将使用哪个 ActivityCodeGenerator 派生类为自定义活动生成编译时代码。

ActivityValidatorAttribute

指示将使用哪个 ActivityValidator 派生类验证自定义活动。

AlternateFlowActivityAttribute

指示该活动支持替代流。

ContentPropertyAttribute

指示将不序列化自定义活动中特定属性的属性名。

DefaultEventAttribute

指示自定义活动的默认事件。

DesignerAttribute

指示将使用哪个 ActivityDesigner 派生类为自定义活动实现设计时服务。

DesignerCategoryAttribute

指示自定义活动的设计器属于某一特定类别。

DesignerSerializerAttribute

指示将使用哪个序列化程序(ActivityMarkupSerializerActivityCodeDomSerializerActivityTypeCodeDomSerializerCompositeActivityMarkupSerializer,或其中任何一个的派生序列化程序)来序列化自定义活动。

PersistOnCloseAttribute

指示当经过装饰的活动完成其执行时,必须保留当前工作流实例。

RuntimeNamePropertyAttribute

指示自定义活动的运行时名称。

ToolboxBitmapAttribute

指示用于在容器(例如自定义工作流设计器)中表示自定义活动的图标。

ToolboxItemAttribute

指示在容器(例如自定义工作流设计器)中为自定义活动使用哪个 ActivityToolboxItem 派生类。

ToolboxItemFilterAttribute

指示在容器(例如自定义工作流设计器)中使用自定义活动时,用于该活动的筛选器字符串和筛选器类型。

警告

如果自定义活动使用 PersistOnCloseAttribute,则使用该自定义活动的工作流必须指定要使用的持久性服务,否则在启动工作流时将引发异常。

可以“重写”属性,即如果使用基本活动所用的属性修饰自定义活动,则将对自定义活动使用重写值。 例如,您可能希望为自定义活动创建自己的工具箱位图,但仍使用基本活动的默认序列化程序和活动验证程序。 为此,您只需以 ToolboxItemAttribute 修饰自定义活动,并相应地设置值。

从默认 Windows Workflow Foundation 活动创建自定义活动

您可以从以下活动类型派生自定义活动:

活动类型 说明

Activity

从中派生所有活动的基类型。

CallExternalMethodActivity

本地通信期间在宿主上调用方法。

CompositeActivity

所有复合活动都派生自此类型。

HandleExternalEventActivity

处理在本地通信期间由宿主引发的传入事件。

SequenceActivity

用于创建包含顺序执行的子活动的自定义复合活动。

SequentialWorkflowActivity

用于创建顺序工作流。

StateActivity

在状态机工作流中使用,用于处理给定状态的事件或初始化。

StateMachineWorkflowActivity

用于创建状态机工作流。

自定义活动

您可以使用一组封装特定功能的相关类,对自定义活动的默认逻辑进行自定义。

以下各节提供了有关这些方面的更多详细信息:

创建自定义复合活动

序列化自定义活动

如何生成使用自定义活动的代码

请参见

参考

Activity
CompositeActivity
ActivityBind

概念

使用活动属性
活动验证逻辑概述
创建自定义活动设计器

其他资源

开发工作流活动

Footer image

版权所有 (C) 2007 Microsoft Corporation。保留所有权利。