- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《WF本质论02》.pdf
部 析 WF 17
对象的列表,那些语句将会一个接一个、有顺序地执行。我们发现,ProgramStatementBlock和
C# 的语句块只有一个区别,那就是ProgramStatementBlock使用了书签,而C#没有。这意味着
它业已成为可恢复的语句块,同时拥有了线程以及进程灵活性。
虚构运行时所执行的程序实际上就是一个ProgramStatement对象。这意味着现在可以开始
构建如下所示的“Open, Sesame ”了 :
对,就是这样!虚构运行时中的“Open, Sesame ”程序现在已经成为一组有层次结构的语
句组件了。这个层次结构就是一个由适当的语句组件列表所配置好的ProgramStatementBlock
对象。
1.3.1 复合语句组件
ProgramStatementBlock是一个用于可恢复程序控制流的通用语句组件。像C#这样的编程语
言还包括其他的控制流构造(比如if, switch, for, while和foreach ),对于编写一个比“Open,
Sesame ”复杂的程序,这些都是必不可少的。
让我们来看看用其他的控制流结构来实现可恢复语句组件的情况,领略一下这是多么简单。
第一步,我们可以快速地为复合语句组件 (Composite Program Statements )(包含其他语句组
件的语句组件)建立一个基类:
基类建立之后,我们将ProgramStatementBlock改为派生自CompositeProgramStatement 类
表达式和属性(property )的数据绑定不是本章的议题。
18 第1 章
CompositeProgramStatement 类是从ProgramStatement 类继承下来的,它定义了一个
IListProgramStatement类型的属性(property ),用来存放复合语句所包含的语句集。集合中语
句的执行都是由CompositeProgramStatement管理的。
现在,我们可以轻松地编写类似的控制流结构了。以下是提供了分支结构的复合语句组件
(我们假设已经存在了BooleanExpression类的定义,这个类有个返回Boolean值的Evaluate成员
方法):
下面是另一个复合语句组件类,这个类提供了循环结构:
部 析 WF 19
看吧,只要这样做,我们就拥有了能够用于构造可恢复程序的可恢复分支和循环构造了。
1.3.2 控制流的健壮性
我们的ProgramStatementBlock和其他一些复合语句组件确实可以工作了,但这一切似乎来
得太快了些,以至于丧失了一些实现初衷。
为了让ProgramStatementBlock工作得正确无误,我们需要保证它所包含的语句组件按照既
定的顺序执行。坦白地说,ProgramStatementBlock 中的代码没有任何错误。但是,怎样来阻止
ProgramStatementBlock 以外的代码去调用Read (包含在ProgramStatementBlock 内)的Run方法
呢?又如何去阻止Read (或者其他任何包含在ProgramStatementBlock 内的语句对象)在发出已
完成的信号后继续执行呢?
我们需要如下保证:
• 一个程序语句组件只能由包含它的(父)复合语句组件(包含在CompositeProgram-
Statement.Statements集合中)执行。
• 在发出已完成的信号后,程序语句组件不能再做任何工作(不能有挂起的书签)。另一种
表述这些需求的途径是用先前介绍过的自动机来描述交互式语句组件的生命周期:
• 只有语句组件的父亲才能将它从Latent状态迁移到Running状态。
• 语句组件的父亲需要知道它是何时从Running状态迁移到Done状态的。
• 在语句组件迁移到Done状态后,不能再做任何工作(不能有挂起的书签)。
您可能关注的文档
- 《InterfaceLift 高清壁纸 2016(7月合集)》.pptx
- 《InterfaceLift 高清壁纸 2016(8月合集)》.pptx
- 《InterfaceLift 高清壁纸 2016(9月合集)》.pptx
- 《InterfaceLIFT.高清壁纸03》.pptx
- 《InterfaceLIFT.高清壁纸04》.pptx
- 《InterfaceLIFT.高清壁纸05》.pptx
- 《InterfaceLIFT.高清壁纸06》.pptx
- 《InterfaceLIFT.高清壁纸07》.pptx
- 《InterfaceLIFT.高清壁纸08》.pptx
- 《InterfaceLIFT.高清壁纸09》.pptx
- 2026广东省科学技术厅招录选调生3人备考题库及完整答案详解1套.docx
- 2026年西安银行校园招聘备考题库含答案详解(能力提升).docx
- 2026浦发银行秋季校园招聘备考题库附答案详解(a卷).docx
- 2026年度中国建设银行河南省分行校园招聘970人备考题库含答案详解(培优b卷).docx
- 2026年度秋季中国工商银行青海省分行校园招聘230人备考题库附答案详解(研优卷).docx
- 2026年浦发银行长沙分行秋季校园招聘备考题库及答案详解(基础+提升).docx
- 2026广西壮族自治区公安机关人民警察特殊职位招录考试195人备考题库完整答案详解.docx
- 2026广东省科学技术厅招录选调生3人备考题库及答案详解(名师系列).docx
- 2026年成都银行秋季校园招聘备考题库(120人)含答案详解(基础题).docx
- 2026广州银行校园招聘备考题库含答案详解(b卷).docx
最近下载
- 中国铁矿选矿新技术和新工艺.ppt VIP
- 2025年中国全自动振荡仪行业市场全景评估及投资前景展望报告.docx
- AI可信数据空间白皮书-.pptx VIP
- 票管员的年度总结.pptx VIP
- 5篇中心医院医德医风谈话谈心记录(系列完整版).pdf
- T_ZZXJX 18-2021 现浇混凝土空心楼盖结构工程施工及验收技术规程.docx VIP
- 全国大学生职业规划大赛《医学美容技术》专业生涯发展展示PPT【高职(专科)】 .pptx
- 21 小圣施威降大圣 课件(共34张PPT).ppt VIP
- 新时代教育强国的根本遵循知到智慧树期末考试答案题库2025年喀什大学.docx VIP
- 混凝土冬季施工质量控制培训课件.pptx VIP
原创力文档


文档评论(0)