技术开发 频道

详解Visual Studio顺序型工作流的创建

  之前我们说活动是用于实现商务流程的。有些活动通过调用其它活动来实现流程。比如我们的SayHello活动没有直接向控制台写文字,而是通过调用WriteLine活动来达到目的。我们也可以用C#或VB来继承System.Activities.Activity, 然后向如下代码一样给Implemenantation赋值,来实现同样的SayHello活动:

  public sealed class SayHelloActivity : Activity
  {
  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)

  public sealed class SayHelloInCode : CodeActivity
  {
  
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

 

0
相关文章