• SAP Fiori Elements 公开课第三单元学习笔记


    课程地址

    很多 SAP 从业者反映,open SAP 上的视频,因为网络原因无法访问,所以我会陆续在我的个人微 信 号“汪子熙”上面,把这些视频配上中文字幕并发布出来,敬请关注。

    本单元的话题是 SAP OData 和注解的深入讲解。

    下面是本单元视频讲解的中文字幕,均由 Jerry 人工翻译而成。

    ====

    欢迎大家来到 Open SAP Fiori Elements 公开课第三单元。本单元介绍 OData 和注解

    我是 Stefan Engelhardt, 是 SAP Fiori Elements 的开发架构师

    在第二单元,Marcel 已经简单介绍了 OData. 每个 Fiori Elements 应用都需要一个 OData 服务

    Fiori Elements 对 OData 服务的后台技术栈没有特殊要求,因为 OData 协议本身就是对后台实现细节的抽象

    现在我们将深入介绍 OData 服务的核心概念。从数据模型的元描述开始

    每个 OData 服务都有其数据模型的元描述信息。屏幕右边是一个例子

    我们通常简称为 OData 元数据。在 OData url 后面加上 $metadata 即可查看其元数据

    屏幕左边底部的超链接是 该 OData 元数据的完整 url

    元数据定义了业务模型及其属性

    下图右边是一个 OData V4 的例子,定义了一个 Person 模型

    包含用户名,FirstName 等字段

    元数据中属性也具有进一步的定义

    这些进一步的定义包含属性的数据类型,比如 Edm.String, 是否允许存储 null 值,字段最大长度等

    描述实体与其他实体关系的字段被称为导航字段

    模型的导航字段指明了模型和其导航目标模型的基数关系,即"一对一"还是"一对多"

    例如屏幕中名为 Trips 的导航属性,指向的目标模型 Trip,类型是 Collection, 说明 Person 和 Trip 两个模型是一对多的关系

    此外,元数据还可以包含复杂类型,actions 和 singleton 等等的定义

    Marcel 在上一个单元中已经介绍过,OData 支持增删改查操作

    让我们来看一些例子

    这里我们能看到对一个 OData 服务发起的 HTTP 请求和响应

    第一个场景是读取所有的 People. People 的类型是 Person, 定义在元数据里

    HTTP 响应包含对应的数据集。结果列表里的第一条记录是 Russell Whyte

    我们还可以通过指定 key, 来查询某条特定的 Person 记录

    把键值 russellwhyte 添加到花括号里,在响应中您可以看到, 该请求只返回了一条对应的数据

    让我们再来看看一些更复杂的查询

    使用 $top,只返回前两条记录。使用 $select, 只读取 FirstName 和 LastName 字段

    对结果集再次过滤,条件为至少拥有一条 Trip 记录,且费用超过3000

    如大家看到的, 我们可以非常灵活地构造复杂查询语句

    现在展示如何创建一条 Person 记录

    使用 HTTP POST 请求,在请求正文中维护 Person 数据

    响应返回 HTTP 201 状态码,表明数据创建成功

    为提高 Fiori 用户体验,SAP 定义了一种标准化的支持文档 Draft 版本的处理机制

    有了 Draft 机制,用户对文档的编辑可以随时中断并随时继续

    只有当用户完成编辑之后,文档数据才会存储到对应的数据库表里

    在 SAP Fiori Elements 应用里,每当用户在编辑模式下添加或者更改信息时,Draft 版本的数据都会自动被保存

    这种自动保存的请求响应,可能会包含一些提示消息,比如 SalesArea 的 sold-to party 没有维护

    当 sold-to party 数据发生变化时,HTTP 响应包含了该 party 所有数据,以便显示在 UI 上

    比如地址和联系人信息。Draft 机制使应用具备动态交互的特性

    注意,Draft 机制应该通过框架提供开箱即用的支持

    如果在应用程序层面重新实现整套 Draft 处理机制,工作量相当巨大

    上一单元 Marcel 也介绍过 OData 注解。这些注解从行为和消费方式两方面,对模型提供更多描述信息

    现在我将解释 OData 注解的工作原理,并举例说明

    注解是 OData 额外的元数据,格式为 XML

    注解定义于 OData 和 SAP 维护的词汇表中

    注解都是一些抽象的定义,因此较稳定,不会频繁变动,能够被包括 SAP UI5 在内的消费端解析

    SAP Fiori Elements 解析注解并生成对应的 UI 页面

    看一个具体的例子:Travel App 里的 Total Price 字段

    在 OData Measures 词汇表里,存在一个 ISOCurrency 注解

    OData 元数据里的 TotalPrice 类型被其注解,指向目标字段 CurrencyCode

    因而框架代码能够理解,TotalPrice 是一个货币金额,而 CurrencyCode 字段包含了货币单位

    于是 Fiori Elements 在金额字段的右边显示货币单位

    该注解还用于根据货币单位显示对应的小数,并保证在表格中让金额的显示也能正确对齐

    注解当然还能够定义更复杂的 UI 元素

    例如,这些 UI 可以是通过 UI.LineItem 定义的表格

    通过 UI.FieldGroup 定义的 form, 通过 UI.Chart 定义的图表等等

    此外,注解还可以从行为方面来对应用程序进行描述

    一个例子是在应用程序中提供增删改查等功能

    比如通过注解,可以指定 Travel 模型可以被编辑,于是 Fiori Elements 在 UI 上绘制 Edit 按钮

    工具栏其他按钮的显示或隐藏逻辑也以此类推

    另一个场景是所谓 Side Effect 的定义

    例如,当表格行项目级别的产品单价发生变化时,UI 需要重新从后台读取最新的订单抬头级别的总价信息

    SAP 系统后台可以提供基于 ABAP CDS 或者 CAP CDS 的注解

    或者也可以使用本地文件定义的注解。对于 UI 来说,它不关心注解来自后台服务器或是本地文件

    CDS View 中的注解被后台服务器翻译成 XML 格式的注解

    后者被 Fiori Elements 框架解析

    XML 格式的注解可以被任何类型的后台服务器使用

    这些后台服务器可以是 SAP 传统的 ABAP 编程模型,SAP BW 和非 SAP 服务器。下图右边是 ABAP CDS 注解的一个例子

    您平时对于开发工具的偏好,可能会影响您对注解类型的选择

    在 SAP Fiori Tools 中,其提供的向导式创建步骤,能帮助我们创建正确的注解

    XML 和 CAP CDS 注解都能被 SAP Fiori Tools 支持

    如果您使用 ABAP Development Tool, 可以直接在 ABAP CDS 中维护注解

    生命周期管理和功能可用性同样会影响注解类型的选取

    UI 项目本地文件提供的注解,其生命周期同应用程序一致。CDS 注解的生命周期同 OData 服务实现一致

    如果我们是在一个比较低版本的 ABAP 服务器上开发,某些注解可能无法被支持。如果有疑问,请查询文档

    让我们总结一下本单元的内容

    我们介绍了 OData 概念的核心部分,OData 元数据,OData 请求,以及 Draft 机制

    我们也学习了什么是 OData 注解,以及它是如何影响 Fiori Elements 应用的

    现在大家可以期待下一单元的内容了。届时我们将介绍如何搭建 Fiori Elements 应用的开发环境。感谢收看本视频,下期再见

    更多Jerry的原创文章,尽在:"汪子熙":

  • 相关阅读:
    白话机器学习的数学笔记系列1算法回归_一元回归+多项式回归
    使用verdaccio搭建npm私有库 pm2守护进程 nrm管理npm源
    Nginx笔记
    FileSystemResource 和 ClassPathResource 以及 ServletContextResource 获取资源用法
    ClickHouse 使用
    springboot整合nacos项目配置文件
    SpringBoot基础篇Bean之条件注入@ConditionalOnExpression
    java web项目服务端返回json结果时过滤字段为null的属性
    Navicat导出Excel格式表结构
    sql积累
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/14949785.html
Copyright © 2020-2023  润新知