発展クラス
この章では、発展クラスについて説明します。
進化可能なインタフェースを実装する外部化可能なクラスは、シリアル化してデータベースの BLOB 列に保存できる Windchill クラスです。これらのクラスの永続性の構造が変化したとき、シリアル化してデータベースに保存されている前のバージョンとの互換性を保持するための処理が要求されます。
シリアル化して BLOB データベースの列に保存するようにモデル化されたクラスは、進化可能なインタフェースを実装する必要があります。進化可能なインタフェースが実装されたとき、クラスのオーナーはバージョン間の互換性を管理する必要があります。
永続性データサービス (PDS) は、シリアル化してデータベースに保存しているクラスのうち進化可能なインタフェースではなく、NetFactor インタフェースを実装しているクラスを報告します。このサービスによってベクトルおよびハッシュテーブルなどのサードパーティークラスをシリアル化してデータベースに保存できます。また、このサービスによって NetFactor を実装していないモデル化されたクラスをシリアル化してデータベースに保存できます。ただし、クラスでデータマイグレートに関わる重大な問題が発生する可能性があるため、この方法は使用しないでください。
モデル化されたクラスが進化可能なインタフェースを実装するように指定する最も適切な方法は、クラスの「シリアル化可能」プロパティを「発展」に設定することです。
永続データサービス (PDS) は、serialVersionUID を持たない PTC クラスのシリアル化された永続オブジェクトを制限します。そのようなオブジェクトがデータベースに保存されている場合、PDS では wt.pds.NotEvolvableException が発生します。この例外を回避するために、PTC のすべてのシリアル化可能クラスと外部化可能クラスに serialVersionUID が追加されます。
wt.properties ファイル内の wt.pds.customNonEvolvableClassAction プロパティを exception に設定することで、PTC 以外のクラスのシリアル化されたオブジェクトを永続化しないように制限できます。このプロパティのデフォルト値は none です。このプロパティには、none、warning、traceback、および exception の値を指定できます。
背景情報
生成された外部化コードはデータの読み取りおよび書き込みを以下の順序で行い、各クラスのフィールド値はアルファベット順に並べられます。
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
バージョン間でクラスの外部化互換性を維持するには、クラスの各バージョンが生成されるストリームレイアウトを理解することが非常に重要です。クラスの永続化署名に大きな変更を行う場合、ストリームの前のバージョンを読み取るには何が必要かを明確に理解するために、各バージョンのストリームフォーマットを図示すると便利です。
ストリームのフォーマットについての基本的な理解のほかに、以下のセクションでは互換性を維持するためにどのような手動の操作をいつ行うかについてのガイドラインを示します。