WF4.0_4

转载 2012年03月21日 10:22:53
 

本节主要介绍如何在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.运行程序,结果如下

WorkFlow入门Step.4—Adding Procedural Elements-For-WF4.0-(续)

开篇上篇,我们简单的说明了WF的入门,那么院子里面已经有很多的高手,写了不少的关于工作流的应用,最近在集成工作流平台的过程中也是发现了不少的问题和心得体会,工作流果真不只是审批那么简单,复杂度可见非常...
  • hegezhou
  • hegezhou
  • 2011年06月12日 18:33
  • 376

WF4.0 入门系列(一)Hello Workflow4

一.Hello Workflow 工作流执行一个业务流程,流程中的每一个步骤就是活动Activity。在下面的练习中,我们将使用WWF4创建一个“Hello World”的简单流程,其功能就是输出一...
  • mathieuxiao
  • mathieuxiao
  • 2013年03月10日 10:07
  • 1293

WF4.0 基础篇 (十四) Delay 与WF4中的线程

本节主要介绍WF的实例是单线程运行的,Delay并不是Thread.Sleep,Parallel是单线程运行的,WorkflowApplication与WorkflowInvoker在调用流程上的区别...
  • heshengfen123
  • heshengfen123
  • 2013年10月13日 16:02
  • 920

WF3.0和4.0区别介绍

最近要研究下WF4.0的相关内容,将自己认识的、理解的写下来与大家共勉,有兴趣的朋友可以一起探讨一下。      相对于之前的3.0、3.5中的WorkFlow来说,4.0进行了很大的变动,包括流...
  • itjingtao
  • itjingtao
  • 2015年01月07日 16:02
  • 539

WF4.0 基础篇 (二十二) Tracking

Tracking 介绍 WF跟踪是用来记录工作流执行情况 WF跟踪由以下几部分组成: 跟踪记录 Tracking Records 从工作流运行时...
  • heshengfen123
  • heshengfen123
  • 2013年10月13日 16:34
  • 1127

WF4.0 基础篇 (八) 控制流Activity

本节主要介绍IF, Switch, While, DoWhile, ForEach 的使用.   本文例子下载: http://files.cnblogs.com/foundation/c...
  • heshengfen123
  • heshengfen123
  • 2013年10月11日 22:53
  • 948

WF4.0——升级技能:泛型应用

在项目的开发中,我们知道,加入泛型后可以大大减少我们代码的开发量,
  • xvshu
  • xvshu
  • 2014年08月31日 23:26
  • 1443

WF4.0(2)----设计工作流

自从做了程序员,发现自己长胖了,而且自己的身体抵抗力也出了问题,最近身体不适,公司工作任务最近也很赶,上次写了WF4.0的简介,这次就工作中工作流设计的几种方式稍微总结一下。设计工作流包括四种方式:流...
  • syming
  • syming
  • 2014年09月16日 22:20
  • 415

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

目录 1    Activity介绍及WriteLine Activity的使用    1 1.1    代码下载    1 1.2    什么是Activity    1 1.3    WF4.0 ...
  • thebesttome
  • thebesttome
  • 2011年06月17日 17:02
  • 2661

WF4.0 入门系列(五)WorkflowApplication

到现在为止我们创建的活动是由WorkflowInvoker通过Invoke方法来调用,WorkflowInvoker.Invoke()方法是一个同步方法,被调用的工作流和调用者在同一个线程中。 调用...
  • mathieuxiao
  • mathieuxiao
  • 2013年03月11日 21:08
  • 2265
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WF4.0_4
举报原因:
原因补充:

(最多只允许输入30个字)