之前我们说活动是用于实现商务流程的。有些活动通过调用其它活动来实现流程。比如我们的SayHello活动没有直接向控制台写文字,而是通过调用WriteLine活动来达到目的。我们也可以用C#或VB来继承System.Activities.Activity, 然后向如下代码一样给Implemenantation赋值,来实现同样的SayHello活动:
{
WriteLine writeLine = new WriteLine() { Text = "Hello Workflow 4" };
public SayHelloActivity()
{
Implementation = () => { return writeLine; };
}
}
Visual Basic
Public NotInheritable Class SayHelloActivity
Inherits Activity
Private writeLine As New WriteLine With {.Text = "Hello Workflow 4"}
Public Sub New()
Implementation = Function()
Return writeLine
End Function
End Sub
End Class
如果你的工作流逻辑可以通过调用其它活动来实现,以上的方式是适用的。但有些时候你需要你的活动自己来实现商务逻辑,或者调用不是活动的类来做些工作。要达到这样的目的,你需要继承另一个类System.Activities.CodeActivity,然后重写Execute方法。
步骤0—打开解决方案
1. 从Start | All Programs | Microsoft Visual Studio 2010 启动Microsoft Visual Studio 2010
2. 打开位于%TrainingKitInstallFolder%\Labs\ IntroToWF\Ex3-CodeActivity\Begin里的初始方案,作为本练习的开始。
3. 按CTRL+SHIFT+B编译整个方案
步骤 1 – 编写SayHelloInCode活动
在这一步,你将通过代码形式来写这个活动,而且直接用Console.WriteLine将文字写到控制台。
1. 右键点击HelloWorkflow项目,选择Add / New Item。从Workflow模板中选择Code Activity,然后将它命名为SayHelloInCode.
2. 把Text属性从模板里删除—你现在不需要它。
3. CodeActivity是一个抽象类。所以在你继承它之后,必须要重写Execute方法。这将是你实现活动功能的地方。把缺省的实现这个类的代码用下面的代码替换掉。
(代码段 - Introduction to WF4 Lab - SayHelloInCode Class CSharp)
{
protected override void Execute(CodeActivityContext context)
{
Console.WriteLine("Hello Workflow 4 in code");
}
}
(Code Snippet - Introduction to WF4 Lab - SayHelloInCode Class VB)
Visual Basic
Public NotInheritable Class SayHelloInCode
Inherits CodeActivity
Protected Overrides Sub Execute(ByVal context As CodeActivityContext)
Cosole.WriteLine("Hello Workflow 4 in code")
End Sub
End Class