Winworkflowfoundation4.0之使用工作流库
任何类型的应用程序都可以使用工作六库。但这里我们简便起见,创建一个工作台应用程序,命名为WorkflowLibraryClient。建好之后,需要添加的引用除了CheckInventoryWorkflowLib.dll和AutoLot.dll,还包括WF4.0主库System.Activitives.dll,可以在VisualStudio 2010中AddReference对话框的.NET选项卡中找到它。
然后,用下面的逻辑更新Program.cs文件:
Using System;
Using System.Lingq;
Ssing System.Activities;
Using System.Collections.Generic;
Using checkinventoryworkflowlib;
Namespace workflowlibraryclient
{
Class program
{
Staitic void main(sring[]args)
{
Console.writeline(“****inventory look up****”);
//换取用户偏好
Console.write(“entercolor:”);
String color=console.readline();
Console.write(“enter make:”)
String make=console.readline();
//包装工作流程要用的数据
Dictionary<string,object>wfargs=new dictionary<string,object>()
{
{“requestedcolor”.color},
{“requestedmake”,make}
};
Try
{
//向工作流发送数据
Workflowinvoker.invoke(new checkinventory(),wfargs);
}
Catch(exception ex)
{
Console.writeline(ex.message);
}
}
}
}
与其它示例一样,我们使用workflowinvoker以同步的方式调用工作流。尽管这一切看上去都不错,但我们如何获取工作流的返回值呢?记住,当工作流终止的时候,我们应该得到格式化的响应。
Winworkflowfoundation4.0在流程图中连接活动
Start图标表示该流程图活动的入口点,在本例中它是使我们防止的整个工作流程中的第一个活动,并且将在使用workflowinvoker或workflowapplication类执行工作流时被触发。你可以将整个图标拖动到设计器中的任何位置,我建议将它移动到左上角,以便流出更多的空间。
我们的额目标是通过连接多个活动将他们组装在一起,通常在流程中要用到flowdecision活动。我们将writeline活动拖拽到设计器中,将DISpalyname改为greetuser。现在,如果你将鼠标悬停在Srart图标上,会发现四个方向上都出现了一条黎阿姐先,这意味着工作流执行的第一个活动是greetuser。