
# 内置模型的属性类型修改为参考对象后有什么影响？
#### 背景信息
为了提高系统的整体质量和兼容性，工业数字模型驱动引擎-数据建模引擎（xDM Foundation，简称xDM-F）对现有内置模型进行了以下优化：
- 外键属性处理：将当前系统中的一些外键属性（如TenantId）由简单的数值型字段改为引用对象的形式，以增强代码的可读性和维护性，并减少数据一致性问题。
- 修复历史错误：修正早期不当的编码习惯导致的部分属性未遵循最佳实践的问题，这些问题可能影响系统的稳定性和扩展性。
 
#### 解决方案
2.25.060版本对内置模型的部分属性进行标准化改造，将其由原有类型修改为"参考对象"或"文本"类型，以提升使用灵活性与准确性。具体修改内容如下：
 表1涉及修改的内置模型及属性 
| （修改前）原属性英文名称            | （修改后）新属性英文名称       | 参考对象/文本类型说明                                                  | 内置模型英文名称                              | 内置模型中文名称    | 表名称                                           |
|:---|:---|:---|:---|:---|:---|
| SourceTenantId          | sourceTenant       | 属性类型修改为参考对象类型，目标数据模型选择为Tenant                                | RelationLayOut                        | 关系分组布局模型    | XDM_RELATIONLAYOUT                            |
| SourceTenantId          | sourceTenant       | 属性类型修改为参考对象类型，目标数据模型选择为Tenant                                | AttributeLayOut                       | 属性布局模型      | XDM_ATTRIBUTELAYOUT                           |
| String ViewModelId      | ViewModel          | 属性类型修改为参考对象类型，目标数据模型选择为TypeDefinition                        | ViewModelConfig                       | 视图模型配置的版本对象 | XDM_ViewModelConfig                           |
| Long registryManifestId | registryManifest   | 属性类型修改为参考对象类型，目标数据模型选择为dataSyncRegistryManifest              | DataSyncHistoryRecord                 | 数据同步历史表     | XDM_DataSyncHistory                           |
| Long instanceId         | instance           | 属性类型修改为参考对象类型，目标数据模型选择为BasicObject                           | DataSyncHistoryRecord                 | 数据同步历史表     | XDM_DataSyncHistory                           |
| Long resourceId         | resource           | 属性类型修改为参考对象类型，目标数据模型选择为typedefinition                        | DataSyncRegistryManifest              | 数据同步注册清单表   | XDM_DataSyncRegistryManifest                  |
| Long registryId         | registry           | 属性类型修改为参考对象类型，目标数据模型选择为dataSyncRegistry                      | DataSyncRegistryManifest              | 数据同步注册清单表   | XDM_DataSyncRegistryManifest                  |
| Long tenantId           | subscriptionTenant | 属性类型修改为参考对象类型，目标数据模型选择为Tenant                                | DataSyncRegistry                      | 数据同步注册表     | XDM_DataSyncRegistry                          |
| Long ReferenceId        | -                  | 属性类型修改为文本类型                                                  | EXADefinition                         | 扩展属性定义      | XDM_EXADEFINITION                             |
| String searchServId     | searchServ         | 属性类型修改为参考对象类型，目标数据模型选择为XDMSearchServDefine                   | XDMSearchRelationIndexEntity          | 搜索服务关系索引实体  | XDM_XDMSearchRelationIndexEntity              |
| Long CompareResultId    | CompareResult      | 属性类型修改为参考对象类型，目标数据模型选择为XDMCompareResult                      | XDMComparePair                        | 比对结果数据组     | XDM_XDMComparePair                            |
| Long DataId             | -                  | 属性类型修改为文本类型                                                  | XDMLogicDeleteData                    | 软删除数据       | XDMLogicDeleteData                            |
| String searchServId     | searchServ         | 属性类型修改为参考对象类型，目标数据模型选择为XDMSearchServDefine                   | XDMSearchIndexEntity                  | 搜索服务索引实体    | XDM_XDMSearchIndexEntity                      |
| String typeDefinitionId | typeDefinition     | 属性类型修改为参考对象类型，目标数据模型选择为typeDefinition                        | XDMPermissionAttribute                | 权限属性        | XDM_XDMPermissionAttribute                    |
| Long EntityId           | Entity             | 属性类型修改为参考对象类型，目标数据模型选择为BasicObject                           | XDMAspect                             | 特征点         | XDM_XDMSys_XDMAspect                          |
| Long controlledObjectId | controlledObject   | 属性类型修改为参考对象类型，目标数据模型选择为AccessControlled                      | XDMPermission                         | 权限          | XDM_XDMPermission                             |
| dataEntityId            | dataEntity         | 属性类型修改为参考对象类型，目标数据模型选择为typeDefinition                        | XDMPermission                         | 权限          | XDM_XDMPermission                             |
| String versionId        | version            | 属性类型修改为参考对象类型，目标数据模型选择为TypeDefinition                        | SynchronizationTaskContent            | 同步内容        | XDM_SynchronizationTaskContent                |
| long controlledObjectId | controlledObject   | 属性类型修改为参考对象类型，目标数据模型选择为AccessControlled                      | XDMPolicy                             | 策略          | XDM_XDMPolicy                                 |
| dataEntityId            | dataEntity         | 属性类型修改为参考对象类型，目标数据模型选择为typeDefinition                        | XDMPolicy                             | 策略          | XDM_XDMPolicy                                 |
| Long targetId           | target             | 属性类型修改为参考对象类型，目标数据模型选择为Principal                             | XDMPrincipalRelationOperationHistory  | 参与者关系操作历史   | XDM_XDMPrincipalRelationOperationHistory      |
| Long inheritId          | inherit            | 属性类型修改为参考对象类型，目标数据模型选择为EXADefinitionLinkAndXDMRuleEngineLink | EXADefinitionLinkAndXDMRuleEngineLink | 模型扩展属性与规则关系 | XDM_EXADefinitionLinkAndXDMRuleEngineLink_REL |
| Long inheritId          | inherit            | 属性类型修改为参考对象类型，目标数据模型选择为EXADefinitionLink                     | EXADefinitionLink                     | 属性值与属性库关系表  | XDM_EXADefinitionLink_REL                     |
| Long preVersionId       | -                  | 属性类型修改为文本类型                                                  | Versionable                           | 版本服务        | -                                             |
   
由于内置模型的调整，其所生成的原子接口也同步进行了修改（即：由代码生成的原子接口）。您可在应用运行态的"数据服务管理 \> 全量数据服务"中查看相关变更内容。
对于使用2.25.060版本之前的用户，由于属性类型的变更，数据库中存储字段的结构也发生了变化（1列变3列），因此您需要根据[表1]中的属性名称，定位到对应的参数字段，并将其修改为适配后的格式。
#### 示例代码
在2.25.040版本期间，您的应用代码中使用了"RelationLayOut"内置模型的"SourceTenantId"属性。其入参格式如下：
```
{
    "params": {
        "SourceTenantId": 1L
    }
}
```
自2.25.060版本起，部分属性类型已调整为"参考对象"或"文本"类型属性（如SourceTenant）。此变更将影响代码逻辑，需要重新部署应用以确保兼容性。重新部署应用后，请参考上述示例，手动修改原有代码以适配新的属性类型。
```
{
    "params": {
        "SourceTenantId": {
            "id":"1",
            "class":"Tenant"
        }
    }
}
```
对于已购买SDK服务的用户，如果在代码中使用了[表1 涉及修改的内置模型及属性]中的内置模型和属性，则可能需要进行相应的适配，以保证代码的兼容性。即：之前作为数值类型或文本类型的属性现在已经修改为参考对象类型属性。
例如，在2.25.040版本中，用户可能会将"SourceTenantId"直接赋值给一个自定义属性"userId"。例如：
```
Long userId = SourceTenantId
```
而在2.25.060版本及以后，由于"SourceTenantId"已被修改为"参考对象"类型属性"SourceTenant"，用户需要调整代码，以便正确地获取"SourceTenantId"。即：
```
Long userId = SourceTenant.getId()
```
这样可以确保代码在新版本中依然能够正常运行。
