使用 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 data
oMockServer.simulate(sMetadataUrl, {
sMockdataBaseUrl: sJsonFilesUrl,
bGenerateMissingMockData: true
});
看 simulate 方法的注释:
- Simulates an existing OData service by sepcifying the metadata URL and the base URL for the mockdata
通过指定 Metadata url 和 mockdata base url,来模拟一个 OData 服务。
- 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 完全一致。
- 如果没有提供 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的原创文章,尽在:“汪子熙”:
相关文章
- SAP UI5 sap.ui.layout.Grid 控件概述
- SAP CRM Fiori 应用的 Deep Create 行为和实现分析
- 给 SAP Commerce Cloud Storefront 设置 endpoint
- SAP UI5 应用中的 sap.ui.require.toUrl 使用场景
- 外行假装内行,我也来谈谈SAP BAPI和BADI
- SAP UI5 表格数据如何导出成 Excel 文件(Table Export As Excel)
- [ChatGPT 勘误] SAP UI5 的 sap.ui.base.Object
- SAP QM Quality Certificate系列3
- SAP Fiori Belize 主题应用在 SAPGUI 里的一些要点
- SAP UI5 应用的标准 Theme 和自定义 Theme 的加载讨论
- SAP UI5 应用如何加载自定义 Theme
- SAP UI5 sap.m.Table Manual Pop-In Mode 概述
- 澄清一些对 SAP UI5 响应式表格 sap.m.Table 的常见理解误区试读版
- 关于 SAP UI5 接口 sap.ui.core.IAsyncContentCreation 的问题讨论
- 一个真实的 SAP 标准 UI5 应用的扩展开发项目(Extension Project)分享 - UI5 界面上新增订单创建者字段
- SAP跳过权限检查/前提是有debug权限详解编程语言
- SAP 事务码与角色的关联报表详解编程语言
- SAP最常用的业务流程事务代码详解编程语言
- SAP一句话入门-SD详解编程语言
- 想做SAP abap开发,但是却没有权限修改/新增 abap程序详解编程语言
- 系统SAP在Linux系统上的开启之旅(sap启动linux)
- 系统Oracle公司收购SAP系统开启新的商业时代(Oracle公司sap)
- 对比Oracle和SAP价格比较哪个是更值得投入的选择(oracle与sap价格)