高级自定义 > 服务和基础结构自定义 > 自定义模型化元素 > 自定义列长度
  
自定义列长度
可自定义模型化属性的列长度。这些列的长度是通过 wt.introspection 包获得的。通过将条目放置在模块化包的自定义特性文件中,可以覆盖此特性的值。要更改模型化属性的列长度,请执行以下步骤:
1. 确定属性的自定义特性
2. 在适当的自定义特性文件中覆盖属性长度
3. 生成类信息对象
4. 验证自定义。
5. 修改数据库表
6. 如果方法服务器在过程中正在运行,请对其进行重新启动。
以下示例将 wt.doc.WTDocumentMaster 类的名称属性的列长度设置为容纳 350 个字符。以下步骤将介绍如何确定哪些自定义特性文件条目包含新的列长度,以及如何设置该值。自定义在与最初模型化属性平行的位置执行。这些自定义的默认位置为 $(wt.home)\wtCustom,如工具特性中的 wt.generation.custom.dir 条目所定义。如果此目录尚不存在,请对其进行创建。
* 
请参阅 Windchill 开发环境中的“tools.properties 文件”和“user.properties 文件”说明。
1. 确定必须添加哪个自定义特性条目:
a. 通过从 Windchill Shell 执行以下命令获取该类的信息报告:
infoReport wt.doc.WTDocumentMaster
信息报告文件是在 <Windchill>\temp 中创建的,并会针对此类命名为 doc.WTDocumentMaster.out
b. 检查名称 PropertyDescriptor 的 WTIntrospector.UPPER_LIMIT 特性的值 (正在自定义的值)
getValue( WTIntrospector.UPPER_LIMIT ) : 60
c. 检查名称为 PropertyDescriptorWTIntrospector.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. 生成类信息对象。通过从 Windchill Shell 输入以下命令来更新序列化的信息对象:
ant -f bin\tools.xml custom_column -Dgen.input=wt.doc
这将更新具体后代类的自省信息,例如在  wt.doc.WTDocumentMaster 的情况下为 wt.federation.ProxyDocumentMaster
4. 验证自定义。 获取有关类的信息报告,并按照先前步骤中的说明检查 UPPER_LIMIT 值。该值应反映自定义。如果信息报告的值不变,请确认生成步骤实际上更新了以下序列化的信息文件:
<Windchill>\codebase\wt\doc\WTDocumentMaster.ClassInfo.ser
5. 通过执行以下步骤来调整自定义列的长度:
a. 执行 Windchill 升级管理器以仅运行比较架构步骤。
Windchill Shell 中启动 Windchill 升级管理器,如下所示:UpgradeManager -cs
有关详细信息,请参阅 Additional Upgrade Manager CommandsUpgrade Database Schema
b. 检查生成的输出,以在以下位置找到与此自定义相关的 SQL 脚本:
<Windchill>\Upgrade\UpgradeReports\CompareSchema\CompareSchema-<timestamp>.html#AlteredTables - section 'Tables to be Altered'
与子代类对应的表格也必须修改 (例如 PROXYDOCUMENTMASTER)。
* 
仔细审阅输出,以确保结果符合您的预期。您不应执行任何您不理解的 SQL,或者似乎与您预期的自定义无关的 SQL;
c. Windchill 数据库架构所有者的身份执行相关的 SQL 脚本。
在此示例中,WTDocumentMaster.name 还是衍生属性 WTDocument.name 的源。此衍生属性 WTDocument.name 从源属性 WTDocumentMaster.name 获取其 UpperLimit。衍生属性无法在注释中设置 UpperLimit 特性。因此,不能以此方式自定义衍生属性。