转载:Beginning WF 4.0翻译——第一章(创建一个简单的工作流)续一

  • Post author:
  • Post category:其他




添加程序上的元素

WF 4.0

提供了大量的程序元素,例如活动

If



While



Assign



Sequence

等等。下面举一个时钟的例子来说明程序元素的用法。打开

Workflow1.xaml

文件。



使用

Variables



(变量)




WF 4.0

中,你必须定义工作流活动元素所用到的所有

variable

(变量)。你将需要两个

variables

:一个用来指定在什么时候报时,另一个用来需要报多少下铃。点击

Variables

按钮,如果

Variables

的窗口如

Figure1-3

所示(在这种情况下是不能添加

variable

的),它的意思是

variable

没有默认的范围。


点击设计器中的

Sequence

活动,这时

Variables

窗口就会变成如

Figure1-7

所示。




点击

Create Variable

链接。输入

name




counter


,选择

Variable type

(变量类型)为

Int32



Scope

(范围)这时默认为

Sequence

,你可以不去修改它,当然你也可以按你的需求去修改它。

Scope



Sequence

表示这个

Variable

可以在这个

Sequence



Sequence

的子活动中都有效。输入

Default

(默认值)值为

1

。这时

Variables

窗口应该如图

Figure1-8

所示。



Properties

(属性)窗口同样有这样的功能(如图

Figure1-9

),你可以在

Properties

窗口或者在

Variables

窗口中输入

variable

的属性。




再次点击

Create Variable

链接。这次你尝试使用

Properties

窗口来输入属性。输入

name



numberBells

,类型为

Int32

,保留

Scope



Sequence

。点击

Default

属性后面的省略号,弹出

Expression Editor

对话框,如图

Figure1-10

所示。




提示:你可能注意到

WF 4.0

中用到很多

expression

(表达式)。很多的属性都使用到表达式,但是,属性的输入框往往比较小,没有足够的空间来书写复杂的表达式。为解决这个问题,

VS2010

提供了

expression editor

(表达式输入框),我们只需要点击属性框后面的省略号就能弹出表达式输入框让我们来输入。表达式可以是

variables

(变量)、

arguments

(参数)和系统函数,就好像你在代码中使用一样。




Default

属性的表达式输入框中输入表达式

DateAndTime.Now.Hour

。这会把现在的

hour(

小时数

)

赋值给

numberBells

变量。

Variables

窗口这时应该如图

Figure1-11

所示。


If



活动




DateAndTime

的成员

Hour

是根据

24

小时返回小时数的。例如,

2PM

,它会返回

14

。因此你需要调整它,因为你需要在时钟到达

2

的时候响铃,而不是

14

。在代码中,你可以这样写:

If (numberBells > 12)

numberBells -= 12;


但是,在

WF 4.0

中,你需要使用

If



Assign

活动来完成它。拖拉一个

If

活动到

Hello

活动的下面。这时设计器应该如图

Figure1-12



提示:注意到图形中的红色错误圆圈。如果你把鼠标移到它们上面,它会提示你相关的错误。在

If

活动上的错误是你没有指定条件属性。在

Sequence

活动上的错误是它的一个或多个子活动有错。


在属性窗口,改变

DisplayName



Adjust for PM



If

活动由三个元素组成。

Condition

(条件)指定了需要验证的逻辑,它应该是一个

Boolean

类型。

Then

元素是当

Condition

条件为

TRUE

时执行,而

Else

元素是

Condition



Fault

时执行。你不必同时指定

Then



Else

,只要其中一个有值就行。如果没有定义活动,那么也没有活动会被执行。输入

Condition



numberBells>12



Assign



活动


拖拉一个

Assign

活动到

Then

容器。

Assign

活动允许你把一个值赋值给一个

variable

(变量)或者赋值给一个

argument

(参数)。这个活动图示如

Figure1-13




To



Value

属性都是接受一个表达式。你可以直接输入一个表达式到属性框中或者点击省略号,在表达式编辑框中输入表达式。在

To

属性中输入

numberBells

。在

Value

中输入

numberBells-12

。这时属性框如图

Figure1-14

所示。




很多的活动都是容器活动,意思是他们可以包含其他的活动。

If

活动就是一个好例子。


While



活动


现在你添加一个

While

活动来响铃。在“

Adjust for PM

”的下面拖放一个

While

活动。修改

DisplayName



Sound Bells

。如图

Figure1-15

所示。






While

活动中,

Body

中的活动是在条件为真的时候执行,首先

Condition

(条件)被验证,如果为真,则执行

Body

中的活动,活动会一直执行下去直到条件为假。


提示:

DoWhile

活动跟

While

活动类似,但

DoWhile

活动是先执行

Body

中的活动,然后才判断

Conditon

中的条件,这样就确保了

Body

中的活动至少会被执行一次。而

While

活动则是首先判断

Condition

的条件,如果为假,则

Body

中的活动是不会被执行的。




Condition

中输入

counter<=numberBells

。拖拉一个

Sequence

活动到

Body

容器中,设置

Sequence



DisplayName



Sound Bell

。这时图示如

Figure1-16



Sequence



活动


拖放三个活动到“

Sound Bell



Sequence

中。在这个练习中,我们不会真的去响铃。而是我们输出一行文本来代表响铃。拖放一个

WriteLine

活动到“

Sound Bell

”活动中。在

Text

属性中输入




这会显示当前

counter

的值。拖放一个

Assign

活动在

WriteLine

活动的下面。设置

To

属性为

counter



Value

属性为

counter+1

。用来不断递增

counter



Delay



活动


最后,拖放一个

Delay

活动在

Assign

活动的下面。

Delay

活动可以让工作流在一段指定的时间内停止。

Delay

的属性只有

Duration

,它指定了需要停止多久。这需要指定为一个

TimeSpan

类。输入一下代码:




现在的图示应该为

Figure1-17

所示。



更多的装饰


点击在“

Sound Bells



While

活动右上角的收缩按钮。工作流的图形会变成如图

Figure1-18

所示。




拖放一个

WriteLine

活动到“

Sound Bells

”活动的下面。修改

DisplayName



DisplayTime

;在

Text

属性中输入一下表达式:




拖拉一个

If

活动在“

Display Time

”的下面,设置

DisplayName



Greeting

。在

Condition

属性中输入:






Then



Else

容器中分别拖放一个

WriteLine

。在

Then

容器中的

WriteLine



text

为“

Good Evening

”;在

Else

容器中的

WriteLine

中的

Text

输入“

Good Day

”。“

Greeting

”活动应该如图

Figure1-19

所示。



运行程序


点击

F5

运行程序。根据时间的不同,运行的结果会与下面的类似:

原文地址:http://www.cnblogs.com/kukafeiso/archive/2010/06/12/1757008.html

感谢[苦-咖啡]的分享,让大家一起学习进步。

转载于:https://www.cnblogs.com/Tim_Liu/archive/2010/10/18/1854470.html