本系列的前两篇文章:

  • 在没有任何前端开发经验的基础上, 创建第一个 SAP Fiori Elements 应用
  • 如何使用 mock 数据在本地运行 SAP Fiori Elements

本文研究 Fiori Elements 应用本地运行,而不是连接远程数据库,消费服务器 OData 服务的工作原理。

本地运行 SAP Fiori Elements 应用时,访问的 index.html 为:test 文件夹下的 flpSandboxMockServer.html

这个 id 为 sap-ui-bootstrap 的 script 标签里,定义了 SAP UI5 bootstrap 需要加载的 JavaScript Resource 文件:

这个 script data-sap-ui-use-mockserver 标签里,定义了 为 true:

使用 mock server 的标志位,在 locate-reuse-libs.js 里被访问。在 callback 里执行 mock server 的 init 操作。

在 mock 模式下运行,metadata 的 url 也指向本地 xml 文件了:

mock server url:/sap/opu/odata/sap/SEPMRA_PROD_MAN/ 和正常模式下运行的 OData server url 相比没有变化,

关键的一个方法:

  // load local mock dataoMockServer.simulate(sMetadataUrl, {sMockdataBaseUrl: sJsonFilesUrl,bGenerateMissingMockData: true});

看 simulate 方法的注释:

  1. Simulates an existing OData service by sepcifying the metadata URL and the base URL for the mockdata

通过指定 Metadata url 和 mockdata base url,来模拟一个 OData 服务。

  1. The mockdata needs to be stored individually for each entity type in a separate JSON file. The name of the JSON file needs to match the name of the entity type.

每个 entity type 的 mockdata 必须单独存放在一个 json 文件里,且 json 文件的名称,必须和 entity type 完全一致。

  1. 如果没有提供 mockdata 的 base url,则 mockdata 基于 metadata 被创建。

1981 行的 _refreshData 方法,会加载本地存储的 json 文件包含的 mockdata:

接下来,是 mockserver 为不同类型的 HTTP 请求,注册不同的 handler. 这样,当 mock server 收到 SAP Fiori Elements 应用发起的 HTTP 请求时,这些 handler 会被调用,来返回 mock 过的数据。

每个 HTTP 请求 handler 在注册的时候,都会绑定一个 path,如下图 2179 的正则表达式所示,这代表了该 handler 能够处理哪些路径的 HTTP 请求。例如,当 url 包含 metadata 字符串时,触发下图的 metadata handler,将本地 localService 文件夹内的 metadata.xml,返回给请求的发起方。

mock server 响应其他请求的原理类似,这里就不再赘述了。

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

使用 mock 数据在本地运行 SAP Fiori Elements 应用的工作原理相关推荐

  1. 如何使用 mock 数据在本地运行 SAP Fiori Elements

    打开 Jerry 前一篇文章 在没有任何前端开发经验的基础上, 创建第一个 SAP Fiori Elements 应用 创建的 Fiori Elements 应用: 在 localService 文件 ...

  2. 深入理解 SAP Fiori Elements 工作原理系列之二:如何给 SAP Fiori Elements 应用添加自定义按钮

    这是 Jerry 2021 年的第 33 篇文章,也是汪子熙公众号总共第 309 篇原创文章. Jerry 的日常工作内容从 2020 年 8 月转到 Angular 前端开发之后,算是领略到了这个流 ...

  3. SAP Fiori Elements 在本地测试模式下如何修改 List Report 里字段标签和图标

    通过 Jerry 这篇文章 在没有任何前端开发经验的基础上, 创建第一个 SAP Fiori Elements 应用 介绍的步骤,创建一个简单的 SAP Fiori Elements 应用. 在 Vi ...

  4. 本地开发好的 SAP Fiori Elements 应用,如何部署到 ABAP 服务器上?

    这是 Jerry 2021 年的第 29 篇文章,也是汪子熙公众号总共第 300 篇原创文章. 之前 Jerry 的两篇文章,分别介绍了如何在本地使用 Visual Studio Code 创建一个 ...

  5. SAP Fiori Elements 本地项目的 annotations.xml 文件

    SAP Fiori Elements 本地项目里的 Annotations.xml,可以定义一些本地 annotations,来覆盖掉来自后台 OData 服务里的注解. 例如:我在 Annotati ...

  6. SAP Fiori Elements 框架里 Smart Table 控件的工作原理介绍

    这是 Jerry 2021 年的第 34 篇文章,也是汪子熙公众号总共第 310 篇原创文章. Jerry 前一篇文章 深入掌握 SAP Fiori Elements 工作原理系列之二:如何给 Fio ...

  7. SAP Fiori Elements 公开课第二单元视频的台词和课程主要内容

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

  8. SAP Fiori Elements 概述

    SAP Fiori elements provide designs for UI patterns and predefined templates for common application u ...

  9. 在没有任何前端开发经验的基础上, 创建第一个 SAP Fiori Elements 应用

    这是 Jerry 2021 年的第 26 篇文章,也是汪子熙公众号总共第 297 篇原创文章. 本文绝非标题党. Jerry 前一篇文章 SAP Cloud Application Programmi ...

最新文章

  1. 转:V.I. Arnold 论数学教育
  2. 原子设计_您需要了解的有关原子设计的4件事
  3. ruby在类中访问@,类外访问调用方法
  4. 【重难点】【Java集合 01】HashMap 和 ConcurrentHashMap
  5. linux指定cpu运行程序,进程/线程绑定到特定CPU核的linux实现(有代码有实例)
  6. 当html里语义化,HTML5语义化
  7. PLSQL Developer简单使用教程
  8. neo4j---学习笔记
  9. Unity安卓开发环境搭建
  10. 联想笔记本重装系统,联想电脑安装系统
  11. Python爬取携程和同程的景点评论并实现词云
  12. CSS实现自适应下保持宽高比
  13. 图灵奖得主David Patterson出席2022全球软件研发技术大会
  14. 判断入射满射c语言编码,数学上可以分三类函数包括() 答案:单射双射满射...
  15. C++从键盘输入的方法
  16. 斐讯路由器虚拟服务器怎么设置,斐讯PSG1218路由器如何设置
  17. 英伟达 Tesla K80显卡驱动安装
  18. 还用 Macbook 装Windows ?你就out了
  19. E4416A-单通道EMP-F功率计简单上手
  20. 3D打印技术新进展,正带来哪些产业新机会?

热门文章

  1. Service Mesh服务网格:是什么和为什么
  2. Ionic系列——环境配置和项目搭建
  3. windows服务器apache+PHP+Mysql
  4. 问题 1462: [蓝桥杯][基础练习VIP]Huffuman树
  5. bzoj4668 冷战
  6. x86 linux 裁剪过程中能正常跑起来的必要配置项
  7. 异常-throws的方式处理异常
  8. 升级到php7和安装拓展(mac centos)
  9. 大公司青睐的50款开源工具
  10. Can't create handler inside thread that has not called Looper.prepare() 解决办法