`

WF4.0 Beta1之旅(6):自定义活动

阅读更多

一:程序集,命名空间,活动变化

WF4并非是在原有WF3.x上的改进,而是全新的开发有新的命名空间,程序集,原WF3的部分会继续保留这主要是为了兼容,下面的表格告诉你具体的变化:

1.程序集的变化
WF3.x程序集 WF4程序集
System.Workflow.Activities.dll System.Activities.dll
System.Workflow.ComponentModel.dll System.Activities.dll
System.WorkflowServices.dll System.ServiceModel.Activities.dll
2.名空间的变化
WF3.x命名空间 WF4命名空间
System.Workflow.Activities System.Activities.Statements
System.Workflow.ComponentModel System.Activities
System.WorkflowServices System.ServiceModel.Activities

3.活动的变化

WF3.x活动 WF4活动
CallExternalMethodActivity Send
CancellationHandlerActivity CancellationScope
CodeActivity

CodeActivity/NativeActivity

CompensateActivity Compensate
CompensatableSequenceActivity CompensableActivity
ConditionedActivityGroup 可通过其他方式实现
DelayActivity Delay
EventHandlingScopeActivity 暂无
FaultHandlersActivity TryCatch
HandleExternalEventActivity Receive
IfElseActivity If
InvokeWebServiceActivity Send
InvokeWorkflowActivity 暂无
ListenActivity Pick
ParallelActivity Parallel
PolicyActivity 暂无
ReplicatorActivity ForEach, ParallelForEach
SendActivity Send
ReceiveActivity Receive
SequenceActivity, SequentialWorkflowActivity Sequence
StateMachineWorkflowActivity 暂无
SuspendActivity
SynchronizationScopeActivity
TerminateActivity
ThrowActivity Throw
TransactionScopeActivity TransactionScope
CompensatableTransactionScopeActivity TransactionScope + CompensableActivity
WebServiceFaultActivity 整合为工作流服务
WebServiceInputActivity 整合为工作流服务
WebServiceOutputActivity 整合为工作流服务
WhileActivity While

 

二:自定义活动

1.活动基类继承关系:

2.WorkflowElement 是所有活动的基类,Activity,CodeActivity,DynamicActivity,NativeActivity活动均继承于该类,DynamicActivity是Sealed不能用于
自定义活动。

3.可以使用设计器方式来可视化的设计自定义活动,如下图:

4.使用代码的方式创建自定义活动,我们需要继承自CodeActivity和NativeActivity活动,这两个活动的区别是他们的Execute方法所带的上下文环境不同,
CodeActivity为CodeActivityContext,它只是一个简化版的上下文环境,对Runtime没有完全的访问权限,而NativeActivity的上下文环境
ActivityExecutionContext,ActivityExecutionContext支持scheduling,取消子活动的执行,持久化的支持,书签的支持等等对runtime有完全的访问权限。

5.CodeActivity和NativeActivity都有泛型版的,一般我们在创建需要返回值的活动时使用泛型版本,泛型版本的已经有一个OutArgument<TResult>的变量,
这个我们可以通过反编译WorkflowElement<TResult>看出,如下:

[TypeConverter(typeof(ValueExpressionConverter)), ValueSerializer(typeof(ValueExpressionValueSerializer))]
public abstract class WorkflowElement<TResult> : WorkflowElement, IActivityWithResult
{    
    // Fields
    private OutArgument<TResult> result;
    
    // Methods
    internal WorkflowElement();
    internal void ExecuteWithTryGetValue(ActivityContext context);
    public static WorkflowElement<TResult> FromValue(TResult constValue);
    public static WorkflowElement<TResult> FromVariable(Variable variable);
    public static WorkflowElement<TResult> FromVariable(Variable<TResult> variable);
    internal IList<RuntimeArgument> GetValueExpressionArguments();
    public static implicit operator WorkflowElement<TResult>(Variable<TResult> variable);
    public static implicit operator WorkflowElement<TResult>(TResult constValue);
    public static implicit operator WorkflowElement<TResult>(Variable variable);
    internal virtual bool TryGetValue(LocationEnvironment environment, out TResult value);
    
    // Properties
    [DefaultValue((string) null)]
    public OutArgument<TResult> Result { get; set; }
    Type IActivityWithResult.ExpressionType { get; }
    OutArgument IActivityWithResult.Result { get; set; }
}

6.与WF3.x中开发自定义活动不同的是在WF3中我们使用依赖属性来绑定数据,在WF4中我们使用In参数或Out参数及变量代替。另外在WF3.x中我们重写
Execute方法时需要返回ActivityExecutionState,WF4中不需要返回值,因为WF4的Runtime会自动判断,透明了。

相关文章:

WF4.0 Beta1之旅(1):基本介绍
WF4.0 Beta1之旅(2):异常处理
WF4.0 Beta1之旅(3):全新的FlowChart
WF4.0 Beta1之旅(4):Bookmark的使用
WF4.0 Beta1之旅(5):规则引擎的变化

 

分享到:
评论

相关推荐

    WF4.0 Beta1之旅(3):全新的FlowChart源码

    在这个“WF4.0 Beta1之旅(3)”中,我们将聚焦于FlowChart工作流模型的源码分析,这为我们提供了更深入理解WF4.0的工作方式和设计思想的机会。 FlowChart工作流模型是一种图形化的编程模型,它通过节点(如决策、...

    wf4.0入门系列(五)

    2. **自定义活动**: 如果预定义的活动不能满足需求,你可以创建自定义活动,扩展WF4.0的功能。 3. **配置服务**: 如果工作流需要作为WCF服务运行,你需要配置相应的服务宿主和终结点。 4. **调试与测试**: 利用VS...

    WF 4.0 and Activity Designer tidbits

    Activity Designer是WF 4.0中的一种可视化设计工具,用于创建和自定义工作流活动。 在"WF 4.0 and Activity Designer tidbits"的主题下,我们主要探讨的是如何利用WF 4.0的特性以及Activity Designer来提高工作效率...

    WF4.0经典实例代码

    1. **活动设计与使用**:实例代码可能会展示如何创建自定义活动,以及如何使用内置的活动库(如顺序流、选择流、并行流等)来构建复杂的工作流程。 2. **数据绑定与变量**:WF4.0支持数据绑定,使活动能够与外部...

    WF4.0网络教程(含示例代码)

    活动库是WF4.0的一个重要概念,它允许开发人员创建可重用的自定义活动,以构建复杂的工作流逻辑。最后,工作流服务通过结合WF4.0和WCF(Windows Communication Foundation)技术,使得创建基于服务的工作流变得简单...

    WF4.0 实战(二十一):Windows Server AppFabric中宿主WF4.0应用程序.doc

    【Windows Server AppFabric 与 WF4.0 应用程序宿主】 Windows Server AppFabric 是微软推出的一个中间件平台,它提供了对分布式应用程序的支持,尤其是针对Windows Workflow Foundation (WF4.0) 和 WCF(Windows ...

    WF4.0 流程设计器源码例子 (提供状态机模板)

    1. **WF4.0基础知识**:了解WF4.0的核心概念,如活动、工作流实例、触发器、变量和数据绑定。 2. **状态机工作流**:掌握状态机工作流的结构和设计原则,包括初始状态、最终状态、状态转换和事件触发。 3. **...

    WF4.0 实战(二十):Windows Server AppFabric介绍.doc

    AppFabric Hosting Services 则专注于简化WCF(Windows Communication Foundation)服务的管理和运行,尤其是与WF(Windows Workflow Foundation)服务配合的情况。它提供了一个框架,使得在AppFabric环境中托管和...

    WF4.0基础篇学习笔记.docx

    WF4.0(Windows Workflow Foundation 4.0)是微软.NET Framework 4.0中引入...通过理解活动的概念,熟悉XAML的流程描述,以及掌握如何创建和执行自定义活动,开发者可以利用WF4.0构建出灵活且易于维护的业务流程系统。

    坚持学习WF(5):自定义活动(CustomActivity) 源码

    自定义活动是WF强大之处,因为它使得开发者能够扩展WF的功能,以满足独特的需求。 二、创建自定义活动 1. 创建类:首先,你需要创建一个继承自`System.Activities.Activity`的类。这个类将成为你的自定义活动的基础...

    Windows Workflow Foundation开发实战系列课程(5):自定义活动开发

    在这个“Windows Workflow Foundation开发实战系列课程(5):自定义活动开发”中,我们将深入探讨如何利用WF创建自定义活动,以满足特定业务需求。 1. 自定义活动概述: 自定义活动是WF的核心组成部分,它是工作流...

    ASP.net+WF4.0数据持久化请假系统Demo

    ASP.NET + WF4.0(Windows Workflow Foundation 4.0)数据持久化请假系统Demo是一个综合性的项目,展示了如何在Web应用中结合WF4.0技术处理业务流程,特别是请假申请这一具体场景。这个系统利用了ASP.NET作为前端...

    工作流WF4.0入门(八)

    自定义活动是WF4.0的核心特性之一。当内置的活动库无法满足特定需求时,开发者可以创建自己的活动。自定义活动可以通过继承自System.Activities.Activity类来实现,这个基类提供了执行逻辑的基础框架。你可以在...

    WF 4.0 入门经典

    1. **活动(Activity)**:这是WF 4.0的基本构建块,表示工作流中的一个操作或任务。可以是内置的简单动作,如赋值、条件判断,也可以是自定义的复杂逻辑。 2. **工作流(Workflow)**:由一系列活动组成,描述了...

    WorkFlow流程设计源码(wf4.0)

    4. **自定义活动**:开发者可以创建自己的活动,这些活动可以封装复杂的行为或者与其他系统进行交互,极大地扩展了WF4.0的功能。 5. **工作流服务**:WF4.0与WCF(Windows Communication Foundation)紧密集成,...

    Beginning+WF4.0应用到 asp.net源码实例

    wf4.0应用asp.net 这个示例将包括WF4.0的大部分知识点。包括: 1、持久化服务 2、跟踪服务 3、自定义扩展 4、WCF Workflow Service 5、WorkflowServiceHost 6、使用Interop活动去调用WF3.0工作流程

    WF4.0工作流例子(还不错).rar

    1. **活动(Activities)**:WF4.0的核心元素是活动,它们代表了工作流中的操作或决策。活动可以是简单的原子操作,如赋值或条件判断,也可以是复杂的组合,将多个活动打包在一起。 2. **工作流设计(Workflow ...

    简单的WF4.0工作流设计器

    1. **WF4.0基本概念**:理解活动(Activity)、工作流(Workflow)、执行宿主(Host)等核心概念。活动是工作流的基本构建块,它们组合起来形成复杂的工作流程。 2. **WPF(Windows Presentation Foundation)**:...

    WF4.0工作流设计器

    WF4.0(Windows Workflow Foundation 4.0)是微软.NET Framework 4.0中引入的一个强大工作流引擎,用于构建高度灵活、可扩展的工作流应用程序。它为开发者提供了丰富的功能,使得创建复杂的业务流程变得更为简单。WF...

Global site tag (gtag.js) - Google Analytics