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

2024-03-28 03:08

本文主要是介绍WF 4.0 beta1活动概览(1):Procedural,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

相比于WF 3.5,WF 4.0 beta1提供了大量开箱即用的活动,我们可以使用这些活动来创作工作流或者创建自定义活动。本文将会对这些活动做一个简单快速的概览,并介绍它们的关键特性。

活动是工作流程序的工作单元。在WF 4.0中,活动由签名和正文组成。签名是活动的公共参数的术语化定义,这些公共参数定义了活动的输入和输出数据流。而正文则是指活动的执行逻辑,此逻辑可以用其他活动声明性地表示,也可以通过代码来表示。

下面按照WF 4.0 beta1在Visual Studio 2010工具栏中的分类来简单地介绍一下这些内置活动。

Procedural

程序性活动提供了一种模拟顺序流控制的机制,我们已经在使用标准编程语言(比如C#、VB)的过程中对这种流控制非常熟悉了。程序性活动包含了可以用来表示顺序行为的基本构造块,覆盖的方面包括流控制、对CLR对象的方法调用、集合维护以及错误处理。它还涉及了一些高端场景,比如并行活动、事务管理、补偿、取消以及持久性。下表包含了Procedural分类中的所有活动。描述中的粗体字表示最重要的参数。

活动

描述

设计器外观

集合管理

AddToCollection<T>

Collection中添加 Item

AddToCollection 

RemoveFromCollection<T>

ItemCollection中移除。

RemoveFromCollection

ClearCollection<T>

清空Collection,将其中存储的所有子项都移除。

ClearCollection

ExistsInCollection

验证中Collection是否存在Item 。如果子项存在,活动的Result 参数就会被赋值为True。

ExistsInCollection

流控制

If

If活动会根据一个Boolean类型的表达式来执行一个子活动。

如果Boolean 表达式-Condition 计算为 True (并且配置了Then活动),就会计划执行Then”活动。如果表达式计算为False(并且设置了Else活动),就会计算Else活动。

If

DoWhile

重复执行其 Body 直到 Condition 计算为 True。Body至少会执行一次。

DoWhile 

ForEach / ForEach<T>

ForEach活动包含一个Values 列表以及一个Body。在运行时,该列表会进行被循环,并且Body会为列表中的每一个值都执行一次。

ForEach

Pick

Pick活动在WF中提供了基于事件的流控制模型。 Pick唯一有效的子活动是PickBranches。

在Pick开始执行时,其Branches 的所有Trigger活动都会被计划执行。当第一个Trigger完成了其计划执行的相应Action活动之后,所有其他Trigger活动就都会被取消。

Pick

PickBranch

PickBranch表示Pick活动的一个分支。它由TriggerAction组成。PickBranch 只能被添加到Pick活动中。

PickBranch

Sequence

Sequence活动允许一个或多个 Activities按照顺序执行。

Sequence

Switch<T>

Switch活动和c#的switch 语句很像。它包含一个Expression 和一组Cases (每个case都有一个键和一个活动)。当表达式计算完后,Switch活动就会查找匹配表达式结果的 Case,如果找到,就执行与该Case相关联的活动。

Switch

While

当Boolean类型Condition 的计算为True时,While 活动就执行其 Body

While

并行执行

Parallel

Parallel活动允许它的子活动并行执行。它会在开始执行时计划其Branches 集合中的每一个WorkflowElement的执行。当所有Branches都完成或其CompletionCondition 属性计算为True时,它就会完成执行。

Parallel 

ParallelForEach /  ParallelForEach<T>

ParallelForEach 活动会遍历其Values集合并为该集合中的每一个元素都执行一个 Activity,它的执行方式和ForEach很像。主要的区别是嵌入的语句是以并行模式执行的。

就像Parallel活动那样,ParallelForEach也有一个 CompletionCondition,所以 ParallelForEach 活动可以提前完成,条件是CompletionCondition返回True。 CompletionCondition会在每次迭代完成后进行计算。

ParallelForEach

错误处理

TryCatch

TryCatch 活动类似于c#中的try..catch 结构:所有位于Try块中的的活动都会被执行,如果发生了异常,就会计划执行最为匹配的Catch 块(如果没有发现匹配的Catch,工作流就会被中断)。所有Catch块都位于一个名为Catches的集合中。

TryCatch活动还有一个Finally 块,它会在Try(以及可能执行的Catch)之后执行。

关于未被处理的异常的提示:

TryCatch 提供了工作流级别的异常处理机制。当抛出未被处理的异常时,工作流就会被中断,因此Finally块也就不会被执行。此行为也和c#中的Try..Catch结构保持一致。

TryCatch

Catch<T>

表示用于 TryCatch活动中的一个Catch。如果Try元素中抛出了一个异常,TryCatch就会尝试根据抛出异常的类型来寻找一个与之匹配的 Catch 元素。

Catch<T>只能用于TryCatch活动中。

Catch

Throw

Throw 活动会在工作流中抛出一个异常。Throw 活动包含一个Exception 属性,该属性包含了将会在执行时抛出的异常。

Throw

实用工具

Assign

Assign活动会将其Value 参数的值赋值给其To 参数。

这两个参数的类型必须是兼容的。这种兼容性会在运行期间进行验证。

Assign

Delay

Delay活动,顾名思义,会将当前工作流的执行阻止一段时间,这段时间是由用户通过其Duration参数指定的。延时过期后,工作流就会继续执行。Delay的延时应该被设置为一个TimeSpan值。

Delay

InvokeMethod / InvokeMethod<T>

InvokeMethod 是一个允许我们调用一个现有的CLR方法和静态方法的活动。想要调用一个方法,我们所需要做的就是提供方法的所有者信息(静态方法为TargetType ,实例方法为TargetObject )、 MethodName以及该方法的Parameters

InvokeMethod支持下面几种方法调用场景:

  • 公共的实例方法和静态方法
  • 通过值或引用传递的参数
  • 对参数数组的支持
  • 对泛型参数的支持
  • 异步方法调用

InvokeMethod

WriteLine

将文本输出到配置好的输出控制台中。

输出到System.Console的背后:

WriteLine 有一个TextWriter 参数,它可以配置为不同的输出。例如,我们可以将TextWriter属性配置为发送文本到ASP.NET 页面。如果没有设置TextWriter ,就会选用其默认值-System Console

WriteLine

高级(取消、补偿、事务以及持久性)

CancellationScope

CancellationScope 活动包含两个主要部分,BodyCancelHandlerBody包括正常执行的活动。如果活动被取消,就会执行CancelHandler

CancellationScope

CompensatableActivity

CompensableActivity用来定义一个可能长期运行的活动,同时还会伴随着 CompensationConfirmation 逻辑。

Compensation 允许用户指定执行纠正操作的活动,该活动将会在Body 成功完成之后执行。

CompensatableActivity

Compensate

Compensate用来显式地调用CompensableActivity的补偿处理程序。

Compensate

Confirm

Confirm用来显式地调用CompensableActivity的确认处理程序。

Confirm

Persist

持久化工作流实例。会根据执行中的WorkflowInstancethe (此活动不包含任何参数)的配置来完成工作流的持久性。

Persist

TransactionScopeActivity

TransactionScopeActivity 提供了初始化新事务、构建事务处理环境(一个工作流执行属性)以及在TransactionScope活动的Body 完成之后调用事务的完成操作。

TransactionScopeActivity 支持“要求”语义。如果已经有一个环境事务在使用中,否则就创建一个新的事务。

嵌套的事务范围

TransactionScopeActivity 可以嵌套于另一个TransactionScopeActivity中。一个嵌套于另一个TransactionScopeActivity 中的TransactionScopeActivity 将会使用现有的事务。

TransactionScopeActivity

本文到此暂时告一段落,下一篇文章我们接着来概览WF 4.0 beta1提供的其他几类活动:Flowchart、Messaging、PowerShell和Migration。

本文翻译自:http://blogs.msdn.com/endpoint/archive/2009/05/29/a-tour-on-the-wf4-activity-palette.aspx

 

原文发布于 coding.windstyle.cn,欢迎访问、订阅并和我交流。

这篇关于WF 4.0 beta1活动概览(1):Procedural的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/854267

相关文章

SIGMOD-24概览Part7: Industry Session (Graph Data Management)

👇BG3: A Cost Effective and I/O Efficient Graph Database in ByteDance 🏛机构:字节 ➡️领域: Information systems → Data management systemsStorage management 📚摘要:介绍了字节新提出的ByteGraph 3.0(BG3)模型,用来处理大规模图结构数据 背景

Mongodb最新版本安装(4.0以上)

最近学习Mongodb数据库 总结了一下心得分享给大家 一,首先需要去官网下载Mongodb  网址https://www.mongodb.com/download-center/community   如下图所示 选择版本号、对应的操作系统、安装包后 点击download  开始下载  下载完成后双击安装就行 安装步骤 1.双击之后如图所示 直接next 2.由于笔者没有保存这张

【Rust光年纪】Rust 机器人学库全景:功能、安装与API概览

机器人学+Rust语言=无限可能:六款库带你开启创新之旅! 前言 随着机器人技术的快速发展,对于机器人学领域的高效、可靠的编程语言和库的需求也日益增加。本文将探讨一些用于 Rust 语言的机器人学库,以及它们的核心功能、使用场景、安装配置和 API 概览,旨在为机器人学爱好者和开发人员提供参考和指导。 欢迎订阅专栏:Rust光年纪 文章目录 机器人学+Rust语言=无限可能:

【最新华为OD机试E卷-支持在线评测】机器人活动区域(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线评测,专栏文章质量平均 94 分 最新华为OD机试目录: https://blog.

活动系统开发之采用设计模式与非设计模式的区别-非设计模式

1、父类Base.php <?php/*** 初始化控制器* User: Administrator* Date: 2022/9/26* Time: 18:00*/declare (strict_types = 1);namespace app\controller;use app\model\common\Token;use app\BaseController;use app\B

Unity-OpenCV-Imgproc函数概览

OpenCV-Imgproc函数概览 函数名功能描述createLineSegmentDetector创建一个智能指针到 LineSegmentDetector 对象并初始化它。此算法用于检测图像中的线段。getGaussianKernel返回高斯滤波器的系数。这些系数用于平滑图像或进行高斯模糊。getDerivKernels返回计算图像空间导数的滤波器系数。这些系数通常用于边缘检

奇舞学院JS02—JS概览

0、过程抽象已有API实例 利用高阶函数去反参,进而实现参数的“翻转”。 // 已有API函数function setColor(color, el) {el.style.color = color;}// setColor('red', content);function reverseArgs(fn){return function(...args){args = args.rever

UTON HACK 4.0 黑客马拉松大赛在马来西亚引起巨大反响

自第四届UTON HACK黑客马拉松大赛开启报名以来,吸引了全世界范围内区块链技术精英的广泛参与,在东南亚地区特别是马来西亚引起了巨大反响。 近日,马来西亚主流媒体Delight Media Malaysia对本次黑客马拉松大赛的协办单位马来西亚何氏全球总商会、UM公司进行了专访。 前排左一起是何致呈、何德成、何伟贤、尼克及马克。 (Delight Media Malaysia摄) 马来

5000字阐述云原生消息中间件Apache Pulsar的核心特性和设计概览

点击上方蓝色字体,选择“设为星标” 回复”面试“获取更多惊喜 Apache Pulsar 是 Apache 软件基金会顶级项目,自称是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性。 Pulsar 是一个用于服务器到服务器的消息系统,具有多租户

Nexpose 6.6.268 发布下载,新增功能概览

Nexpose 6.6.268 for Linux & Windows - 漏洞扫描 Rapid7 Vulnerability Management, release Sep 04, 2024 请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 新增功能 2024 年 9 月