日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WF4.0 基础篇 (二) Activity介绍及WriteLine Activity的使用

發布時間:2025/4/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WF4.0 基础篇 (二) Activity介绍及WriteLine Activity的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

從本篇開始,將正式講解WF4.0,本文主要涉及如下內容:Activity介紹, WF4.0 中工作流的結構,通過WriteLine演示InArgument<T>參數的使用

?

目錄

1????Activity介紹及WriteLine Activity的使用????1

1.1????代碼下載????1

1.2????什么是Activity????1

1.3????WF4.0 中工作流的結構????2

1.4????WriteLine Activity????3

1.4.1????Text 屬性????3

1.4.2????TextWriter 屬性????4

1.4.3????在代碼中使用WriteLine????5

?

?

Activity介紹及WriteLine Activity的使用

?

代碼下載

[WF4.0 基礎篇 (一)開始使用WF] 的代碼

http://files.cnblogs.com/foundation/helloWorkflow.rar

?

本文代碼

http://files.cnblogs.com/foundation/WriteLineActivitySample.rar

代碼結構說明

?

什么是Activity

Activity在WF中是一個最基本的概念.當談及Activity時,通常是指如下兩個概念Activty Class 或 在 工作流中任意Activity派生類的統稱

?

?

一.先說一下Activty Class

這個概念比較簡單,就是指 [System.Activities.Activity] 這個NET4.0 類庫中所帶的類

[System.Activities.Activity]是工作流結構的基類,下圖是[System.Activities.Activity]與派生類的結構

?

?

二.再說一下"工作流中任意Activity派生類的統稱"是什么意思

在很多翻譯文章中,當其要表述"工作流中任意Activity派生類的統稱"這個概念時,會將[Activity]翻譯為[活動],其實我更喜歡將其翻譯為[節點]

WF4.0的流程結構與我們常用的流程圖很象,下面我們看一下一個流程圖的例子:

(注:從漢語的角度講,[節點]與[結點]是不同的,[節點]是指上圖中的矩形,[結點]則是指上圖中矩形間的連線)

?

我們再看一下WF4.0流程的例子

?

我們可以將WF4.0流程中的[活動]理解為流程圖的[節點]

(注: WF4.0流程中只有[節點]沒有[結點],從數據結構的角度講上面的兩個例子分別是[圖結構]和兩種描述方式,第一個例子是([節點]+[結點]),第二個例子是([節點]+ [節點關系自描述]) ,這個概念先講到這里,后面我會專門寫一篇從數據結構的角度分析WF4.0流程結構的文章)

?

WF4.0 中工作流的結構

WF4.0工作流從表現形式上看是圖結構,但其實質上仍是樹結構,有[根],有鮮明的[層次關系]這些都是樹的基本特征.

只不過WF4.0工作流采用了[枝葉樹]的方式,并且提供了FlawCahr這個[活動]用以在其內部實現[圖結構]

下面我具體說明一下枝葉樹結構:

枝葉樹是指在樹結構上存在兩類節點,一類是支節點,一類是葉節點.支節點下可以有支節點也可以有葉節點,葉節點下不能再有任何節點.這與磁盤結構很象.支節點像文件夾,葉節點像文件.

WF4.0的活動也是這樣.其中[FlowCahr]與[Sequence]是兩個常用的支節點[活動]

[FlowCahr]用于實現一個圖結構的[活動]

[Sequence]則用于實現從上到下順序執行的[活動]

關于這兩個[活動]在后面的文章中會有詳細介紹,下面我們先學習一個簡單的葉節點[活動], WriteLine

?

?

WriteLine Activity

WriteLine是一個用于輸出字符串的Activity,在[開始使用WF4.0]一文中,我們已經使用它了,在這量我將對WriteLine的功能做具體講解,并引入一個WF4.0中很重要的概念"表達式"

類名

System.Activities.Statements.WriteLine

文件

System.Activities.dll

結構說明

繼承 CodeActivity

是一個 sealed類

定義了[InArgument<string> Text屬性] 與[InArgument<TextWriter> TextWriter屬性]

override 了 [CacheMetadata方法] 與 [Execute方法]

功能說明

WriteLine類調用[TextWriter 屬性]所指定的[System.IO.TextWriter 對像]輸出[Text 屬性] 的值

如果沒指定[TextWriter 屬性],默認為控制臺輸出[Text 屬性] 的值

?

Text 屬性

是一個InArgument<string> 類型參數 ,用于接收結果值為[string]的VB表達式

(關于InArgument<T>與WF4.0中的VB表達式會在后面的文章中詳細介紹)

流程

xaml

<Activity mc:Ignorable="sap"

x:Class="WriteLineActivitySample.Workflow1"

mva:VisualBasic.Settings="Assembly references and imported namespaces serialized as XML namespaces"

xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:mv="clr-namespace:Microsoft.VisualBasic;assembly=System"

xmlns:mva="clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities"

xmlns:s="clr-namespace:System;assembly=mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

xmlns:s1="clr-namespace:System;assembly=mscorlib"

xmlns:s2="clr-namespace:System;assembly=System"

xmlns:s3="clr-namespace:System;assembly=System.Xml"

xmlns:s4="clr-namespace:System;assembly=System.Core"

xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities"

xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation"

xmlns:scg="clr-namespace:System.Collections.Generic;assembly=System"

xmlns:scg1="clr-namespace:System.Collections.Generic;assembly=System.ServiceModel"

xmlns:scg2="clr-namespace:System.Collections.Generic;assembly=System.Core"

xmlns:scg3="clr-namespace:System.Collections.Generic;assembly=mscorlib"

xmlns:sd="clr-namespace:System.Data;assembly=System.Data"

xmlns:sd1="clr-namespace:System.Data;assembly=System.Data.DataSetExtensions"

xmlns:sl="clr-namespace:System.Linq;assembly=System.Core"

xmlns:st="clr-namespace:System.Text;assembly=mscorlib"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

>

<WriteLine

DisplayName="WriteLineText屬性演示"

sad:XamlDebuggerXmlReader.FileName="d:\users\wxd\documents\visual studio 2010\Projects\WriteLineActivitySample\WriteLineActivitySample\Workflow1.xaml"

sap:VirtualizedContainerService.HintSize="213,200"

Text="[String.Format(&quot;{0}:{1}&quot;, &quot;wxwinter&quot;, System.DateTime.Now.ToString())]"

/>

</Activity>

運行工作流

class Program

{

static void Main(string[] args)

{

//WriteLine的Text屬性演示

WorkflowInvoker.Invoke(new Workflow1());

?

//控制臺停屏看效果

System.Console.Read();

}

}

運行結果

?

TextWriter 屬性

是一個InArgument<TextWriter> 類型參數 ,用于接收結果值為[TextWriter]的VB表達式

自定義

TextWriter

public class myTextWriter : System.IO.TextWriter

{

public override Encoding Encoding

{

get { return Encoding.UTF8; }

}

public override void WriteLine(string value)

{

System.Console.WriteLine("wxwinter:" + value);

}

}

流程

xaml

<Activity ...>

<WriteLine DisplayName="WriteLine的TextWriter屬性演示"

?

Text="wxd"

?

TextWriter="[New WriteLineActivitySample.myTextWriter()]"

/>

</Activity>

運行工作流

?

class Program

{

static void Main(string[] args)

{

//WriteLine的TextWriter屬性演示

WorkflowInvoker.Invoke(new Workflow2());

?

//控制臺停屏看效果

System.Console.Read();

}

}

運行結果

?

在代碼中使用WriteLine

class Program

{

static void Main(string[] args)

{

WriteLine wxwinterActivity = new WriteLine();

InArgument<string> inArgument = new InArgument<string>(getValue("wxd"));

wxwinterActivity.Text = inArgument;

WorkflowInvoker.Invoke(wxwinterActivity);

?

System.Console.Read();

}

?

static string getValue(string p)

{

return "wxwinter:" + p;

}

}

?

總結

以上是生活随笔為你收集整理的WF4.0 基础篇 (二) Activity介绍及WriteLine Activity的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。