SAP Fiori Elements 应用 metadata.xml 解析成的 JSON 对象

发布时间 2023-07-29 18:18:34作者: JerryWang_汪子熙

在这个文件设置断点:

		AnnotationParser._parserData.metadataProperties = AnnotationParser.getAllPropertiesMetadata(AnnotationParser._parserData.serviceMetadata);
		if (AnnotationParser._parserData.metadataProperties.extensions) {
			mappingList.propertyExtensions = AnnotationParser._parserData.metadataProperties.extensions;
		}

检查 service metadata:

metadata 文件里有个 reference:

这个 reference 被解析后,出现在 JSON 对象的此处:

metadata 里维护的以 sap 开头的属性:

被解析成 entityType 下的 extensions:

xmlDocument:

sap:labelsap:content-version 是 SAPUI5 对 OData 元数据的扩展,也就是 property extension。它们的前缀 "sap" 是 XML 命名空间的一部分,表示这些扩展属性是由 SAP 定义的。

sap:label 属性定义了该实体类型的显示标签,这个标签通常在用户界面上作为字段或者列的标题显示。例如,如果 sap:label 的值是 "Currency",那么在用户界面上,这个实体类型可能会被显示为 "Currency"。如果没有设置 sap:label,系统将使用 Name 属性的值作为默认标签。

sap:content-version 属性用来标记元数据的版本,这对于版本控制和追踪元数据的变化非常重要。例如,如果你更改了实体类型的结构或属性,可以通过增加 sap:content-version 的值来表示元数据已经更改。SAP 系统可以使用这个版本信息来决定是否需要重新加载元数据或者进行其他的处理。

除了这些,SAP 还定义了许多其他的元数据扩展,例如 sap:creatablesap:updatablesap:deletable 等,用来表示这个实体类型是否可以被创建、更新或删除。

这些扩展属性提供了更丰富的元数据信息,使得 SAP Fiori Elements 可以根据元数据自动生成更符合业务需求的用户界面。例如,如果一个实体类型设置了 sap:creatable 为 "false",那么 SAP Fiori Elements 生成的用户界面将不会包含创建这种实体类型的功能。

通过这种方式,SAP Fiori Elements 能够大大减少手动编写用户界面代码的工作量,提高开发效率。同时,由于用户界面是根据元数据自动生成的,因此也能够保证用户界面和后端数据模型的一致性。

这就是 SAP Fiori Elements 中的元数据和 property extension 的基本含义和用途。虽然 SAP 提供了很多内置的元数据扩展,但在实际应用中,开发者也可以根据需要自定义新的元数据扩展,以满足特定的业务需求。