Windows Workflow Foundation之旅(五)——指南3(创建自定义活动)
2005-12-20 09:50
579 查看
Windows Workflow Foundation之旅(五)——指南3(创建自定义活动)
翻译自: ms-help://MS.WinWF.v1.EN/WinWF_GettingStarted/html/8b6344bc-c879-41c5-babf-74e91c34d281.htm
WWF包含了一组丰富的通用用户活动,这些能满足绝大多数的场景的需求。但有时,我们还是会碰到需要一些更加自定义的活动的场景。WWF SDK拥有一些可扩展的特性,能使你轻松的创建自定义的活动,并把他们应用到你的解决方案中。在这一节中,我们会编写一个自定义活动,用来根据传入工作流的参数,从网页中下载文本。
创建一个网页解析自定义活动
这个自定义活动会根据传入活动的网页属性集,从网页中下载文本。页面一旦下载完毕,活动就会发出一个网页下载完毕的事件,并把网页数据值发回工作流。
创建WebTearActivity类
WebTear类继承自System.Workflow.ComponentModel.Activity类。当你定义了一个自定义活动时,把ToolboxItemAttributes属性应用到类上,并指明为ActivityboxItem类型。以下的代码就是一个最小的自定义活动。
using System;
using System.ComponentModel;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Workflow.ComponentModel.Compiler;
namespace Microsoft.Samples.Workflow.Quickstarts.CustomActivity
public static DependencyProperty WebPageProperty =
DependencyProperty.Register("WebPage", typeof(System.String), typeof (Microsoft.Samples.Workflow.Quickstarts.CustomActivity.WebTear ) );
[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]
[ValidationVisibilityAttribute(ValidationVisibility.Optional)]
[BrowsableAttribute(true)]
[DescriptionAttribute("Web page to download")]
[CategoryAttribute("WebTear Property")]
public string WebPage
public class PageFinishedEventArgs
public delegate void PageFinishedEventHandler( object sender, PageFinishedEventArgs e );
public event PageFinishedEventHandler PageFinished;
protected override Status Execute(ActivityExecutionContext context)
using System;
using System.ComponentModel;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Workflow.ComponentModel.Compiler;
using System.Workflow.Activities;
namespace Microsoft.Samples.Workflow.Quickstarts.CustomActivity
……
namespace Microsoft.Samples.Workflow.Quickstarts.CustomActivity
{
public class MainForm : Form
{
private System.Windows.Forms.Label addressCaption;
private System.Windows.Forms.TextBox address;
private System.Windows.Forms.TextBox data;
private System.Windows.Forms.Button goButton;
private WorkflowRuntime workflowRuntime;
public MainForm()
{
InitializeComponent();
workflowRuntime = new WorkflowRuntime();
workflowRuntime.StartRuntime();
workflowRuntime.WorkflowCompleted += new EventHandler<WorkflowCompletedEventArgs>(workflowRuntime_WorkflowCompleted);
}
void workflowRuntime_WorkflowCompleted(object sender, WorkflowCompletedEventArgs e)
{
// Retrieve the downloaded page data
if (data.InvokeRequired)
data.Invoke(new EventHandler<WorkflowCompletedEventArgs>(workflowRuntime_WorkflowCompleted), sender, e);
else
data.Text = e.OutputParameters["PageData"].ToString();
}
private void goButton_Click(object sender, EventArgs e)
{
Type type = typeof(Microsoft.Samples.Workflow.Quickstarts.CustomActivity.WebTearActivityWorkflow);
// Sending the data to the workflow.
// First create the required property set
Dictionary<string, object> properties = new Dictionary<string, object>();
properties.Add("WebPage", address.Text);
properties.Add("PageData", "");
workflowRuntime.StartWorkflow(type, properties);
}
……
}
}
翻译自: ms-help://MS.WinWF.v1.EN/WinWF_GettingStarted/html/8b6344bc-c879-41c5-babf-74e91c34d281.htm
WWF包含了一组丰富的通用用户活动,这些能满足绝大多数的场景的需求。但有时,我们还是会碰到需要一些更加自定义的活动的场景。WWF SDK拥有一些可扩展的特性,能使你轻松的创建自定义的活动,并把他们应用到你的解决方案中。在这一节中,我们会编写一个自定义活动,用来根据传入工作流的参数,从网页中下载文本。
创建一个网页解析自定义活动
这个自定义活动会根据传入活动的网页属性集,从网页中下载文本。页面一旦下载完毕,活动就会发出一个网页下载完毕的事件,并把网页数据值发回工作流。
创建WebTearActivity类
WebTear类继承自System.Workflow.ComponentModel.Activity类。当你定义了一个自定义活动时,把ToolboxItemAttributes属性应用到类上,并指明为ActivityboxItem类型。以下的代码就是一个最小的自定义活动。
using System;
using System.ComponentModel;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Workflow.ComponentModel.Compiler;
namespace Microsoft.Samples.Workflow.Quickstarts.CustomActivity
public static DependencyProperty WebPageProperty =
DependencyProperty.Register("WebPage", typeof(System.String), typeof (Microsoft.Samples.Workflow.Quickstarts.CustomActivity.WebTear ) );
[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]
[ValidationVisibilityAttribute(ValidationVisibility.Optional)]
[BrowsableAttribute(true)]
[DescriptionAttribute("Web page to download")]
[CategoryAttribute("WebTear Property")]
public string WebPage
public class PageFinishedEventArgs
public delegate void PageFinishedEventHandler( object sender, PageFinishedEventArgs e );
public event PageFinishedEventHandler PageFinished;
protected override Status Execute(ActivityExecutionContext context)
using System;
using System.ComponentModel;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Workflow.ComponentModel.Compiler;
using System.Workflow.Activities;
namespace Microsoft.Samples.Workflow.Quickstarts.CustomActivity
……
namespace Microsoft.Samples.Workflow.Quickstarts.CustomActivity
{
public class MainForm : Form
{
private System.Windows.Forms.Label addressCaption;
private System.Windows.Forms.TextBox address;
private System.Windows.Forms.TextBox data;
private System.Windows.Forms.Button goButton;
private WorkflowRuntime workflowRuntime;
public MainForm()
{
InitializeComponent();
workflowRuntime = new WorkflowRuntime();
workflowRuntime.StartRuntime();
workflowRuntime.WorkflowCompleted += new EventHandler<WorkflowCompletedEventArgs>(workflowRuntime_WorkflowCompleted);
}
void workflowRuntime_WorkflowCompleted(object sender, WorkflowCompletedEventArgs e)
{
// Retrieve the downloaded page data
if (data.InvokeRequired)
data.Invoke(new EventHandler<WorkflowCompletedEventArgs>(workflowRuntime_WorkflowCompleted), sender, e);
else
data.Text = e.OutputParameters["PageData"].ToString();
}
private void goButton_Click(object sender, EventArgs e)
{
Type type = typeof(Microsoft.Samples.Workflow.Quickstarts.CustomActivity.WebTearActivityWorkflow);
// Sending the data to the workflow.
// First create the required property set
Dictionary<string, object> properties = new Dictionary<string, object>();
properties.Add("WebPage", address.Text);
properties.Add("PageData", "");
workflowRuntime.StartWorkflow(type, properties);
}
……
}
}
相关文章推荐
- [转帖]Windows Workflow Foundation之旅(五)——指南3(创建自定义活动)
- Windows Workflow Foundation之旅(五)——指南3(创建自定义活动)
- Windows Workflow Foundation之旅(五)——指南3(创建自定义活动)
- Windows Workflow Foundation(四)——(创建自定义活动)(转载)
- Windows Workflow Foundation(四)——(创建自定义活动)
- Windows Workflow Foundation:创建自定义复合活动 转自MSDN
- [转贴]Windows workflow foundation之旅(三)——指南2(创建状态机工作流)(上)
- Windows Workflow Foundation之旅(二)——指南1(创建顺序工作流)
- [转贴]Windows workflow foundation之旅(四)——指南2(创建状态机工作流)(下)
- Windows Workflow Foundation之旅(二)——指南1(创建顺序工作流)
- Windows workflow foundation之旅(四)——指南2(创建状态机工作流)(下)
- Windows workflow foundation之旅(三)——指南2(创建状态机工作流)(上)
- [转帖]Windows Workflow Foundation之旅(二)——指南1(创建顺序工作流)
- Windows workflow foundation之旅(四)——指南2(创建状态机工作流)(下)
- 我的Windows Workflow Foundation 之旅---(6)开发活动
- 跟我一起学Windows Workflow Foundation(3)-----使用If/Else活动,定制活动处理工作流,使用事件传递数据
- 跟我一起学Windows Workflow Foundation(3)-----使用If/Else活动,定制活动处理工作流,使用事件传递数据
- 转:Windows Workflow Foundation:创建自定义复合活动
- Windows Workflow Foundation(5)- 活动和Workflow类型
- 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例