一:程序集,命名空间,活动变化
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):规则引擎的变化
发表评论
-
平淡的2007
2007-12-24 08:04 782早上起来,送女朋友去公交车站,然后回来赶紧打开电脑,先 ... -
DreamSpark发布,高校学生免费使用Visual Studio 2008 Professional Edition 等微软软件
2008-02-20 13:23 1378今天上网无意中搜索到学生可以免费使用VS2008专业版,后来又 ... -
坚持学习WF(1):从HelloWorld开始
2008-04-04 16:30 847[置顶]坚持学习WF文章索 ... -
坚持学习WF(2):WF创作模式和设计时工具
2008-04-05 17:19 597[置顶]坚持学习WF文章索 ... -
坚持学习WF(3):WF框架概览
2008-04-08 07:27 734[置顶]坚持学习WF文章索 ... -
坚持学习WF(4):活动(Activity)和依赖属性(DependencyProperty)
2008-04-12 00:01 1100[置顶]坚持学习WF文章索引 活动(Activity) 活动 ... -
坚持学习WF(5):自定义活动(CustomActivity)
2008-04-13 15:25 881当WF提供的标准活动不能满足我们的需求的时候,我们就需要定义自 ... -
MOSS点滴(1):如何开发和部署feature
2008-04-16 21:35 805Features 是MOSS 2007以开箱即用的一套新功能, ... -
MOSS点滴(2):自定义Application Page
2008-04-19 20:07 808在MOSS中后台管理的页面都是Application Pag ... -
坚持学习WF(6):开发可复用的宿主程序
2008-04-21 21:45 659我们之前写工作流宿主 ... -
MOSS点滴(3):说说MOSS中的母版页
2008-04-25 21:15 1134MOSS中有两种页面:Site P ... -
MOSS点滴(4):实现Form认证
2008-04-29 21:12 665本文主要参考了网上的一些文章,但有些文章有些地方说的不是很明确 ... -
坚持学习WF(7):流程控制(Flow Control)
2008-04-30 18:10 771本文主要说说WF中和流 ... -
坚持学习WF(8):本地服务之调用外部方法
2008-05-09 08:17 717WF提供了一组核心服务 ... -
MOSS中的WebPart开发
2008-05-10 13:53 1023由于在asp.net1.1的时候asp.net中还没有webp ... -
坚持学习WF(9):本地服务之事件处理
2008-05-28 07:49 763[置顶]坚持学习WF文章索引 一:先来介绍两个活动 Even ... -
坚持学习WF(10):在工作流中使用关联
2008-06-01 13:03 656[置顶]坚持学习WF文章索 ... -
坚持学习WF(11):工作流通信与队列
2008-06-07 15:45 691[置顶]坚持学习WF文章索引 WF 提供的通信模型是构建于 ... -
MOSS中创建自定义内容类型
2008-06-12 20:23 1068一:简要介绍 某类内容 ... -
.NET中IDisposable接口的基本使用
2008-06-15 12:01 907首先来看MSDN中关于这个接口的说明: [ComVisible ...
相关推荐
WF4.0 Beta1之旅(3):全新的FlowChart源码
WF4.0 实战(二十):Windows Server AppFabric介绍
WF4.0 实战(二十一):Windows Server AppFabric中宿主WF4.0应用程序
坚持学习WF(5):自定义活动(CustomActivity) 源码
WF4.0经典实例代码,WF4.0经典实例代码WF4.0经典实例代码
wf4.0应用asp.net 这个示例将包括WF4.0的大部分知识点。包括: 1、持久化服务 2、跟踪服务 3、自定义扩展 4、WCF Workflow Service 5、WorkflowServiceHost 6、使用Interop活动去调用WF3.0工作流程
WF 4.0 and Activity Designer tidbits,Custom CanvasActivity
[Packt Publishing] WF 4.0 经典实例 (英文版) [Packt Publishing] Microsoft Windows Workflow Foundation 4.0 Cookbook (E-Book) ☆ 出版信息:☆ [作者信息] Andrew Zhu [出版机构] Packt Publishing [出版...
该资源需要安装sql server 2008,运用WF4.0的新特性实现了一个简单的请假系统,并实现了WF4.0的数据持久化
WF4.0利用书签实现动态调用子流程的例子
WF4.0基础篇学习笔记,很好的资料文档,下载不后悔
[Apress] WF 4.0 入门经典 (英文版) [Apress] Beginning WF Windows Workflow in .NET 4.0 (E-Book) ☆ 出版信息:☆ [作者信息] Mark Collins [出版机构] Apress [出版日期] 2010年03月19日 [图书页数] 500页...
从网络上收集的微软WF4.0的相关资料,及例子代码,方便大家学习,参考,并向原创作者们致敬
VS2012 c#
使用VS2012 + C#,介绍了WF4.0 自定义活动以及跟踪技术,原文:http://blog.csdn.net/mathieuxiao/article/details/8685507
非常好的WF 4的入门书,介绍了从简单建立WF,到使用其高级功能,入扩展、跟踪等
WF4.0 流程设计器源码例子 (提供状态机模板)
基础版的流程学习教程 适合初学者 流程相关的东西 从WinFX到NET3.x再到NET4.0 ,WPF,WCF,WF 始终是放在...原文网址:file:///F:/接收文件/培训相关/WF4.0/WF4.0/基础篇/WF4_0 基础篇 (一)开始使用WF_雨枫技术教程网.mht
如果WF不能持久化,那么流程就需要一次就执行完毕,所有的操作就要一次走下去,如果不能持久化,那么在流程中需要处理的公共数据,可能为简单类型,也可能为复杂类型)则完全不同,甚至说每个人都是不一样的,我们要...
WF4.0工作流设计器,C/S结构,可实现无代码设计工作流