- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《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
最近下载
- 电子电路与系统基础II(李国林)X006 12 第六讲习题课 电容电感性质习题课.pdf VIP
- 电动三轮车培训.pptx VIP
- 电子电路与系统基础II(李国林)S012 理论课第12讲 阻抗匹配网络.pdf VIP
- 工程伦理案例分析.docx VIP
- 统编版(2024)七年级历史上册第6课《战国时期的社会变革》课件.pptx VIP
- 电子电路与系统基础II(李国林)S005 09 第五讲理论课 向量法.pdf VIP
- 宜家 吸顶灯 RANARP 勒纳普 吊灯 003.909.52 安装指南.pdf
- 电子电路与系统基础II(李国林)S002 03 第二次理论课 运放应用.pdf VIP
- 工程伦理学习心得体会.docx VIP
- 工程伦理学学习心得.docx VIP
文档评论(0)