列長のカスタマイズ
モデル化された属性の列長をカスタマイズできます。列長は wt.introspection パッケージから取得されます。このプロパティの値は、モデル化されたパッケージのカスタマイズプロパティファイルにエントリを追加することによってオーバーライドできます。モデル化された属性の列長を変更するには、以下の手順を実行します。
1. この属性のカスタマイズプロパティを特定します。
2. 該当するカスタマイズプロパティファイルで属性の長さをオーバーライドします。
3. クラス情報オブジェクトを生成します。
4. カスタマイズを確認します。
5. データベーステーブルを変更します。
6. メソッドサーバーが実行中の場合は再起動します。
以下の例では、wt.doc.WTDocumentMaster クラスの name 属性の列長を 350 文字に設定します。以下の手順では、新規列長が格納されるカスタマイズプロパティファイルエントリの特定方法とその値の設定方法について説明します。カスタマイズは、最初にモデル化された属性に対応する場所で実行されます。ツールプロパティの wt.generation.custom.dir エントリで定義されているように、カスタマイズのデフォルトの場所は $(wt.home)\wtCustom です。このディレクトリが存在しない場合は作成します。
|
Windchill の開発環境の「tools.properties ファイル」と「user.properties ファイル」の説明を参照してください。
|
1. 追加する必要があるカスタマイズプロパティエントリを特定します。
a. Windchill シェルから以下のコマンドを実行して、クラスの info レポートを取得します。
infoReport wt.doc.WTDocumentMaster
info レポートファイルが <Windchill>/temp 内に作成され、このクラスでは doc.WTDocumentMaster.out という名前が付きます。
b. name の PropertyDescriptor の WTIntrospector.UPPER_LIMIT プロパティの値 (カスタマイズする値) を調べます。
getValue( WTIntrospector.UPPER_LIMIT ) : 60
c. name の PropertyDescriptor の WTIntrospector.DEFINED_AS プロパティの値を調べます。
getValue( WTIntrospector.DEFINED_AS ) : wt.doc.WTDocumentMaster.name
d. この情報に基づいて、以下の値を使用します。
▪ カスタマイズプロパティファイルは <Windchill>\wtCustom\wt\doc\docModel.properties です。
▪ カスタマイズプロパティエントリは WTDocumentMaster.name.UpperLimit です。
2. 適切なカスタマイズプロパティファイルにカスタマイズプロパティエントリを追加します。この例では、以下のエントリを <Windchill>\wtCustom\wt\doc\docModel.properties に追加します (このファイルが存在しない場合は作成します):
WTDocumentMaster.name.UpperLimit=350
# Ignore multi-byte database character sets when setting value.
# UpperLimit is constrained by database VARCHAR limit : max value is
4000/wt.db.maxBytesPerChar
3. クラスの info オブジェクトを生成します。次のコマンドを Windchill シェルから入力することで、シリアライズされた info オブジェクトを更新します。
ant -f bin\tools.xml custom_column -Dgen.input=wt.doc
これにより、具象子孫クラスのイントロスペクション情報 ( wt.doc.WTDocumentMaster では wt.federation.ProxyDocumentMaster など) が更新されます。
4. カスタマイズを確認します。クラスの info レポートを取得し、前の手順の説明に従って UPPER_LIMIT の値を調べます。この値は、カスタマイズを反映しています。info レポート値が変化していない場合は、生成手順で以下のシリアライズされた情報ファイルが実際に更新されたことを確認します。
<Windchill>\codebase\wt\doc\WTDocumentMaster.ClassInfo.ser
5. 次のステップを実行することで、カスタマイズした列の長さを調整します。
a. Windchill Upgrade Manager を実行して、「スキーマを比較」ステップのみを実行します。
Windchill シェル内で UpgradeManager -cs と入力して Windchill Upgrade Manager を開始します。
b. 以下に生成された出力を検査して、このカスタマイズに関連する SQL スクリプトを見つけます。
<Windchill>\Upgrade\UpgradeReports\CompareSchema\CompareSchema-<タイムスタンプ>.html#AlteredTables - section 'Tables to be Altered'
子孫クラスに対応するテーブルも変更する必要があります (PROXYDOCUMENTMASTER など)。
|
出力をよく調べて、結果が予想どおりかどうかを確認します。よくわからない SQL や目的のカスタマイズに関係のない SQL は決して実行しないでください。
|
c. Windchill データベーススキーマのオーナーとして、関連する SQL スクリプトを実行します。
この例では、WTDocumentMaster.name は派生属性 WTDocument.name の派生元でもあります。この派生属性 WTDocument.name は、派生元の属性 WTDocumentMaster.name からその UpperLimit を取得します。派生属性は、アノテーションの UpperLimit プロパティを設定できません。したがって、派生属性は、この方法ではカスタマイズできません。