【IT168 技术文档】正如你已经看到的, Windows工作流允许你使用代码创建自定义活动。根据不同的需求,你可以使用几种不同的类。

1.打开解决方案
你需要根据以下步骤:
(1)开启Microsoft Visual Studio 2010。
(2)在%TrainingKitInstallFolder%\Labs\ IntroToWF\Ex9-ActivityDesigner\Begin目录下打开解决方案。
(3)按CTRL+SHIFT+B来编译解决方案。
2.创建自定义的NativeActivity
在这个练习中,我们会创建一个简单的自定义活动,它具有Pre/Post processing的能力。
(1)按CTRL+SHIFT+B来编译解决方案。
(2)右击HelloWorkflow解决方案文件并选择Add / New Project…
(3)选择Workflow模板并点击Activity Library. 输入项目名HelloWorkflow.Activities

加一个叫做HelloWorkflow.Activities的新Activity Library项目
(4)删除 Activity1.xaml,因为这次练习中将不需要它。
(5)右击HelloWorkflow.Activities 并选择Add / NewItem (Ctrl+Shift+A)
(6)从Workflow模板中选择Code Activity并将它取名为PrePostSequence

添加一个名为PrePostSequence的新Code Activity
(7)PrePostSequence类将作为其它活动的容器。我们需要对模板提供的代码做一些修改。删除这个类的内容,用以下代码替代。
(代码段- Introduction to WF4 Lab – PrePostSequence Class CSharp)
{
public Activity Pre { get; set; }
public Activity Post { get; set; }
public List Activities { get; set; }
public PrePostSequence()
{
Activities = new List();
}
protected override void Execute(NativeActivityContext context)
{
// Schedule the activities in order
context.ScheduleActivity(Pre);
Activities.ForEach((a) => { context.ScheduleActivity(a); });
context.ScheduleActivity(Post);
}
}
(代码段- Introduction to WF4 Lab – PrePostSequence Class VB)
Visual Basic
Public NotInheritable Class PrePostSequence
Inherits NativeActivity
Public Property Pre As Activity
Public Property Post As Activity
Public Property Activities As List(Of Activity) = New List(Of Activity)
Protected Overrides Sub Execute(ByVal context
As System.Activities.NativeActivityContext)
context.ScheduleActivity(Pre)
For Each Activity In Activities
context.ScheduleActivity(Activity)
Next
context.ScheduleActivity(Post)
End Sub
End Class
(8)按CTRL+SHIFT+B编译解决方案