Windows Workflow Beta2 HOL学习笔记(三):使用IfElse Activity,声明条件和自定义活动

本文内容来自 Microsoft Hands-on Labs for Windows Workflow Foundation Beta 2 中的 HOL01 中的第三个练习,其中包括八个任务:
Ø         创建一个新的工作流项目
Ø         在项目中添加一个费用报表接口
Ø         添加一个费用报表提交活动( ExpenseReportSubmitted Activity
Ø         在工作流中添加预先建立好的自动审核活动( AutoApprove Activity
Ø         在工作流中添加规则条件
Ø         添加一个逻辑来判断审核或者拒绝费用报表
Ø         调试配置费用工作流项目( ExpenseWorkflows
Ø         测试费用报表工作流
 
1 .打开 Microsoft Visual Studio 2005 ,新建一个工作流项目。选择 Empty Workflow Project 模板。
Name:   ExpenseWorkflows
Location:  C:\Windows Workflow Foundation\Labs\Lab01
2 .在菜单中选择 Project | Add Sequential Workflow ,在打开的模板窗口中选择建立一个顺序工作流项,并且是代码和设计分离的 Sequential Workflow (with code seperation) 。就是用它的默认名称 Workflow1.xoml
3 .添加一个费用报表使用的程序集引用 ExpenseLocalServices.dll 。在如下路径找到这个文件:
C:\Windows Workflow Foundation\Labs\Lab01\Resources\ExpenseReporting\bin
4 .在 Workflow1 类中添加两个变量,一个是 reportArgs ,用在报表提交事件参数中,存放报表对象; amount 一个是用来存放提交报表中费用的数量。
5 .右键选择 Workflow1.xoml.cs 文件,在菜单中选择 View Code (查看代码)。添加如下代码:
     public partial class Workflow1 : SequentialWorkflowActivity
     {
        public ExpenseLocalServices.ExpenseReportSubmittedEventArgs reportArgs = default(ExpenseLocalServices.ExpenseReportSubmittedEventArgs);
        public int amount = default(System.Int32);
     }
6 .打开 workflow1.xoml 的设计界面,在 Toolbox 中选择 HandleExternalEvent 活动,拖放到设计视图中。设置 Name 属性为 expenseReportSubmitted1
7 .点击智能标示的红色感叹号,选择其中的 Property ‘InterfaceType’ is not set 标签。设计器会自动转到属性面板上的 InterfaceType 属性,点 […] 按钮将弹出 .NET Type Browser 对话框。在引用组件树中选择 ExpenseLocalServices.IExpenseService
8 .在属性窗口中设置其它的属性如下值:
EventName           ExpenseReportSubmitted
Invoked               ReportSubmitted_Invoked
(Parameter) e              Activity=Workflow1, Path=reports
设置好后属性如下
9 .设置好 Invoked 属性后, VS2005 会自动生成相应的函数并转到代码窗口。在函数中输入如下代码。
        private void ReportSubmitted_Invoked(object sender, ExternalDataEventArgs e)
        {
            Console.WriteLine("ReportSubmitted_Invoked");
 
            this.amount = this.reportArgs.Report.Amount;
        }
10 .下面添加一个预先建立好的自定义活动,用来计算提交的报表是否可以被自动的审核通过或者不通过。 AutoApprove 活动使用 AutoApprovalPolicy 活动可以为我们做这个。
11 .在菜单中选择 Tools | Choose Toolbox Items… 打开添加组件的对话框,选择 .NET Framework Components 选项卡,在如下路径位置找到 ExpenseActivities.dll 文件,然后单击 OK 添加进来。
C:\Windows Workflow Foundation\Labs\Lab01\Resources\ExpenseReporting\bin
这时看到工具栏里面多了两个可以使用的活动 AutoApprove GetManager
12.选择AutoApprove活动拖放到expenseReportSubmitted1下面。
12.选择AutoApprove活动拖放到expenseReportSubmitted1下面。
14 .在 autoApprove1 活动下面添加一个 IfElse 活动,并设置它的 (Name) 属性为 EvaluateExpenseReport
15 .选择左边标签标识为 ifElseBranchActivity1 的活动,设置 (Name) 属性为 IfAutoApproveReport ;设置 Condition 属性,从下拉菜单中选择 Declarative Rule Condition Condition 属性旁边会出现一个加号,展开属性,设置 Condition AutoApproveCondition ,设置 Expression 属性为 autoApprove1.Approved
16 .选择 EvaluateExpenseReport 右边标签为 ifElseBranchActivity2 的活动,设置 (Name) 属性为 ElseRejected
17 .从 Toolbox 工具箱中选择 CallExternalMethod 活动放到 IfAutoApproveReport 中。
       设置 Name 属性为 approveExpenseReport1 。设置 InterfaceType 属性,点击 […] 按钮,在弹出的窗口种选择 ExpenseLocalService.IExpenseService
设置 MethodName 属性为 ApproveExpenseReport
设置 report 属性为 reportArgs.Report
设置好后属性如下:
18 .再添加一个 CallExternalMethod 活动放到 ElseRejected 活动中。
设置 Name 属性为 rejectExpenseReport1
同样设置 InterfaceType 属性为 ExpenseLocalService.IExpenseService
设置 MethodName 属性为 RejectExpenseReport
设置参数 Report 属性为 reportArgs.Report
19.至此工作流设计视图如下:
下面要做的就是配置工作流的运行和调试。
20 .在如下路径找到 ExpenseHost.exe ExpenseHost.exe.config 两个文件。
C:\Windows Workflow Foundation\Labs\Lab01\Resources\ExpenseReporting\bin
将它们拷贝到如下路径:
C:\Windows Workflow Foundation\Labs\Lab01\ExpenseWorkflows\ExpenseWorkflows\bin\Debug
21 .更改 ExpenseWorkflows 工作流项目的启动应用程序。在 Solution Explorer 中右键点击 ExpenseWorkflows 项目,在菜单中选择属性。选择 Debug 选项卡,将 Start Action 设置为 Start External Program ,然后找到刚才拷贝过来的 ExpenseHost.exe 文件。
22 .保存设置,在 Workflow1.xoml 文件的设计视图中,选择 expenseReportSubmitted1 活动并添加一个断点。
最后是测试费用报表工作流:
23 .按 F5 或者在菜单中选择 Debug | Start Debugging 编译运行 ExpenseWorkflows 项目。
24 ExpenseHost 将启动并显示一个控制台窗口。
25 .在如下路径找到 ExpenseApplication.exe 程序,运行。
C:\Windows Workflow Foundation\Labs\Lab01\Resources\ExpenseReporting\bin
26 .点击 Submit Report 按钮,会自动转到刚才添加断点的 expenseReportSubmitted1 地方。
27 .继续运行流程会跳转到 rejectExpenseReport1 活动。
因为只有费用小于 1000 才能被审核通过。所以 Ari Bixhorn 提交的 1500 的费用报表被审核不通过。
点击Refresh Reports按钮查看结果。
Kim Abercrombie提交的费用报表为500,小于1000,所以刷新后被自动审核通过。
参考资料:
Microsoft Hands-on Labs for Windows Workflow Foundation Beta 2
 
这个练习很多不明白的地方,先列在下面,一个一个解决:
HandleExternalEvent Activity
CallExternalMethod Activity
还有其他的配合使用的程序怎么起作用的基本不明白,希望后面的练习能给说明。

本文出自 “努力学习的小熊” 博客,转载请与作者联系!

你可能感兴趣的:(workflow,Activity,笔记,ifelse,HOL)