定制活动-机器人学导论第三版课后习题答案
27.4 定制活动
本章前面的示例仅使用了内置活动,而工作流还允许编写定制活动,接着就可以像内置活动那样使用定制活动。本章的前面提到,有两大类活动:单一活动和复合活动。本节将创建这两类活动。活动由拥有它的工作流(或父活动)安排执行。接着要执行什么操作主要取决于活动的编写者。例如对于WriteLine活动,在该活动的代码中一般会调用Console.WriteLine。编写活动时,一般会重写Execute方法,以便提供定制代码。这个方法随活动的基类而变化。
这些基类及其执行方法如表27-1所示:
| 基类 | 执行方法 |
|----------------------------|----------------------------------------------------|
| AsyncCodeActivity | IAsyncResult BeginExecute(AsyncCodeActivityContext, AsyncCallback, object) void EndExecute(AsyncCodeActivityContext, IAsyncResult) |
| CodeActivity | void Execute (CodeActivityContext) |
| NativeActivity | void Execute (NativeActivityContext) |
| AsyncCodeActivity
| CodeActivity
| NativeActivity
简单的基类是CodeActivity,CodeActivity还有一个泛型版本,该版本接受一个类型变元——用作执行该活动时的返回值。工作流可以返回变元,同样,活动在执行后也可以返回一个值,这个数据可以在工作流中绑定,这样,一个活动的输出就可以变成下一个活动的输入。假定要在工作流中使用当前时间,就可以创建一个返回DateTime值的活动,该活动执行时通过调用DateTime.Now获得这个时间信息。
只要创建一个定制活动即可,而无需把一个字符串输出到控制台上。下面的示例说明了创建定制活动的过程。
试一试:编写定制活动
(1) 在Visual Studio 2010中,创建一个新的“工作流控制台应用程序”(Workflow Console Application)项目。如果你还不知道如何进行Visual Studio的背景定制,可以参考这篇《Visual Studio背景定制插件》。如果需要对代码进行注释,那么《Visual Studio代码自动注释插件C#JS类方法注释》将会对你大有裨益。