任务 2:在顺序工作流中使用自定义活动
在此任务中,将在任务 1:创建自定义活动中创建的 WebTear 自定义活动添加到您的 WebTearWorkflow 顺序工作流中。
此工作流使用宿主应用程序为 URL 值设置的字符串属性,并将其绑定到在 WebTear 自定义活动中定义的 UrlProperty 上。 当 WebTear 活动在工作流中运行时,该活动从请求的 URL 上下载文本并引发一个事件。 此任务中的工作流为该事件创建一个事件处理程序,以检索由活动下载的数据。
备注
虽然建议您按顺序进行下列练习,但并不要求您这么做。 您可以通过打开示例项目并执行下节中的步骤来开始此练习。
定义顺序工作流属性
在 WebTearWorkflow 类中,创建一个名为 pageUrl 的私有 String 字段和一个名为 pageData 的 private String 字段。
private string pageUrl; private string pageData;
在 WebTearWorkflow 类中,创建一个名为 webTearActivity 的私有 WebTearActivity 字段。
private WebTearActivity webTearActivity;
在 WebTearWorkflow 类中,创建一个名为 Url 的公共 String 属性。
创建一个返回 pageUrl 字段值的 get 方法和一个设置 pageUrl 字段值的 set 方法。
public string Url { get { return pageUrl; } set { pageUrl = value; } }
在 WebTearWorkflow 类中,创建一个名为 Data 的公共 String 属性。
创建一个返回 pageData 字段值的 get 方法和一个设置 pageData 字段值的 set 方法。
public string Data { get { return pageData; } set { pageData = value; } }
将 WebTearActivity 添加到顺序工作流
在 WebTearWorkflow 类的 InitializeComponent 方法中,创建一个名为 activityBind1 的局部 ActivityBind 变量,并创建该对象的新实例。
备注
此步骤的代码应添加在将 CanModifyActivities 属性设置为 true 的代码之后。
ActivityBind activitybind1 = new ActivityBind();
在 InitializeComponent 方法中,创建 webTearActivity 对象的新实例。
this.webTearActivity = new WebTearActivity();
将 webTearActivity 对象的 Name 属性设置为字符串 "webTearActivity"。
this.webTearActivity.Name = "webTearActivity";
将 activityBind1 属性的 Name 属性设置为字符串 "WebTearWorkflow",将 Path 属性设置为字符串 "url"。
activitybind1.Name = "WebTearWorkflow"; activitybind1.Path = "Url";
为由 webTearActivity 对象引发的 PageFinished 事件添加名为 webTearActivity_PageFinished 的事件处理程序。
此事件的委托是 PageFinishedEventHandler 委托。
备注
只有在创建 C# 应用程序时才需要此步骤。 Visual Basic 应用程序的事件处理程序是通过使用步骤 9 中的 Handles 关键字创建的。
this.webTearActivity.PageFinished += new WebTearActivity.PageFinishedEventHandler (this.webTearActivity_PageFinished);
调用在 webTearActivity 类中定义的 SetBinding 方法,并将 UrlProperty 类名和 activityBind1 对象作为参数传递给该方法。
this.webTearActivity.SetBinding(WebTearActivity.UrlProperty, ((ActivityBind)(activitybind1)));
通过调用在 Activities 集合中定义的 Add 方法,将 webTearActivity 对象添加到工作流的 Activities 集合中。
this.Activities.Add(this.webTearActivity);
在 WebTearWorkflow 类中创建一个名为 webTearActivity_PageFinished 的新的私有方法,该方法可接受名为 sender 的 Object 参数和名为 e 的 PageFinishedEventArgs 参数。
在 webTearActivity_PageFinished 方法中,将工作流的 pageData 字段设置为与在 PageFinishedEventArgs 参数中定义的 Data 属性相等。
private void webTearActivity_PageFinished(object sender, PageFinishedEventArgs e) { this.pageData = e.Data; }
编译代码
有关编译代码的信息,请参见编译代码。
在任务 3:修改自定义活动宿主应用程序中,使宿主应用程序在单击按钮时启动工作流。
请参见
任务
其他资源
版权所有 (C) 2007 Microsoft Corporation。保留所有权利。