什么是 CDS view 的注解 @Metadata.allowExtensionstrue

发布时间 2023-09-14 10:01:18作者: JerryWang_汪子熙

什么是 CDS view 的注解 @Metadata.allowExtensions:true

这个注解允许我们使用 metadata extension(缩写为 MDE) view 来给 comsumption view 定义注解。

MDE 力求实现的是所谓关注点分离(separation of concerns) 的理念,即数据模型和 metadata extension view 各司其职,前者专注于根据业务定义字段,后者则只定义 domain specific 的语义对象,比如用于 Fiori Elements 框架中的和 UI 相关的注解。

Metadata Extension View 在 SAP CDS Views 中的重要作用

在SAP中,CDS(Core Data Services)是一种用于定义和管理数据模型的强大工具。CDS Views是这个领域的一个关键概念,用于描述数据模型的不同方面,包括其结构、行为和语义。在CDS Views中,Metadata Extension View(以下简称MDE View)具有重要作用,可以帮助实现关注点分离(Separation of Concerns)的理念,提高数据模型的可维护性和可扩展性。

  1. 关注点分离的重要性:

    关注点分离是软件工程中的一项基本原则,旨在将不同方面的关注点分开处理,以便更容易管理和维护系统。在CDS Views中,数据模型的关注点通常包括业务数据定义和与UI相关的注解。MDE View的主要作用之一是将这两个关注点分离开来,实现以下好处:

    • 代码清晰度提高: 将数据模型和UI相关注解分开存放,使每个部分的代码更加清晰和易于理解。开发人员可以专注于特定方面的工作,不会被不相关的代码干扰。

    • 可维护性增强: 当需要修改数据模型时,不必触及UI注解,反之亦然。这降低了错误的风险,简化了维护流程,因为更改一个部分不会对另一个部分造成不必要的影响。

    • 协作更容易: 不同团队或开发者可以专注于其关注的领域,而不会干扰其他团队的工作。这种分离也有助于多人协作开发项目,提高开发效率。

  2. MDE View的角色和示例:

    MDE View在实现关注点分离时扮演了关键角色。它的主要任务是定义与UI相关的注解,这些注解通常用于Fiori Elements框架中。以下是MDE View的示例,演示了其在CDS Views中的作用:

    @Metadata.allowExtensions:true
    define view MyBusinessData as select from BusinessEntity {
      key ID,
      Name,
      Description
    } {
      // 数据模型定义
    }
    

    在上述示例中,MyBusinessData是一个CDS View,用于定义业务数据模型。该视图包含了业务实体的字段,如ID、Name和Description。注意到了@Metadata.allowExtensions:true注解,它指示该视图允许使用MDE View来扩展其注解。

    接下来,我们可以创建一个MDE View,专门用于定义与UI相关的注解,例如Fiori Elements的注解:

    extend view MyBusinessData with MDE_Extensions {
      // 与UI相关的注解定义
      @UI: {
        LineItem: [
          { Value: ID, Label: 'ID' },
          { Value: Name, Label: 'Name' }
        ],
        SelectionFields: [ ID ],
        PresentationVariant: [
          {
            Visualizations: [{ Type: #AS_TABLE }],
            RequestedKey: [ ID ],
            SortOrder: [
              { Value: ID, Descending: false }
            ]
          }
        ]
      }
    }
    

    在这个示例中,extend view语句用于将MDE View与业务数据模型视图MyBusinessData关联起来。MDE View中包含了与UI相关的注解,例如表格的列定义、选择字段和呈现变体。这些注解是针对UI层面的定义,与数据模型本身无关。

  3. 重要作用总结:

    • 维护性和可扩展性: MDE View允许将数据模型与UI注解分开管理,提高了系统的可维护性。当需要修改UI方面的内容时,只需编辑MDE View,而无需修改数据模型,反之亦然。

    • 代码清晰度: 关注点分离使代码更加清晰和可读。开发人员可以更容易地理解和修改特定部分,而不会被其他方面的代码干扰。

    • 协作和团队分工: 不同团队或开发者可以专注于其关注的领域,不会相互干扰。这有助于提高协作效率和开发速度。

    • UI定制: MDE View使得针对不同UI需求的定制变得更加灵活。可以为不同的UI组件创建不同的MDE View,以满足不同的需求,而不必更改底层数据模型。

    总而言之,Metadata Extension View在SAP CDS Views中的作用是实现关注点分离,提高数据模型的可维护性和可扩展性,同时促进团队协作和UI定制。这是SAP开发中的一个重要概念,有助于构建灵活、可维护和可扩展的企业应用程序。