WF4.0 基礎篇 (四) 順序容器Sequence 與CodeActivity

來源:互聯網
上載者:User

 

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

 

本文例子下載:

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

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

 

目錄

1    順序容器Sequence 與CodeActivity    1

1.1    順序容器Sequence    1

1.2
CodeActivity    2

 

順序容器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.運行程式,結果如下

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.