在 SAP Fiori Elements 应用中,manifest.json 文件是应用的主要配置文件,其中定义了应用的元数据、模型、服务等信息。其中,dataSources 区域负责描述应用使用的数据源,比如 OData 服务或者其他类型的后端服务。在 dataSources 区域的 settings 字段中,我们可以定义 annotations,它们是一种描述 OData 服务元数据的方式,可以增强服务的语义,并且可以驱动 UI 自动生成。
Annotations 是 SAP Fiori Elements 中的一个重要概念。它们提供了一种声明式的方式来定义 UI 的各种特性,包括但不限于字段的显示方式、排序、过滤等。
具体来说,annotations 可以定义:
- 实体类型的一些属性,如标签、文本、提示等。
- 实体类型的行为,如可创建、可更新、可删除等。
- 实体类型的 UI 表现形式,如表格、表单、列表等。
- 实体类型的关系,如导航属性、关联等。
在 dataSources 的 settings 中定义 annotations 的方式大概如下:
"dataSources": { "mainService": { "uri": "/sap/opu/odata/sap/ZDEMO_C_SALESORDERITEM_CDS/", "type": "OData", "settings": { "annotations": ["annotations1", "annotations2"] } }, "annotations1": { "uri": "/sap/opu/odata/IWFND/CATALOGSERVICE;v=2;mo/Annotations(TechnicalName='ZDEMO_ANNO_MDL',Version='0001')/$value", "type": "ODataAnnotation" }, "annotations2": { "uri": "/sap/opu/odata/IWFND/CATALOGSERVICE;v=2;mo/Annotations(TechnicalName='ZDEMO_ANNO_UI',Version='0001')/$value", "type": "ODataAnnotation" } }
在上述示例中,我们定义了两个 annotations,分别叫做 “annotations1” 和 “annotations2”,它们分别对应着两个 ODataAnnotation 类型的数据源,这两个数据源指向的是两个不同的 annotation 文件。这些 annotation 文件被用来描述 “mainService” 数据源(即 OData 服务)的元数据。
例如,我们可以在 annotation 文件中定义一个实体类型的标签,如下所示:
<Annotations Target="ZDEMO_C_SALESORDERITEM_CDS.SalesOrderItem"> <Annotation Term="com.sap.vocabularies.Common.v1.Label" String="Sales Order Item"/> </Annotations>
这段代码定义了 SalesOrderItem 实体类型的标签为 “Sales Order Item”。在 Fiori Elements 应用的 UI 中,这个标签将被用作实体类型的显示名称。
通过这种方式,我们可以通过 annotations 定义出复杂的业务逻辑和用户界面,而无需编写大量的前端代码。这大大提高了开发效率,降低了开发难度,使得开发者可以将更多的精力放在业务逻辑的实现上,而不是 UI 的编写上。