您的位置:首页 > 其它

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

2007-05-08 11:24 537 查看
本文内容来自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。

6.添加一个GetManager活动在ElseManagerApproval中。



7.在属性窗口中设置以下属性:

ManagerEmployeeId——点击省略号按钮绑定刚才声明的变量ManagerEmployeeId。

ReportEmployeeId——点击省略号按钮绑定刚才声明的变量ReportEmployeeId。



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.设置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。设置后按下回车键会自动创建相应的事件并跳转到代码窗口。编写如下代码:

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。

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐