WF4.0 入门系列(三) Dynamic Workflows with XAML

来源:互联网 发布:彭博国外海关数据 编辑:程序博客网 时间:2024/04/28 01:53

 

到目前为止,我们已经使用.xaml(拖拽)和.cs代码方式创建过Workflow,这些代码文件会编译成程序集中的类,然后被工作流运行时调用运行。

相对于使用c#创建Workflow,.xaml文件有以下优势:

  • 工作流设计器只能打开xaml文件
  • xaml文件可以被动态加载和运行,而无需编译到程序集中

动态工作流Dynamic Workflow可以帮助我们在运行时决定加载和运行什么业务逻辑。

下面我们创建一个SayHello.xaml,然后在解决方案外对其进行修改,最后领用工作流宿主运行此工作流

1、创建SayHello.xaml

2、通知VS将SayHello.xaml视为一个发布内容而不仅仅是代码。

  2.1 在解决方案中选中SayHello.xaml,右键---》属性

  2.2 将【复制到输出目录】,从“不复制”改为“始终复制”

  2.3 将【生成操作】,从“XamlAppDef”改为“内容

  2.4 将【自定义工具】从“MSBuild:Compile”改为空

3. 在前面我们的Workflow都会编译成一个类class。为了能够让WorkflowInvoker从.xaml文件中引用(invoke)Workflow,我们必须使用ActivityXamlServices来将.xaml加载到内存并创建一个WorkflowInvoker可以引用活动实例。注意,当此Workflow被引用时,所有.xaml文件中引用的程序集都是可以得到的。

  3.1 在Program.cs添加引用:

  using System.Activities.XamlIntegration;

  3.2 修改main方法

    static void Main(string[] args)    {        Activity sayHello = ActivityXamlServices.Load("SayHello.xaml");        WorkflowInvoker.Invoke(sayHello);        Console.ReadKey(false);    }


4. 修改已经发布的SayHello.xaml文件

   4.1 重新生成解决方案,你会发现SayHello.xaml文件被发布到debug文件夹下


  4.2 以文本文件方式打开该文件

  4.3 修改输出的字符串内容为“Hello Workflow 4 XAML”

4.4 运行HelloWorkflow.exe可执行文件

 

5. 最后请将SayHello.xaml文件的属性值以及Program main方法的代码该回到最初状态 ,以便我们进行下一练习。

 

系列文章:

一 Hello Workflow4

二 The CodeActivity

三 Dynamic Workflows with XAML

四 Testing Workflows

五 WorkflowApplication

六 If/Else Logic

 

 

 

 

原创粉丝点击