Evolvable 类
本章将介绍 Evolvable 类。
实现 Evolvable 接口的可外部化类是指可序列化为数据库中 BLOB 列的 Windchill 类。当这些类的持久化结构发生更改时,可能需要执行操作以保持与已序列化到数据库中的先前版本的兼容性。
对于计划支持序列化到 BLOB 数据库列的任何模型化的类,都必须实现 Evolvable 接口。实现 Evolvable 后,类的所有者必须管理其各个版本之间的兼容性。
持续数据服务 (PDS) 将报告序列化到实现 NetFactor 接口而非 Evolvable 接口的数据库中的任何类。这样便可允许将 Vectors、Hashtables 等第三方类序列化到数据库中。这还允许将未实现 NetFactor 的模型化类序列化为数据库;但是,不建议这样做,因为会导致类产生严重的数据迁移问题。
模型化的类实现 Evolvable 接口的最佳方法是将类的 Serializable 特性设置为 Evolvable。
持续数据服务(PDS)将限制对不具有 serialVersionUID 的 PTC 类的序列化对象进行持久化存储。如果此类对象存储在数据库中,则 PDS 将抛出 wt.pds.NotEvolvableException。为避免此异常,serialVersionUID 被添加到所有 PTC 的可序列化类和可外部化的类。
通过将 wt.properties 文件中的 wt.pds.customNonEvolvableClassAction 特性设置为 exception,可限制客户将非 PTC 类的序列化对象进行持久化存储。此特性的默认值为 none。此特性可具有以下可能值:nonewarningtracebackexception
背景信息
生成的外部化代码将按以下顺序读取继而写入数据流,每个类的字段值按字母顺序排序:
1. BottomClass.ID
2. MiddleClass.ID
3. TopClass.ID
4. TopClass field value1
5. TopClass field value2
6. TopClass field value...N
7. MiddleClass field value1
8. MiddleClass field value2
9. MiddleClass field value...N
10. BottomClass field value1
11. BottomClass field value2
12. BottomClass field value...N
要保持类在不同版本之间的外部化兼容性,最重要的是了解每个类版本将生成的流布局。当类的持续签名发生重大更改时,为清楚了解读取流的先前版本所需内容,映射每个版本的流格式可能会有帮助。
除了对流格式的基本了解外,以下章节中的各个点针对维护兼容性需要何时以及何种人工干预提供了相关指南。
这对您有帮助吗?