您的位置:首页 > 产品设计 > UI/UE

WF4.0 基础篇 (四) 顺序容器Sequence 与CodeActivity

2013-10-11 17:21 405 查看
本节主要介绍如何在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.运行程序,结果如下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: