`
addday
  • 浏览: 67960 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Windows Workflow Foundation(一)

阅读更多

组织并执行一系列的操作或者活动的最自然的方式—— 那就是工作流—— 同时也是构造一个工作流程的可执行表现形式的最佳途径。
  Windows Workflow Foundation( 以下简称WWF) 提供了一个编程框架和工具以开发和执行各种不同的基于工作流的应用程序,比如文档管理、线型的商业应用、贸易单据流程、IT 管理、B2B 应用以及消费者应用。

有状态的、持久化的、不间断运行的应用程序

  WWF 简化了创造有状态的,不间断运行的异步工作流应用程序的过程。WWF 运行时引擎管理工作流的运行,为工作流的长期运行提供保障,并能抵抗机器的重启。WWF 运行时服务提供了一系列的附加功能,例如WWF 服务为能温和且正确的处理错误提供了事务和持久化。

工作流模型

  WWF 为开发人员提供了一个工作流模型,来描述应用程序所需要的处理过程。通过使用工作流模型所提供的流程控件、状态管理、事务和同步器,开发人员可以分离应用程序逻辑和业务逻辑,构造一个高层次的抽象,达到提高开发者效率的目的。

组件的重用

  WWF 为开发者提供了一系列的活动 ——活动是一种包含了工作单元的可配置逻辑结构。这种结构封装了开发者可能经常性用到的一些部件,这样就节省了开发者的时间。
  如果遇到一些特殊的需求或场景,WWF 同样为开发自定义的活动提供了简单的方法。
  通过将工作流引擎载入进程,WWF 可以使任何应用程序和服务容器运行工作流。
  运行时服务组件被设计成可插件形式的,这个可使应用程序以最合适的方式来提供它们的服务。WWF 还提供了一组运行时服务的默认实现,这些服务能满足大部分类型的应用程序。
 
另外,WWF 还提供了对ASP.NETout-of-the-box (啥意思?)支持,让构造和运行能在IISASP.NET 环境的工作流变得简单。

 

 顺序工作流( sequential workflow 是为执行一种由一系列预定义的步骤组成的任务而设计的。这种体系结构是模拟基于过程的应用程序的。这一节将用几个步骤来编写一个简单的开支报告程序,这个小程序使用 WinFrom 做界面,用顺序工作流做业务逻辑。

 这个小程序有一个 TextBox 来输入开支报告的总数,一个 Button 点击提交报告。工作流将评估开支,如果开支小于 1000 则提请领班审批,如果大于等于 1000 则提请经理审批。之后,工作流会发送一个审批意见,此时,出现一个 Label 显示审批意见,两个 Button 分别表示通过和拒绝审批。当某一个按钮被点击的时候,应用程序会通知回应工作流,工作流继续处理发生的事件。

 

开始构造顺序工作流

 

创建工作流类

  WWF SDK 中定义了一个 SequentialWorkFlow 类,我们定义一个 ExpenseRoportWorkflow 类,并继 承自SequentialWorkflow ,这样就创建一个顺序工作流。如:

 

 1 using  System;
 2 using
 System.Workflow.Activities;
 3 using
 System.Workflow.Activities.Rules;
 4

 5 namespace
 Microsoft.Samples.Workflow.Quickstarts.SequentialWorkflow
 6
{
 7     [RuleConditionsAttribute( typeof
(Microsoft.Samples.Workflow.Quickstarts.SequentialWorkflow.ExpenseReportWorkflow))]
 8      public   sealed  partial  class
 ExpenseReportWorkflow : System.Workflow.Activities.SequentialWorkflow
 9     
{
10          public
 ExpenseReportWorkflow()
11         
{
12

13         }

14     }

15 }

16

声明工作流参数

 

 在一个工作流运行时,它可以从宿主应用程序中接收参数。参数ParameterDeclaration 类型的对象,一旦工作流初始化完成,参数的值就能通过工作流的Parameters 集合来访问。

 这里的开始报告程序用了两个参数。第一个参数是开支的总数;第二个是一个传出参数,用来放置审批意见。

 定义一个新的方法InitializeComponent ,并在构造 ExpenseRoportWorkflow 类的构造函数中调用它。一下的例子示范了怎样定义两个参数并把它们加到 Parameters 集合中。


<!----> 1 public  ExpenseReportWorkflow()
 2

 3
{
 4

 5
    InitializeComponent();
 6

 7 }

 8
 9
 
10

11 private   void
 InitializeComponent()
12

13
{
14

15     System.Workflow.ComponentModel.ParameterDeclaration Amount  =   new
 System.Workflow.ComponentModel.ParameterDeclaration();
16

17     System.Workflow.ComponentModel.ParameterDeclaration Result  =   new
 System.Workflow.ComponentModel.ParameterDeclaration();
18

19      //

20
21      //
 Workflow Parameters
22

23     
//
24

25     Amount.Direction  =  System.Workflow.ComponentModel.ParameterDirection.In;
26

27     Amount.Name  =   " Amount "
;
28

29     Amount.Type  =   typeof ( int
);
30

31     Amount.Value  =   null
;
32

33     Result.Direction  =
 System.Workflow.ComponentModel.ParameterDirection.Out;
34

35     Result.Name  =   " Result "
;
36

37     Result.Type  =   typeof ( string
);
38

39     Result.Value  =   null
;
40

41      this
.Parameters.Add(Amount);
42

43      this
.Parameters.Add(Result);
44

45 }

46
47

使用IfElse 活动

 

 IfElse 活动 用条件表达式来控制工作流中流程的运行。工作流将根据条件表达式的结果来决定执行条件分支(IfElseBranch 中的哪一个活动。

 例子中将使用IfElse 活动。通过判断从宿主应用程序中传入的Amount 参数的值是否小于1000 ,来决定是否将审报发送到领班,否则发送到经理。

 

创建IfElse 活动

 1 .定义4 个私有变量

类型

名称

IfElse

evaluateExpenseReportAmount

IfElseBranch

ifNeedsLeadApproval

IfElseBranch

elseNeedsManagerApproval

CodeCondition

ifElseLogicStatement

 2 .在 InitializeComponent 中用默认构造函数实例以上4 个对象。

 以下的代码示例了怎样创建IfElse 活动,并用IfElseBranch 活动联系两个逻辑分支。你需要把以下代码放到InitializeComponent 方法底部。

 1 //  
 2

 3 //
 EvaluateExpenseReportAmount
 4

 5 //  

 6
 7 this .EvaluateExpenseReportAmount.Activities.Add( this .ifNeedsLeadApproval);
 8

 9 this .EvaluateExpenseReportAmount.Activities.Add( this
.elseNeedsManagerApproval);
10

11 this .EvaluateExpenseReportAmount.ID  =   " EvaluateExpenseReportAmount "
;
12

13 //
 
14

15 //
 ifNeedsLeadApproval
16

17 //  

18
19 this .ifNeedsLeadApproval.Activities.Add( this .invokeGetLeadApproval);
20

21 ifElseLogicStatement.Condition  +=   new  System.Workflow.Activities.ConditionalExpression( this
.DetermineApprovalContact);
22

23 this .ifNeedsLeadApproval.Condition  =
 ifElseLogicStatement;
24

25 this .ifNeedsLeadApproval.ID  =   " ifNeedsLeadApproval "
;
26

27 //
 
28

29 //
 elseNeedsManagerApproval
30

31 //  

32
33 this .elseNeedsManagerApproval.Activities.Add( this .invokeGetManagerApproval);
34

35 this .elseNeedsManagerApproval.Condition  =   null
;
36

37 this .elseNeedsManagerApproval.ID  =   " elseNeedsManagerApproval "
;
38

 WWF IfElse 活动 中,有两种评估条件表达式的方式。一种是RoleCondition ,这个对象通过使用一组规则来判断条件表达式的结果;另一种就是使用CodeCondition 活动。CodeCondition 使用一个回调方法,这个回调方法返回一个代表评估结果的布尔值。上面的例子就是使用CodeCondition 来决定条件表达式的值。如果Amount 参数小于1000 ,回调方法返回true ,否则返回false 。以下的代码就是这个回调函数的定义,你可以把它加到工作流类的定义中。

 1 private   bool  DetermineApprovalContact( object  sender, EventArgs e)
 2

 3
{
 4

 5      if  ( Convert.ToInt32( this .Parameters[ " Amount " ].Value)  <   1000
 )
 6

 7          return   true
;
 8

 9
 
10

11      return   false
;
12

13 }

14

构造IfElse 分支(IfElseBranch )活动

分享到:
评论

相关推荐

    Windows Workflow Foundation构建工作流应用

    #### 一、Windows Workflow Foundation 概览 **Windows Workflow Foundation (WF)** 是由微软开发的一个用于构建工作流应用程序的框架。它旨在为开发者提供一个统一的工作流平台,使得开发人员可以更加容易地在不同...

    Windows Workflow Foundation(1)

    Windows Workflow Foundation (WF) 是微软开发的一个框架,用于构建、执行和管理工作流应用程序。WF 是.NET Framework 3.0 的一部分,它提供了一种结构化的编程模型,使得开发人员可以方便地创建复杂的业务流程。 *...

    Windows Workflow Foundation开发实战系列课程(2):源码

    Windows Workflow Foundation(WF)是微软开发的一个用于构建工作流应用程序的框架,它允许开发者通过图形化的方式设计业务流程,使得复杂的工作流程管理变得更为简单。本课程“Windows Workflow Foundation开发实战...

    Visual Studio 2005 Extensions for Windows Workflow Foundation (CHS)

    《Visual Studio 2005 Extensions for Windows Workflow Foundation (CHS)》是针对微软的集成开发环境Visual Studio 2005设计的一款扩展工具,专为Windows Workflow Foundation(WF)提供增强的功能。Windows ...

    windows workflow foundation高级编程源代码

    Windows Workflow Foundation高级编程源代码 英文名:Professional Windows Workflow Foundation 原地址: ...

    Programming Windows Workflow Foundation

    《Programming Windows Workflow Foundation》这本书是关于微软的Windows Workflow Foundation (WF) 框架的深入指南,该框架是.NET Framework的重要组成部分,用于构建业务流程和工作流应用。WF允许开发者以声明式...

    Microsoft Windows Workflow Foundation 4.0 Cookbook翻译

    《Microsoft Windows Workflow Foundation 4.0 Cookbook》是针对微软的一项重要技术——Windows Workflow Foundation (WF) 的实战指南,尤其适用于4.0版本。WF 是一个用于构建工作流应用程序的框架,它允许开发者...

    Windows Workflow Foundation开发实战系列课程(1):报销流程开发概述

    Windows Workflow Foundation是Microsoft.NET Framework的一个核心组件,主要用于构建业务流程和工作流应用。WF提供了一个统一的框架,使得开发者能够以编程方式定义、执行和管理复杂的业务流程。在"Windows ...

    Windows Workflow Foundation开发实战系列课程之4

    在本课程"Windows Workflow Foundation开发实战系列课程之4"中,我们将深入探讨如何利用Windows Workflow Foundation(WF)来开发工作流服务。WF是.NET Framework的一部分,它为构建、执行和管理工作流应用程序提供...

    WF (Windows Workflow Foundation) 入门向导 – 范例程序下载

    推荐CodeProject 文章:Introduction to WF (by D3MON) 。...(2)创建一个Sequential Workflow Library 和一个Windows Form 应用程序,该Win-Form 应用程序需要引用Sequential Workflow Library 项目。

    Windows Workflow Foundation开发实战系列课程(3):流程通讯开发

    Windows Workflow Foundation(WF)是微软提供的一种用于构建业务流程应用程序的框架,它允许开发者通过图形化的方式设计、执行和管理工作流。在这个“Windows Workflow Foundation开发实战系列课程(3):流程通讯...

    Windows Workflow Foundation Step By Step.pdf

    《Windows Workflow Foundation Step By Step》是一本由Kenn Scribner编写的书籍,该书详细介绍了Windows Workflow Foundation(WF)的相关概念、设计原理以及实际应用案例。WF是微软提供的一种用于构建业务流程驱动...

    Essential Windows Workflow Foundation

    《Essential Windows Workflow Foundation》是Addison-Wesley出版社在2006年10月出版的一本关于Windows Workflow Foundation(WF)的指南。这本书详细介绍了WF这一微软开发的用于构建工作流应用的核心技术,旨在帮助...

Global site tag (gtag.js) - Google Analytics