您的位置:首页 > 其它

Windows Workflow RC HOL学习笔记(四):使用Listen,Delay和event-based自定义Activities

2007-05-08 11:24 489 查看
本文内容来自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
[align=left] public string ReportEmployeeId = default(System.String);[/align]
[align=left] public string ManagerEmployeeId = default(System.String);[/align]
[align=left] public ExpenseLocalServices.ExpenseReportReviewedEventArgs reviewArgs = [/align]
[align=left] default(ExpenseLocalServices.ExpenseReportReviewedEventArgs);[/align]
3.在Visual Studio 2005中,打开Workflow1.xoml文件的设计视图。
4.右键单击rejectExpenseReport1活动,选择删除,删除这个Activity。
5.选择EvaluateExpenseReport这个IfElse活动右边的分支(显示为ElseRejected),在属性窗口中修改Name属性为ElseManagerApproval。
6.添加一个GetManager活动在ElseManagerApproval中。



7.在属性窗口中设置以下属性:
ManagerEmployeeId――点击省略号按钮绑定刚才声明的变量ManagerEmployeeId。
ReportEmployeeId――点击省略号按钮绑定刚才声明的变量ReportEmployeeId。



8.修改ReportSubmitted_Invoked方法的代码,将ReportEmployeeId的值设置为Expense Report’s EmployeeId属性。
[align=left] private void ReportSubmitted_Invoked(object sender, ExternalDataEventArgs e)[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("ReportSubmitted_Invoked");[/align]
[align=left] [/align]
[align=left] this.amount = this.reportArgs.Report.Amount;[/align]
[align=left] [/align]
[align=left] this.ReportEmployeeId = this.reportArgs.Report.EmployeeId;[/align]
[align=left] }[/align]
9.打开Workflow1.xoml设计视图。在getManager1活动下添加CallExternalMethod活动。
10.设置CallExternalMethodName属性为requestManagerApproval1。
11.选择InterfaceType属性,设置为ExpenseLocalServices.IExpenseService。



12.选择MethodName属性,从下拉菜单中选择设置为RequestManagerApproval。
13.然后,属性窗口中的可设置属性会增加,设置以下属性:
ManagerEmployeeId――设置属性值为ManagerEmployeeId。
Report――设置属性值为reportArgs.Report。
14.设置后EvaluateExpenseReport为如下样子:



任务一完成。
15.在requestManagerApproval1下添加一个Listen活动。
16.在属性窗口中设置原来的属性Name值listenActivity1修改为ListenForManagerApproval。
修改eventDrivenActivity1部分的Name属性为ManagerReviewed。
修改eventDrivenActivity2部分的Name属性为ReviewTimeout。
17.在ManagerReviewed部分添加一个HandleExternalEvent活动。
18.设置HandleExternalEventName属性为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。设置后按下回车键会自动创建相应的事件并跳转到代码窗口。编写如下代码:
[align=left] private void IfReportApproved_Condition(object sender, ConditionalEventArgs e)[/align]
[align=left] {[/align]
[align=left] e.Result = this.reviewArgs.Review.Approved;[/align]
[align=left] }[/align]
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。
28.至此,这个Expense Reporting Workflow工作流完成。



任务三完成。
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本文出自 “努力学习的小熊” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐