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
在WF中,任意从Activity派生的类都可以实例化运行,如:
而用VS2010自带的模板所创建的流程是以[System.Activities.Activity]为根创建的,这时,在设计器中只能向设计容器中添加一个[活动],当然流程在很多时候是具有多个节点的,为了解决这个问题,我们可以向设计器中的[Activity 根]中添加一个顺序容器[Sequence],在顺序容器[Sequence]中,可以添加多个[活动],
[活动]在流程运行时按其在顺序容器[Sequence]中的上下顺序依次执行.
执行结果
以下是用代码方式定义的流程
下面是一个CodeActivity的例子,实现了从控制台得到用户的输入,再打印输入结果的功能
1.创建一个名为[CodeActivitySample]的[Workflow Console Application] WF项目
2.为[CodeActivitySample]添加一个名为[myActivity]的[Code Activity]项
3. myActivity的代码内容如下
4.编译以后会在工具栏上看到[myActivity],将其添加到流程设计器中:
5.运行程序,结果如下
本文例子下载:
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); |
[活动]在流程运行时按其在顺序容器[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); } |
5.运行程序,结果如下
相关文章推荐
- WF4.0 基础篇 (四) 顺序容器Sequence 与CodeActivity
- WF4.0 基础篇 (十二) CancellationScope 取消容器
- WF4.0 基础篇 (十二) CancellationScope 取消容器
- WF4.0 基础篇 (十五) TransactionScope 事物容器
- WF4.0 基础篇 (十五) TransactionScope 事物容器
- STL 容器和迭代器连载3_顺序容器初始化
- 细嚼慢咽C++primer(5)——顺序容器
- C++Primer 学习笔记之顺序容器
- C++学习笔记--顺序容器
- Cpp Primer<<学习容器与算法--顺序容器_8
- C++: 顺序容器
- 顺序容器(vector、deque、list、forward_list、array 、string)
- list(链表)常用成员(顺序容器)----插入push_back,push_front,insert删除pop_back,pop_front,erase,clear遍历begin,end判空empt
- 编程测试顺序容器矢量(vector)的主要功能和使用方法
- 顺序容器Vector,List,,Deque区别
- 顺序容器1(总体)
- C++ Primer学习系列(3):函数/标准IO库/顺序容器
- Sequential Containers 顺序容器
- C++ 学习笔记(9)顺序容器、容器适配器
- [STL基础]顺序容器