Beginning WF4读书笔计 - 第一章 02添加程序元素

    在WF4.0中提供了一系列如“If”、“Whiel”、“Assign”和“Sequence”等程序要素,(注:这些要素与我们在C#语言中的关键字is, while,=,List类似)为了说明这些要素是如何工作的,我们会设计一个“祝福”程序,类似老式的“座钟”报时一样,发出“铛”的声响。

    首先,让我们的解决方案中打开“Workflow1.asmx”文件。

 

使用变量

    在WF4.0中但凡要使用到的变量,都必须事先定义(预定义)。在本例中我们将定义两个变量,为别为标示需要发声的次数“numberBells”和记录已经响过次数的“counter”。

 

    首先,选中主活动“Sequence”,点击左下角的“变量”,可现如下页面:(注:详细过程可参阅《Beginning WF4读书笔计 第一章 01创建一个简单的工作流》)

 

(图1-7)

    然后,点击“创建变量”,改名为“counter”,并分别填写类型、范围及默认值如下图:

 

(图1-8)

 

    同时查看其属性页面如下:

 

(图1-9)

 

    接下来,以同样的方法创建变量“numberBells”,并设置类型为“Int32”,范围为“Sequence”;这时从属性“Default”的右侧的按钮来设置“VB表达式”,如下图:

 

(图1-10)

 

说明:VB表达式,他大爷!看来得找本VB的书来翻一翻了。不过我试了一个DateTime.Now.Hour,结果一样,没细究。

 

    表达式“DateAndTime.Now.Hour”表示以小时来表示需要响的次数。现在变量总体示图如下:

 

(图1-11)

 

IF

 

    由于DateAndTime返回的时间是以24小时制,所以比如14点,其实应该只响两次,而非14次。如果是在程序代码中,我们可以简单的采用如下代码进行控制。

    f (numberBells > 12)

    {

       numberBells -= 12;

    }

    但在,在WF4.0中我们就需要使用“If”和“Assign”两个活动来协作完成这个功能。步骤如下:

    首先,我们在“WriteLine”活动的下面拖放一个“If”活动,

 

(图1-12)

 [如果活动存在问题,那么在期右上角将会出现一个“!”号,把鼠标放置其上,可显示且体的问题说明]

 

    接下来,将其名称改为“Adjust for PM”。同时,把“Condition”设置为“numberBells > 12

 

Assign

 

    “Assign”活动,可实现对一个变量或参数进行赋值

 

(图1-13)

 

    在本例中,从工具栏中拖曳一个“Assign”到上述的“IF”活动的的“THEN”中,并在其属性页面中设置“TO”和“Value”分别为“numberBells”和“numberBells-12”。如图:

 

(图1-14)

 

    其实很多“活动”属于“复合活动”(compound activities),而这类活动是允许包含其它活动的,If就是其中的一个!

 

While

 

    现在我们需要添加一个“While”活动来发出声响了(注:在本例中只是输出文本)。我们从工具箱中拖一个“While”活动到“Adjust for PM”之下。同时命名为“Sound Bells”。

 

(图1-15)

 

    在“While”活动中,如果“condition”的条件为“true”,时其“Body”中的活动就会执行,真到“condition”为“false”为终止。

 

说明:DoWhile就不细说了,知道C#中while与do{}while区别的就能了解这个。

 

    在本例中,把“Condition”设置为“counter <= numberBells”,同时拖一个“Sequence”到其“Body”中,并更名为“Sound Bell”。

 

(图1-16)

 

Sequence

 

    接下来,我们将使用3个活动来完成“Sound Bell”。在这个示例中,并不会真正的发声,取而代之的是输出一段表示响过次数的文本。

    所以首先拖一个“WriteLine”到“Sound Bell”活动中,并设置期Text属性为“counter.ToString()”。

    接下来,在“WriteLine”活动之下再添加一个“Assign”活动,并设置其“TO”和“Value”属性分别为“counter”、“counter + 1”。即表示每输出一次,已响过的声音加1。

 

Delay

    最后,拖一个“Delay”活动到“Assign”活动之下。“Delay”活动会暂停工作流一段时间(指定的时间)。“Delay”活动有一个参数“Duration”用来设置需要暂停的时间长。我们可以设置为:TimeSpan.FromSeconds(1)

 

 

(图1-17)

 

其它修饰

   

    我们可以通过点击活动右上角的“箭头”来收起和展开活动细节,如图

 

(图1-18)

 

    接下来我们将在“Sound Bells”活动之下,新增一个“WriteLine”活动来显示报时的时间(注:以体现Delay的效果)。并设置期名称为“Display Time”把其Text属性设置为如下表达式:

    "The time is: " + DateAndTime.Now.ToString()

 

    再添加一个“If”活动来输出问候语,并把这个活动命名为“Greeting”,并把其“Condition”设置为如下:

    DateAndTime.Now.Hour >= 18

 

    同时分别在其“THEN”和“ELSE”中各拖一个“WriteLine”活动,并把其Text分别设置为:“Good Evening”和“Good Day”。

 

(图1-19)

 

运行程序(F5)

 

posted @ 2013-04-03 11:00  家住腊树下  阅读(414)  评论(2编辑  收藏  举报