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

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

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

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

3.活动的变化

WF3.x活动WF4活动
CallExternalMethodActivitySend
CancellationHandlerActivityCancellationScope
CodeActivity

CodeActivity/NativeActivity

CompensateActivityCompensate
CompensatableSequenceActivityCompensableActivity
ConditionedActivityGroup可通过其他方式实现
DelayActivityDelay
EventHandlingScopeActivity暂无
FaultHandlersActivityTryCatch
HandleExternalEventActivityReceive
IfElseActivityIf
InvokeWebServiceActivitySend
InvokeWorkflowActivity暂无
ListenActivityPick
ParallelActivityParallel
PolicyActivity暂无
ReplicatorActivityForEach, ParallelForEach
SendActivitySend
ReceiveActivityReceive
SequenceActivity, SequentialWorkflowActivitySequence
StateMachineWorkflowActivity暂无
SuspendActivity无
SynchronizationScopeActivity无
TerminateActivity无
ThrowActivityThrow
TransactionScopeActivityTransactionScope
CompensatableTransactionScopeActivityTransactionScope + CompensableActivity
WebServiceFaultActivity整合为工作流服务
WebServiceInputActivity整合为工作流服务
WebServiceOutputActivity整合为工作流服务
WhileActivityWhile

 

二:自定义活动

1.活动基类继承关系:
2009072321020452.jpg

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

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

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 自定义容器活动 主要是自定义容器活动、实现在自定义活动中能拖拽添加其他活动 立即下载

相关推荐

(一)企业微信 - 会话内容存档

企业微信获取会话记录。

专打丶小豆豆的博客 2892

WF4.0入门系列2——用代码创建一个简单的工作流

WF4.0入门系列2——用代码创建一个简单的工作流 打开vs2010创建一个简单的控制台应用程序(不使用workflow模版),如下图 在解决方案中添加System.Activities引用,在Program.cs中添加下列命名空间: using System.Activities; using System.Activities.Statements; using System.A...

weixin_30411819的博客 169

2.4G跳频算法 2.4G切信道算法 (简例示意nRF52832)

2.4G跳频算法 nRF52832示例 2.4G自适应信道算法

Peter.Min 957

WF4.0 基础篇 (二十五) ActivityAction 与 InvokeAction

例子下载: http://files.cnblogs.com/foundation/ActivityActionSample.rar   ActivityAction   类名 System.Activities.ActivityAction System.Activities.ActivityAction Syste

heshengfen123的专栏 1468

禅道二次开发(一):从零搭建本地开发与调试环境

本文详细介绍了禅道二次开发的第一步:从零搭建本地开发与调试环境。通过部署官方一键安装包、配置端口与防火墙、连接数据库、设置Samba文件共享,并最终在VSCode中配置PHP智能感知与Xdebug调试,手把手教你建立一个隔离、高效的专属开发工作台,为后续的代码修改与功能扩展奠定坚实基础。

weixin_29003437的博客 323

2022年全球市场微波等离子体CVD反应器总体规模、主要生产商、主要地区、产品和应用细分研究报告

据GIR (Global Info Research)调研,按收入计,2021年全球微波等离子体CVD反应器收入大约 百万美元,预计2028年达到 百万美元,2022至2028期间,年复合增长率CAGR为 %。

MARKETRESEARCH的博客 1137

WF4.0 基础篇 (二十九) WorkflowInspectionServices

本文例子下载: http://files.cnblogs.com/foundation/WorkflowInspectionServicesSample.rar   WorkflowInspectionServices 类 WorkflowInspectionServices可以得到流程中的Activity, 由于WF4.0的ActivityTree相对复杂,并不

heshengfen123的专栏 1280

[代码开源]基于DistFlow的IEEE33和IEEE69节点最优潮流模型(OPF)实现与性能分析

本文详细介绍了基于DistFlow的IEEE33和IEEE69节点最优潮流模型(OPF)的实现与性能分析。通过代码开源,展示了如何从零搭建电力系统优化模型,解决配电网中的发电成本最小化问题。文章涵盖数据准备、模型实现细节、性能优化建议及常见问题解答,为电力系统研究者提供实用参考。

weixin_29103191的博客 708

WF 4.0 beta1活动概览(1):Procedural

相比于WF 3.5,WF 4.0 beta1提供了大量开箱即用的活动,我们可以使用这些活动来创作工作流或者创建自定义活动。本文将会对这些活动做一个简单快速的概览,并介绍它们的关键特性。活动是工作流程序的工作单元。在WF 4.0中,活动由签名和正文组成。签名是活动的公共参数的术语化定义,这些公共参数定义了活动的输入和输出数据流。而正文则是指活动的执行逻辑,此逻辑可以用其他活动声明性地表示,也

thebesttome的专栏 1015

【拼多多笔试题汇总】2024-03-24-拼多多春招笔试题

A 小镇上有个奇特的游戏。游戏开始时,A 先生准备了一排 nnn 个物品。K 小姐和卢小姐则轮流进行操作。首先,K 小姐可以选择移除至多 xxx 个物品。接着,卢小姐也可以选择移除剩余物品中的至多 yyy 个。游戏的目标是,K 小姐想尽量让剩余物品的价值之和最大化,而卢小姐则想将剩余物品的价值之和最小化。假设两人都采取最优策略,请问最后剩余物品的价值之和是多少?第一行包含五个正整数 n,m,k,x,yn, m, k, x, yn,m,k,x,y,分别表示物品的总数、K 小姐最多可移除的物品数、卢小姐最多可移

春秋招笔试突围 1万+

让 PyCharm 代码“发光”:高亮插件与特效全攻略

PyCharm 作为一款强大的 Python IDE,支持多种插件让代码“发光”——无论是动态输入特效、彩虹括号,还是霓虹主题,都能让你的代码脱颖而出!进入 File → Settings → Editor → Color Scheme → Rainbow Brackets。进入 File → Settings → Appearance & Behavior → Material Theme。进入 File → Settings → Editor → Color Scheme → General。

qq_43580271的博客 3837

WF4.0 Beta1之旅(1):基本介绍

微软发布了Visual Studio 2010 beta1,经过几番周折终于体验上了,不过微软beta版的产品的稳定性也太差了。不发牢骚了,现在4.0的学习资料还是很有限的,Training Kit是比较好的了,推荐大家都看看。我也将学习的过程总结下,下面就开始WF的学习吧。  一:WF4.0 有什么?  WF4.0在beta1就已经看到了比较明显的变化了。  工作流活动模型:WF4.

jiangzhe556的专栏 1730

RuyiDify如何创建知识库API密钥:让程序安全访问知识库

知识库 API Key 是程序访问知识库的钥匙。创建它很简单,但真正重要的是知道它能做什么、应该放在哪里、不能暴露给谁。RuyiDify 讲这一步,不是为了让大家多记一个按钮,而是为了把知识库从“人工上传资料”推进到“程序化维护资料”。

未来已来,AI时代,学AI编程,做AI量化,就来大鹏AI教育。 137

WF4.0 Beta1之旅(4):Bookmark的使用

WF4.0中加入了书签(Bookmark)机制,可以让活动在书签的位置挂起,等待恢复。如果我们需要在活动没有完成的时候,提供额外的数据,这个时候我们就可以给活动注册一个书签,我们需要使用CreateNamedBookmark方法创建书签,该方法有三个参数一个名字,一个BookmarkCallback的委托,当活动恢复的时候执行。和BookmarkOptions,Runtime为每个工作流实例维护一

jiangzhe556的专栏 1555

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

本文示例源代码或素材下载  一:FlowChart的介绍  FlowChart是WF4.0中引入的一种全新的工作流模式,它在 Sequential 和 StateMachine 流控制模型之间提供了一个不错的折中方案。FlowChart 允许  您使用一种分步方法,它可以实现一些简单的决策和转换功能,但它也允许在工作流中返回先前的活动。对许多用户而言,流程图通常看起来更为直观。  

jiangzhe556的专栏 2056

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

WF 4.0 beta1全新体验

微软终于发布了Visual Studio 2010 beta1,而在这个版本中,WF也终于以崭新的面貌出现,并且让我们大吃一惊。  和Visual Studio 2008一样,Visual Studio 2010在新建项目时也可以指定目标.NET Framework版本,并且可用的项目模板会根据选择的.NET Framework而发生变化。  当使用.NET Framework 3.5时,

jiangzhe556的专栏 793

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

WF4.0 Beta1之旅(5):规则引擎的变化

在WF3.x时代我们可以使用声明性的条件和代码方式的条件,也可以使用支持正向链接的RuleSet。当然我们还可以使用基于CodeDOM的API来用代码的方式声明。在微软刚刚发布的WF4.0 Beta1中我们已经看不到这些了,WF4.0提供了统一的完全声明式的表达式(Expression)。现在的版本只支持使用VB来构建表达式(Expression),但是在设计上是可以支持任何语言的,微软也会在未来

jiangzhe556的专栏 1069

WF 4.0 beta1活动概览(2):Flowchart、Messaging、PowerShell以及Migration

本文接着来介绍一下WF 4.0 beta1的其他几个活动分类:Flowchart、Messaging、PowerShell和Migration。FlowchartFlowchart是WF中新引进的一种模型。Flowchart是一种众所周之的、可以直观地表示业务过程的图表。业务分析师、架构师和开发人员都会将Flowchart作为一种共同的语言来来表示业务过程。Flowchart是一种非常

thebesttome的专栏 936

WF4.0 Beta1之旅(7):WF调用PowerShell

在WF4 beta1中与PowerShell交互提供了两个活动InvokePowerShell和InvokePowerShell&lt;T&gt;活动 InvokePowerShell:调用一个不包含返回值的PowerShell cmdlet。InvokePowerShell可以用来调用简单的cmdlets和脚本。我们还可以向cmdlet传递参数和输入对象。执行之后,此活动会提供一组错误信息(如...

fdqwfdsafdsa的博客 276
上一篇: Silverlight 3悄然发布了
下一篇: WF4.0 Beta1之旅(7):WF调用PowerShell
fdqwfdsafdsa
博客等级 码龄18年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值