详解WF4 Beta 2中新功能特性
创始人
2024-06-09 09:11:10
0

本文将介绍WF4 Beta 2中新功能特性,并通过WF4 Beta 2与WF4 Beta 1的对比,使大家能更好的了解WF4 Beta 2。

Acticvity结构说明 WF4 Beta 2的Activity结构

WF4 Beta 2的Activity结构

WF4 Beta 2与WF4 Beta1的Activity结构变化对比说明

1. 取消了[WorkflowElement], 与WF3.0一样,[Activity]成为了WF功能Activity的根类型

[Activity]

2. 增加了表达式Activity [ ActivityWithResult]

  1. public sealed class wxwinterActivityResult :CodeActivity<string>
  2. {
  3. protected override string Execute(CodeActivityContext context)
  4. {
  5. return "wxwinter";
  6. }

实现 Begin/End

3. 增加了异步Activity [AsyncCodeActivity] 可以实现 Begin/End的异步执行方式

  1. public sealed class wxwinterActivity : AsyncCodeActivity
  2. {
  3. protected override IAsyncResult BeginExecute(AsyncCodeActivityContext context, AsyncCallback callback, object state)
  4. {
  5. return callback.BeginInvoke(null, null, null);
  6. }
  7. protected override void EndExecute(AsyncCodeActivityContext context, IAsyncResult result)
  8. {
  9. }
  10. }

4. 取消 [InvokePowershell] Activity

关于[InvokePowershell] Activity的介绍见我写的WF4.0 Beta1 调用PowerShell

( http://www.cnblogs.com/foundation/archive/2009/06/28/1512542.html)

5. 添加Activity [Rethrow] 以实现再次引发异常

添加Activity [Rethrow]

WF4 Beta 2与WF3.0/3.5 的Activity结构变化对比说明

变化很大,基本上可以认为是两个产品

WF4 Beta 2与WF3.0/3.5

运行环境说明 WF4 Beta 2的运行环境WorkflowApplication
  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. WorkflowApplication instance = new WorkflowApplication(new wxwinterActivity());
  6. instance.Run();
  7. System.Console.Read();
  8. }
  9. }
  10. public class wxwinterActivity : CodeActivity
  11. {
  12. protected override void Execute(CodeActivityContext context)
  13. {
  14. System.Console.WriteLine("wxd");
  15. }
  16. }

WF4 Beta 2

WF4 Beta 2与WF4 Beta1的运行环境对比说明

流程实例 [WorkflowInstance] 被 [WorkflowApplication] 取代

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. WorkflowInstance instance = new WorkflowInstance(new wxwinterActivity());
  6. instance.Run();
  7. System.Console.Read();
  8. }
  9. }
  10. public class wxwinterActivity : CodeActivity
  11. {
  12. protected override void Execute(CodeActivityContext context)
  13. {
  14. System.Console.WriteLine("wxd");
  15. }
  16. }

WF4 Beta 2

WF4 Beta 2与WF3.0/3.5 的运行环境对比说明

WF3.X与WF4运行环境最明显的变化是,在WF3.X中要创建实例要使用WorkflowRuntime的CreateWorkflow方法.

而在WF4中,不需要显示创建一个[WorkflowRuntime],而是直接使用[WorkflowInstance (Beta1中)] 创建,这也是到了Beta2中将[WorkflowInstance ]改名为[WorkflowApplication]的原因

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. WorkflowRuntime workflowRuntime = new WorkflowRuntime();
  6. WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(wxwinterActivity));
  7. instance.Start();
  8. System.Console.Read();
  9. }
  10. }
  11. public class wxwinterActivity : System.Workflow.ComponentModel.Activity
  12. {
  13. protected override System.Workflow.ComponentModel.ActivityExecutionStatus Execute(System.Workflow.ComponentModel.ActivityExecutionContext executionContext)
  14. {
  15. System.Console.WriteLine("wxd");
  16. return base.Execute(executionContext);
  17. }
  18. }

工作流开发说明

工作流开发说明
WF4 Beta 2所提供的工作流模板

WF4 Beta 2只提供了一个[Activity]的模板,

工作流开发说明

当使用个[Activity]的模板创建流程时,会提供一个只能放入一个控件的空环境

  1. x:Class="ActivityLibrary1.wxwinterWorkFlow" mva:VisualBasic.Settings="Assembly references and imported namespaces serialized as XML namespaces"
  2. xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:mv="clr-namespace:Microsoft.VisualBasic;assembly=System"
  3. xmlns:mva="clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities"
  4. xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:s1="clr-namespace:System;assembly=System"
  5. xmlns:s2="clr-namespace:System;assembly=System.Xml" xmlns:s3="clr-namespace:System;assembly=System.Core"
  6. xmlns:scg="clr-namespace:System.Collections.Generic;assembly=System" xmlns:scg1="clr-namespace:System.Collections.Generic;assembly=System.ServiceModel"
  7. xmlns:scg2="clr-namespace:System.Collections.Generic;assembly=System.Core" xmlns:scg3="clr-namespace:System.Collections.Generic;assembly=mscorlib"
  8. xmlns:sd="clr-namespace:System.Data;assembly=System.Data" xmlns:sd1="clr-namespace:System.Data;assembly=System.Data.DataSetExtensions"
  9. xmlns:sl="clr-namespace:System.Linq;assembly=System.Core" xmlns:st="clr-namespace:System.Text;assembly=mscorlib"
  10. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  11. Activity>

[Sequence]

当向空Activity中放入[Sequence]时,就可认为是[顺序工作流]

  1. x:Class="ActivityLibrary1.wxwinterWorkFlow"
  2. mva:VisualBasic.Settings="Assembly references and imported namespaces serialized as XML namespaces"
  3. xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:mv="clr-namespace:Microsoft.VisualBasic;assembly=System"
  4. xmlns:mva="clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities"
  5. xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:s1="clr-namespace:System;assembly=System"
  6. xmlns:s2="clr-namespace:System;assembly=System.Xml" xmlns:s3="clr-namespace:System;assembly=System.Core"
  7. xmlns:scg="clr-namespace:System.Collections.Generic;assembly=System" xmlns:scg1="clr-namespace:System.Collections.Generic;assembly=System.ServiceModel"
  8. xmlns:scg2="clr-namespace:System.Collections.Generic;assembly=System.Core" xmlns:scg3="clr-namespace:System.Collections.Generic;assembly=mscorlib"
  9. xmlns:sd="clr-namespace:System.Data;assembly=System.Data" xmlns:sd1="clr-namespace:System.Data;assembly=System.Data.DataSetExtensions"
  10. xmlns:sl="clr-namespace:System.Linq;assembly=System.Core" xmlns:st="clr-namespace:System.Text;assembly=mscorlib"
  11. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  12. Activity>

[Flowchart]

当向空Activity中放入[Flowchart]时,就可认为是[Flowchart工作流]

  1. mc:Ignorable="sap" x:Class="ActivityLibrary1.wxwinterWorkFlow" mva:VisualBasic.Settings="Assembly references and imported namespaces serialized as XML namespaces"
  2. xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  3. xmlns:mv="clr-namespace:Microsoft.VisualBasic;assembly=System" xmlns:mva="clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities"
  4. xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:s1="clr-namespace:System;assembly=System" xmlns:s2="clr-namespace:System;assembly=System.Xml"
  5. xmlns:s3="clr-namespace:System;assembly=System.Core" xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities"
  6. xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=System"
  7. xmlns:scg1="clr-namespace:System.Collections.Generic;assembly=System.ServiceModel" xmlns:scg2="clr-namespace:System.Collections.Generic;assembly=System.Core"
  8. xmlns:scg3="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:sd="clr-namespace:System.Data;assembly=System.Data"
  9. xmlns:sd1="clr-namespace:System.Data;assembly=System.Data.DataSetExtensions" xmlns:sl="clr-namespace:System.Linq;assembly=System.Core"
  10. xmlns:st="clr-namespace:System.Text;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  11. sad:XamlDebuggerXmlReader.FileName="d:\users\wxd\documents\visual studio 2010\Projects\ActivityLibrary1\ActivityLibrary1\wxwinterWorkFlow.xaml"
  12. sap:VirtualizedContainerService.HintSize="235,288">
  13. x:TypeArguments="x:String, x:Object">
  14. x:Key="IsExpanded">Truex:Boolean>
  15. scg3:Dictionary>
  16. sap:WorkflowViewStateService.ViewState>
  17. sap:VirtualizedContainerService.HintSize="213,62" />
  18. sap:VirtualizedContainerService.HintSize="213,62" />
  19. Sequence>
  20. Activity>
WF4 Beta 2WF4 Beta 2与WF4 Beta1 所提供的工作流模板对比说明

WF4 Beta1 非常鲜明的提供了两个工作流模板[Flowchart工作流], [顺序工作流]

顺序工作流

[顺序工作流]

顺序工作流

[Flowchart工作流]

WF4 Beta 2与WF3.0/3.5 所提供的工作流对模板比说明

WF3.0/3.5也提供了两个工作流模板[状态机工作流], [顺序工作流]

其中[状态机工作流]与[Flowchart工作流]有相似之处

Flowchart工作流

[状态机工作流]

状态机工作流

[顺序工作流]

顺序工作流

工作流格式说明

WF4 的工作流可以是用代码构建的,也可以是由xaml构建的, xaml可以动态/静态的编译为一个类,也可以直接以字符串方式加载

WF3.X的工作流可以是用代码构建的,也可以是由xoml构建的,带class头的xoml可以动态/静态的编译为一个类,没有class头的xoml可以直接以字符串方式加载

其他功能说明

WF4与WF3.5都提供了持久化,跟踪,通讯,阻塞等功能,但实现方式不同,也不通用.

WF4与WF3.5的流程设计器从UI风格与实现方式上也有很大不同

原文标题:WF4 Beta 2

链接:http://www.cnblogs.com/foundation/archive/2009/10/22/1587798.html

【编辑推荐】

  1. 浅谈WF 4.0 Beta1中的 跟踪机制
  2. WF4.0 Beta1中的规则引擎变化
  3. 浅谈WF 4.0 beta1的跟踪配置
  4. 详解工作流架构与实现
  5. 解析UML工作流管理系统

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...