程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WF 4.0基礎篇(四) 順序容器Sequence與CodeActivity

WF 4.0基礎篇(四) 順序容器Sequence與CodeActivity

編輯:關於.NET

本節主要介紹如何在WF4.0的流程中添加多個Activity,以及如何自定義Activity

本文例子下載:

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

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

順序容器Sequence 與CodeActivity

順序容器Sequence

類名 System.Activities.Statements.Sequence 文件 System.Activities.dll 結構說明 繼承 NativeActivity
是一個 sealed類
定義了[Collection<Activity> Activities 屬性] 與 [Collection<Variable> Variables 屬性]
override 了 [CacheMetadata方法] 與 [Execute方法] 功能說明 1.[Activities]集合,可以存放Activity
2.[Activities]集合中的Activity按順序從上向下執行
3.[Variables]集合用 於存放變最

在WF中,任意從Activity派生的類都可以實例化運行,如:

WriteLine myWorkfloe = new WriteLine() { Text = new InArgument<string>("wxxinter") };

WorkflowInvoker.Invoke(myWorkfloe);

而用VS2010自帶的模板所創建的流程是以[System.Activities.Activity]為根創建的,這時,在設計器中只能向設計容器中添加一個[活 動],當然流程在很多時候是具有多個節點的,為了解決這個問題,我們可以向設計器中的[Activity 根]中添加一個順序容器[Sequence],在 順序容器[Sequence]中,可以添加多個[活動], [活動]在流程運行時按其在順序容器[Sequence]中的上下順序依次執行.

執行結果

以下是用代碼方式定義的流程

Sequence wxwinterWorkflow = new Sequence();
WriteLine writeLine1 = new WriteLine() { Text = new InArgument<string>("a") };
WriteLine writeLine2 = new WriteLine() { Text = new InArgument<string>("b") };
WriteLine writeLine3 = new WriteLine() { Text = new InArgument<string>("c") };
wxwinterWorkflow.Activities.Add(writeLine1);
wxwinterWorkflow.Activities.Add(writeLine2);
wxwinterWorkflow.Activities.Add(writeLine3);
WorkflowInvoker.Invoke(wxwinterWorkflow);

執行結果

CodeActivity

WF4.0 提供了許多Activity,但有時這些Activtiy並不能完成具體功能,如向數據庫添加數據,發送電子郵件等.在實現這些具體功能時, 我們仍要使用某種編程語言,如C#.當我們需要這種功能時,可以使用 CodeActivity

類名 System.Activities.CodeActivity 文件 System.Activities.dll 結構說明 繼承 Activity
是一個 abstract 類
提供了[abstract void Execute(CodeActivityContext context)]方法 功能說明 一個抽向類,繼承該類後,需要override該類的Execute方法,用於編寫自定義的功能代碼

下面是一個CodeActivity的例子,實現了從控制台得到用戶的輸入,再打印輸入結果的功能

1.創建一個名為[CodeActivitySample]的[Workflow Console Application] WF項目

2.為[CodeActivitySample]添加一個名為[myActivity]的[Code Activity]項

3. myActivity的代碼內容如下

public sealed class myActivity : CodeActivity
{
protected override void Execute(CodeActivityContext context)
{
System.Console.Write("請輸入內容:");
string inputString = System.Console.ReadLine();
string outputString = string.Format("你輸入的是:{0}", inputString);
System.Console.WriteLine(outputString);
}

4.編譯以後會在工具欄上看到[myActivity],將其添加到流程設計器中:

5.運行程序,結果如下

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved