当更改类别为不可恢复的资源(如 Windows® 2000 上的串行文件)时,您的工作相对持久;无论是代码还是 EGL 运行时服务都不能简单地废除那些更改。当更改类别为可恢复的资源(如关系数据库)时,代码或 EGL 运行时服务可以落实更改来使工作持久,也可以回滚更改以返回到上次落实更改时有效的内容。
可恢复的资源如下所示:
- 关系数据库
- 配置为可恢复的 CICS® 队列和文件
- MQSeries® 消息队列(除非 MQSeries 记录另有指定),如 MQSeries 支持中所述
逻辑工作单元用来标识成组落实或回滚的输入操作。当代码更改可恢复的资源时,工作单元开始;当发生第一个下列事件时,工作单元结束:
- 代码调用系统函数 sysLib.commit 或sysLib.rollback 来落实或回滚更改
- EGL 运行时服务执行回滚以响应代码中没有处理的硬错误;在这种情况下,会从内存中除去运行单元中的所有程序
- 发生隐式落实,隐式落实在下列情况下发生:
- 程序发出 show 语句。
- 运行单元中的顶级程序成功地结束,如运行单元中所述。
- 显示一个 Web 页面,这在 PageHandler 发出 forward 语句时发生。
- 程序发出 converse 语句,并且存在下列任何一种情况:
- 未处于 VisualAge® Generator 兼容性方式,并且程序是分段程序
- ConverseVar.commitOnConverse 设置为 1
- 处于 VisualAge Generator
兼容方式,并且 ConverseVar.segmentedMode 设置为 1