当前位置:文档之家› 创建一个新的带有自定义活动的基于XAML的工作流应用程序

创建一个新的带有自定义活动的基于XAML的工作流应用程序

创建一个新的带有自定义活动的基于XAML的工作流应用程序
1.在已经下载的本章源代码中打开XmlnsDefFlow目录中的解决方案。

2.添加一个新的名称为Workflow1.xml的文件。

但是你不需要更改该文件的编译器设置或者对它进行重新命名。

3.在Workflow1.xml文件中添加下面的XML内容,然后进行保存:
4.在解决方案资源管理器中把该文件的扩展名从.xml改为.xoml,然后忽略弹出的警告信息,最后保存该文件。

工作流现在就完成了,但注意要在XML标记中引用PrintMessageActivity,它是你需要去创建的一个新的自定义活动。

为此,在解决方案资源管理器中添加一个新项目,从Workflow项目类型中选择“工作流程活动库”,在项目的名称中输入XmlnsDefLib。

5.Visual Studio会创建一个名称为Activity1的工作流活动。

在解决方案资源管理器中把Activity1.cs文件的名称重命名为PrintMessageActivity.cs。

6.在代码编辑视图中打开该活动的源文件准备进行编辑。

7.该活动当前派生于SequenceActivity。

现需要修改该活动派生的基类为Activity。

该类定义应如下所示:
publicpartialclassPrintMessageActivity:Activity
8.在构造器的下面添加如下这些代码:
9.现在添加XmlnsDefinition特性。

就在命名空间声明的前面,插入这些代码:
备注:假如你正在一个大应用程序中使用该活动,或者要分发给客户或者其它外部用户使用,可以使用包含你公司名称的命名空间URI、产品组、项目或者其它典型的唯一的值来避免命名空间的歧义。

当使用XML工作时,这通常被认为是最佳实践。

10.编译XmlnsDefLib项目以便生成一个能被工作流编译器引用的DLL。

11.尽管我们将执行的是一个基于XAML的工作流,但工作流运行时仍然需要去访问你刚刚创建的PrintMessage活动。

因此,需要为XmlnsDefFlow项目添加对XmlnsDefLib的项目级引用。

12.和前面的示例应用程序一样,打开一个命令提示符窗口。

13.在命令提示符中输入cd WorkflowChapter16XmlnsDefFlowXmlnsDefFlow,然后按下Enter回车键来改变当前的工作目录。

Workflow1.xoml文件现在就可在该目录下直接进行访问。

14.在目录提示符中输入"C:Program FilesMicrosoft SDKsWindowsv6.0ABinWfc.exe" workflow1.xoml /r:..XmlnsDefLibbinDebugXmlnsDefLib.dll,然后按下Enter回车键。

和前
面一样,如果你把Windows SDK安装到了其它地方,你需要使用你所安装的目录去执行wfc.exe,并且,假如你以Release的方式来编译XmlnsDefLib项目的话,你也需要使用Release来替换Debug。

15.工作流编译器执行时应该不会出现错误。

它会在和Workflow1.xoml的相同目录下生成一个动态链接库workflow1.dll。

你现在需要在你的主应用程序中引用该库,因为它包含了你在第三步创建的XML文件中所定义的工作流。

16.随着工作流的完成,我们要回到主应用程序中。

在解决方案资源管理器中选中Program.cx文件,假如它没有打开的话需要打开它。

查看该文件,找到下面这行代码:
17.在你刚刚找到的代码下添加如下这些代码:
18.编译本解决方案,纠正任何出现的编译错误。

19.按下Ctrl+F5或者F5执行该应用程序。

你将看到如下的这些输出结果。

备注:即使我们这里创建了四个应用程序,我也没有完全清楚地说明声明式工作流定义方面的所有相关内容。

假如你对这些感兴趣的话,你可在MSDN上找到大量的论文:/msdnmag/issues/06/01/windowsworkflowfoundation/。

相关主题