本文内容来自Microsoft Hands-on Labs for Windows Workflow Foundation RC中的HOL01中的第四个练习,其中包括四个任务:
Ø         给管理者批准的请求添加一个活动
Ø         在费用报表(Expense Report)的Review添加一个监听(Listen)活动
Ø         批准(Approve)或拒绝(Reject)费用报表
Ø         测试费用报销工作流
<?XML:NAMESPACE PREFIX = O />
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.在属性窗口中设置原来的属性NamelistenActivity1修改为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属性,设置它的子属性ConditionIfReportApproved_Condition。设置后按下回车键会自动创建相应的事件并跳转到代码窗口。编写如下代码:
        private void IfReportApproved_Condition(object sender, ConditionalEventArgs e)
        {
            e.Result = this.reviewArgs.Review.Approved;
        }
24.打开Workflow1.xoml的设计视图,选择名为EvaluateReviewIfElse活动的右边的分支,设置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

转载于:https://blog.51cto.com/bearstudyhard/299595

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

  1. Windows Workflow RC HOL学习笔记(六):创建一个基本的活动

    本文内容来自Microsoft Hands-on Labs for Windows Workflow Foundation RC中的HOL02中的第二个练习,其中包括六个任务: 使用Activity ...

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

    本文内容来自Microsoft Hands-on Labs for Windows Workflow Foundation Beta 2中的HOL01中的第三个练习,其中包括八个任务: Ø       ...

  3. Windows Workflow HOL学习笔记(十二):创建状态基工作流

    W indows Workflow HOL学习笔记(十二):创建状态基工作流 本文内容来自Microsoft Hands-on Labs for Windows Workflow Foundation ...

  4. Windows进程与线程学习笔记(四)—— 等待链表调度链表

    Windows进程与线程学习笔记(四)-- 等待链表&调度链表 要点回顾 33个链表 等待链表 实验:分析等待链表中的线程所属的进程 第一步:查看所属线程结构体: 第二步:查看所属进程结构体 ...

  5. [转]Windows平台下Makefile学习笔记

    Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译 ...

  6. Windows进程与线程学习笔记(一)—— 进程结构体

    Windows进程与线程学习笔记(一)-- 进程结构体 进程结构体 EPROCESS +0x000 Pcb : _KPROCESS +0x1b0 Peb : Ptr32 _PEB 练习 解题步骤 第一 ...

  7. STM32F103学习笔记四 时钟系统

    STM32F103学习笔记四 时钟系统 本文简述了自己学习时钟系统的一些框架,参照风水月 1. 单片机中时钟系统的理解 1.1 概述 时钟是单片机的脉搏,是单片机的驱动源 用任何一个外设都必须打开相应 ...

  8. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  9. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  10. RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决)

    RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) 参考文章: (1)RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) (2)https://www.cnblogs. ...

最新文章

  1. 深度学习运行python文件,出现跨路径搜索其他module,怎么解决?
  2. 传感器的“脖子”卡在哪儿?
  3. 一步步学习SPD2010--第十一章节--处理母版页(7)--管理Content Placeholders
  4. JPA 中文乱码问题
  5. js如何同时打开多个信息窗口 高德地图_高德地图显示单个窗体和显示多个窗体的方法...
  6. 【牛客网】安置路灯 C++
  7. linux测试磁盘io脚本,脚本分享:Linux下磁盘io测试
  8. 关于WinForm控件在asp.net中应用的问题。
  9. 数据湖探索DLI新功能:基于openLooKeng的交互式分析
  10. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - MMX技术(3) - 组合的算术指令
  11. Ajax调用springboot接口,Springboot解决ajax+自定义headers的跨域请求问题.pdf
  12. 【转】SqlLite .Net 4.0 System.IO.FileLoadException”类型的未经处理的异常出现在XXX
  13. VMware 分布式交换机
  14. riot修改服务器,如何修改riot拳头账号所在地区 riot账号改地区教程
  15. c语言中 241错误式什么意思,Qt error: stray '\241' in program
  16. “一线城市,年薪30万+,我却裸辞回老家”一个寒门贵子的10年职业思考
  17. html div图片定位,css将div定位到图片上的固定位置
  18. 1分钟学会网站采集方法详解
  19. SocialBoo出海指南 || 海外网红营销深度报告
  20. linux/init.h 中__init

热门文章

  1. 开源的胜利:意大利法院判定开源协议条款可强制执行
  2. OpenJDK8编码代码三合一:x86/Arm/Mips
  3. C中define的#和##
  4. 引用原话,不等于原意
  5. 解决办法:C代码中明明有,为什么编译时提示未定义的引用
  6. 明明管理失败,跟距离远有什么关系?
  7. python中tab的用法_详解Python中expandtabs()方法的使用
  8. bat脚本 rar压缩屏蔽某文件夹 不压缩某文件夹
  9. python连接pymysql主机目标无响应_Python 解析pymysql模块操作数据库的方法
  10. java动态bean_Java如何操作对象(bean)进行动态排序?