zoukankan      html  css  js  c++  java
  • WF4.0 基础篇 (四) 顺序容器Sequence 与CodeActivity

     

    本节主要介绍如何在WF4.0的流程中添加多个Activity,以及如何自定义Activity

     

    本文例子下载:

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

    https://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.运行程序,结果如下

     

  • 相关阅读:
    linux 更换golang版本
    ubuntu 搭建NFS
    golang 异步并发http轮询(爬虫)
    Mysql 事务锁等待时间超时
    排序算法之鸡尾酒排序
    Sql Server一个表向另一个表添加多条数据,关联时查询出一条数据
    Easyui datagrid 开始时间不能大于结束时间
    用python爬了上千万条招聘信息后,最终分析出python要学这些才能就业...
    用python把B站小姐姐跳舞视频爬下来,并打包成可以直接运行的exe文件
    女朋友股票亏惨了,我一怒之下用Python爬取了证券最新数据...
  • 原文地址:https://www.cnblogs.com/foundation/p/1592691.html
Copyright © 2011-2022 走看看