任务 2:在顺序工作流中使用自定义活动

在此任务中,将在任务 1:创建自定义活动中创建的 WebTear 自定义活动添加到您的 WebTearWorkflow 顺序工作流中。

此工作流使用宿主应用程序为 URL 值设置的字符串属性,并将其绑定到在 WebTear 自定义活动中定义的 UrlProperty 上。 当 WebTear 活动在工作流中运行时,该活动从请求的 URL 上下载文本并引发一个事件。 此任务中的工作流为该事件创建一个事件处理程序,以检索由活动下载的数据。

备注

虽然建议您按顺序进行下列练习,但并不要求您这么做。 您可以通过打开示例项目并执行下节中的步骤来开始此练习。

定义顺序工作流属性

  1. WebTearWorkflow 类中,创建一个名为 pageUrl 的私有 String 字段和一个名为 pageData 的 private String 字段。

    private string pageUrl;
    private string pageData;
    
  2. WebTearWorkflow 类中,创建一个名为 webTearActivity 的私有 WebTearActivity 字段。

    private WebTearActivity webTearActivity;
    
  3. WebTearWorkflow 类中,创建一个名为 Url 的公共 String 属性。

    创建一个返回 pageUrl 字段值的 get 方法和一个设置 pageUrl 字段值的 set 方法。

    public string Url
    {
        get { return pageUrl; }
        set { pageUrl = value; }
    }
    
  4. WebTearWorkflow 类中,创建一个名为 Data 的公共 String 属性。

    创建一个返回 pageData 字段值的 get 方法和一个设置 pageData 字段值的 set 方法。

    public string Data
    {
        get { return pageData; }
        set { pageData = value; }
    }
    

将 WebTearActivity 添加到顺序工作流

  1. WebTearWorkflow 类的 InitializeComponent 方法中,创建一个名为 activityBind1 的局部 ActivityBind 变量,并创建该对象的新实例。

    备注

    此步骤的代码应添加在将 CanModifyActivities 属性设置为 true 的代码之后。

    ActivityBind activitybind1 = new ActivityBind();
    
  2. InitializeComponent 方法中,创建 webTearActivity 对象的新实例。

    this.webTearActivity = new WebTearActivity();
    
  3. webTearActivity 对象的 Name 属性设置为字符串 "webTearActivity"。

    this.webTearActivity.Name = "webTearActivity";
    
  4. activityBind1 属性的 Name 属性设置为字符串 "WebTearWorkflow",将 Path 属性设置为字符串 "url"。

    activitybind1.Name = "WebTearWorkflow";
    activitybind1.Path = "Url";
    
  5. 为由 webTearActivity 对象引发的 PageFinished 事件添加名为 webTearActivity_PageFinished 的事件处理程序。

    此事件的委托是 PageFinishedEventHandler 委托。

    备注

    只有在创建 C# 应用程序时才需要此步骤。 Visual Basic 应用程序的事件处理程序是通过使用步骤 9 中的 Handles 关键字创建的。

    this.webTearActivity.PageFinished += 
        new WebTearActivity.PageFinishedEventHandler
        (this.webTearActivity_PageFinished);
    
  6. 调用在 webTearActivity 类中定义的 SetBinding 方法,并将 UrlProperty 类名和 activityBind1 对象作为参数传递给该方法。

    this.webTearActivity.SetBinding(WebTearActivity.UrlProperty, 
        ((ActivityBind)(activitybind1)));
    
  7. 通过调用在 Activities 集合中定义的 Add 方法,将 webTearActivity 对象添加到工作流的 Activities 集合中。

    this.Activities.Add(this.webTearActivity);
    
  8. WebTearWorkflow 类中创建一个名为 webTearActivity_PageFinished 的新的私有方法,该方法可接受名为 senderObject 参数和名为 ePageFinishedEventArgs 参数。

  9. webTearActivity_PageFinished 方法中,将工作流的 pageData 字段设置为与在 PageFinishedEventArgs 参数中定义的 Data 属性相等。

    private void webTearActivity_PageFinished(object sender, PageFinishedEventArgs e)
    {
        this.pageData = e.Data;
    }
    

编译代码

有关编译代码的信息,请参见编译代码

任务 3:修改自定义活动宿主应用程序中,使宿主应用程序在单击按钮时启动工作流。

请参见

任务

任务 3:修改自定义活动宿主应用程序

其他资源

教程:创建自定义活动
Custom Activities

Footer image

版权所有 (C) 2007 Microsoft Corporation。保留所有权利。