WF4.0与WF3.X区别
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会自动判断,透明了。
转帖地址:http://tech.ddvip.com/2009-07/1248354896126157.html
WF4.0与WF3.X区别相关推荐
- WF4.0 基础篇 (三) 流程实例WorkflowApplication与设计WF程序的基本原则
通过本节,可以初步了解WF程序的特性,为以后的WF类应用开发提供一个初步的感性认识 目录 1 流程实例WorkflowApplication与设计WF程序的基本原则 1 1.1 流程 ...
- WF4.0 基础篇 (二十六) Interop调用WF3.X的Activity
本节主要介绍Interop调用WF3.X的Activity 本文例子下载: http://files.cnblogs.com/foundation/InteropSample.rar 本文例子说明 I ...
- WF4.0 基础篇 (十四) Delay 与WF4中的线程
本节主要介绍WF的实例是单线程运行的,Delay并不是Thread.Sleep,Parallel是单线程运行的,WorkflowApplication与WorkflowInvoker在调用流程上的区别 ...
- WF4.0实战(六):控制WPF动画
这个例子改造了王晓冬老师的:用WF流程控制WPF动画. 本文用一个小例子演示了在WF中定义两个操作步骤,用来控制WPF页面元素的动画.王冬老师当时使用的是WF3.0,现在我改成WF4.0. 先看效果: ...
- WF4.0实战(七):请假流程(带驳回操作)
我使用WF4.0有很长一段时间了,但是对WF3.0和WF3.5自知甚少,对状态机也不甚了解.今天生鱼片前辈的博文:WF4实现工作流驳回流转模型的几种设计方案 中提出的四中实现驳回的方式中.第一种大家都 ...
- [转]WF4.0 基础篇 (一)开始使用WF
本文转自:http://www.cnblogs.com/foundation/archive/2009/10/26/1589993.html 来博客园写WF主题博客已经3年了, 在园子里认识了很多朋友 ...
- WF4.0 基础篇 (二十九) WorkflowInspectionServices
本文例子下载: http://files.cnblogs.com/foundation/WorkflowInspectionServicesSample.rar WorkflowInspectionS ...
- 适用于WF4.0的流程设计器 (Wxd.WF,BPM.Foundation,Wxwinter.WF 升级用)
适用于WF4.0的流程设计器 (Wxd.WF,BPM.Foundation,Wxwinter.WF 升级用) 提供调试,图形化状态跟踪,自动生成数据页面,格式转换,Silverlight支持等功能 后 ...
- WF4.0实战(十五):伤心聊天室
大家都知道,一般能使用WCF的Callback Contract能实现聊天室.这篇文章我将使用WF4.0是实现我的伤心聊天室.先看效果,再讲如何实现和使用WF4.0的优势,最后总结.界面很简洁,请见谅 ...
最新文章
- sizeof 和strlen的区别
- leetcode 463. 岛屿的周长(Java版)
- 人工智能数学基础知识
- Android找工作系列之自定义View
- Oracle闪回技术
- 我的成长日记20210406(日常测试工作安排)
- VS“当前上下文中不存在名称“ViewBag”,当前上下文不存在名称“model””-已解决...
- paypal接口文档android,PAYPAL --集成API接口教程
- JavaScript笔记 03:数组
- 快乐去学习「快乐机器学习」
- 如何批量删除word文档中表格_word长文档排版:如何快速批量设置样式
- 我发现一个地方能免费领取价值198元的手环,具有能量并且有高人加持过的,只要关注微信就可以免费领取
- asc码即ascii,没有asc这一说,ascii后是ii而不是罗马数字
- JavaScript中的对象的属性名和属性值
- M2VoC比赛论文——台湾大学
- jsp中定义日期格式
- soi cmos技术及其应用_投屏技术及其教学应用
- Tello无人机开发
- 近段时间的学习碎片整理(10)
- MacOS下ZeroNet如何切换Data目录
热门文章
- arduino低功耗模式_ESP8266+DeepSleep+BMP280+ThingSpeak温度压力高度电量无线低功耗测量...
- 马原(2023版)第一章第一节笔记
- 羽球入门之接发球技术动作要领解读
- 使用node搭建服务器(wifi连接查看vue项目)
- 洛谷P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two
- 水星路由器设置的详细方法介绍(图文教程)
- 计算机有符号数为什么采用补码表示
- Python实现连续图片、多图片多维组合既数据增维和调整维度的案例一则
- 微信小程序--证件照换底色项目前端修改+头像框项目前端页面实现修改
- 直接反投影 matlab,濾波反投影重建算法(FBP)實現及應用(matlab)