本文内容来自
Microsoft Hands-on Labs for Windows Workflow Foundation RC
中的
HOL01
中的第四个练习,其中包括四个任务:
Ø
给管理者批准的请求添加一个活动
Ø
在费用报表(
Expense Report
)的
Review
添加一个监听(
Listen
)活动
Ø
批准(
Approve
)或拒绝(
Reject
)费用报表
Ø
测试费用报销工作流
1
.在上一个应用程序中右键单击
workflow1.xoml.cs
文件并查看代码。
2
.在
Workflow1
类的开始添加三个声明
ReportEmployeeId
、ManagerEmployeeId
、reviewArgs
public string ReportEmployeeId = default(System.String);
public string ManagerEmployeeId = default(System.String);
public ExpenseLocalServices.ExpenseReportReviewedEventArgs reviewArgs =
default(ExpenseLocalServices.ExpenseReportReviewedEventArgs);
3
.在
Visual Studio 2005
中,打开
Workflow1.xoml
文件的设计视图。
4
.右键单击
rejectExpenseReport1
活动,选择删除,删除这个
Activity
。
5
.选择
EvaluateExpenseReport
这个
IfElse
活动右边的分支(显示为
ElseRejected
),在属性窗口中修改
Name
属性为
ElseManagerApproval
。
7
.在属性窗口中设置以下属性:
ManagerEmployeeId
——点击省略号按钮绑定刚才声明的变量
ManagerEmployeeId
。
8
.修改
ReportSubmitted_Invoked
方法的代码,将
ReportEmployeeId
的值设置为
Expense Report’s EmployeeId
属性。
private void ReportSubmitted_Invoked(object sender, ExternalDataEventArgs e)
{
Console.WriteLine("ReportSubmitted_Invoked");
this.amount = this.reportArgs.Report.Amount;
this.ReportEmployeeId = this.reportArgs.Report.EmployeeId;
}
9
.打开
Workflow1.xoml
设计视图。在
getManager1
活动下添加
CallExternalMethod
活动。
10
.设置
CallExternalMethod
的
Name
属性为
requestManagerApproval1
。
12
.选择
MethodName
属性,从下拉菜单中选择设置为
RequestManagerApproval
。
13
.然后,属性窗口中的可设置属性会增加,设置以下属性:
ManagerEmployeeId
——设置属性值为
ManagerEmployeeId
。
Report
——设置属性值为
reportArgs.Report
。
任务一完成。
15
.在
requestManagerApproval1
下添加一个
Listen
活动。
16
.在属性窗口中设置原来的属性
Name
值
listenActivity1
修改为
ListenForManagerApproval
。
修改
eventDrivenActivity1
部分的
Name
属性为
ManagerReviewed
。
修改
eventDrivenActivity2
部分的
Name
属性为
ReviewTimeout
。
17
.在
ManagerReviewed
部分添加一个
HandleExternalEvent
活动。
18
.设置
HandleExternalEvent
的
Name
属性为
expenseReportReviewed1
。
19
.在属性窗口中设置
expenseReportReviewed1
的其他属性:
InterfaceType
——
ExpenseLocalServices.IExpenseService
EventName
——
ExpenseReportReviewed
e
——
reviewArgs
20
.在
ReviewTimeout
分之部分上拖放一个
Delay
活动。设置
TimeoutDuration
属性为
00:00:30
。
任务二完成。
21
.在
expenseReportReviewed1
活动下再添加一个
IfElse
活动。设置
Name
属性为
EvaluateReview
。
22
.选择这个
IfElse
活动的左边分支,设置以下属性:
Name
——
IfApproved
Condition
——从下拉菜单中选择
CodeCondition
(代码条件)
23
.展开
Condition
属性,设置它的子属性
Condition
为
IfReportApproved_Condition
。设置后按下回车键会自动创建相应的事件并跳转到代码窗口。编写如下代码:
private void IfReportApproved_Condition(object sender, ConditionalEventArgs e)
{
e.Result = this.reviewArgs.Review.Approved;
}
24
.打开
Workflow1.xoml
的设计视图,选择名为
EvaluateReview
的
IfElse
活动的右边的分支,设置
Name
属性为
ElseDeclined
。
25
.在
IfApproved
分支下添加一个
CallExternalMethod
活动。设置
Name
属性为
approveExpenseReport2
。设置其他属性如下:
InterfaceType
——
ExpenseLocalServices.IExpenseService
MethodName
——
ApproveExpenseReport
report
——
reportArgs.Report
26
.在
ElseDeclined
分支添加一个
CallExternalMethod
活动。并设置相关属性:
Name
——
rejectExpenseReport1
InterfaceType
——
ExpenseLocalServices.IExpenseService
MethodName
——
RejectExpenseReport
report
——
reportArgs.Report
27
.
Copy
一个
rejectExpenseReport1
活动,粘贴在右边
delayActivity1
活动的下面,并设置
Name
属性为
rejectExpenseReport2
。
任务三完成。
29
.下面来验证一下这个应用是否正确。
30
.在菜单中选择“项目——
ExpenseWorkflows
属性”,然后再打开的窗口中选择
Debug
选项卡。找到“启动外部程序”,设置为
C:\Windows Workflow Foundation\Labs\Lab01\ExpenseWorkflows\ExpenseWorkflows\bin\Debug\ExpenseHost.exe
31
.打开
Workflow1.xoml
设计视图,在
expenseReportSubmitted1
活动上添加一个断点。按
F5
启动调试。
32
.
ExpenseHost
将启动。
33
.在如下路径找到并运行
ExpenseApplication.exe
C:\Windows Workflow Foundation\Labs\Lab01\Resources\ExpenseReporting\bin
34
.在如下路径找到并运行
ManagerApplication.exe
C:\Windows Workflow Foundation\Labs\Lab01\Resources\ExpenseReporting\bin
35
.使用
Expense Application
,点击
Submit Report
按钮创建一个新的报销单并提交到工作流。一个新的工作流实例将启动,
Visual Studio 2005
在调试模式下将进入到
expenseReportSubmitted1
断点。
36
.按下
F5
继续执行。会有
30
秒的延迟。
37
.删除所有断点,现在你可以创建多个需要审批的报销单。
38
.使用
Manager application
,点击刷新,刷新出多个报销单的状态。选择其中一个,点击批准按钮。
39
.最后,使用
Expense Reporting application
,点击刷新按钮来查看变化。如果提交的报销单超过
30
秒,它会被自动
rejected
(拒绝)掉。
任务四完成。
参考资料:
Microsoft Hands-on Labs for Windows Workflow Foundation RC