摘要
在流感大流行期间,越来越多的活动转向了远程工作,在德国这里被称为"家庭办公室"。这种额外的数据流量已经越来越加重了基础设施的负担,因此需要保持应用程序的某些功能可用,即使在没有Wi-fi和移动通信的地区也是如此。在本文中,localindexeddb用于存储应用程序数据。SAP oData v2模型被扩展,以便自动识别与SAP后端的通信失败。Endpoint、HTTP动词和负载缓存在IndexedDB中,并在应用程序重新联机时再次发送。
Contents
IndexedDB
IndexedDB是基于Javascript的数据库。它允许数据和文件保存在本地。数据是根据每个主机/端口的同源策略进行结构化和存储的。这里不使用固定列,而是存储带有键的对象。
范围
目标是一个显示简单列表的UI5应用程序。该列表允许您在SAP后端服务器可用和没有连接时添加和删除条目。该列表还提供了一个同步功能,可以将所有数据从本地IndexedDB传输到SAP系统。SAP后端的条目显示在表中。同样,IndexedDB中的条目也无法保存到SAP后端。此外,绑定到列表的模型为这些条目存储delete令牌,用户希望在没有服务器连接时被删除。无论网络状态如何,应用程序始终对用户起相同的作用。
包含后端服务和本地索引数据的最终列表Ddb
OData服务
关联的OData服务只有表中显示的四个字段。支持"查询"、"创建"和"删除"功能
SEGW项目
服务响应
JS类oData和IndexedDb
在UI5应用中,为oData模型和IndexedDb创建新类。sap/ui/model/odata/v2/ODataModel是为oData.js公司班级。sap/ui/model/json/JSONModel用于访问索引DB.js.这两个类稍后都从组件.js.
oData和IndexedDb类
对SAP后端的失败调用应在oData模型中直接拦截。为此,必须扩展标准sapodata模型。为此,扩展了所需的标准积垢方法"Create"、"Read"和"Remove"。在成功和错误回调中调用自己的方法,将信息转发到IndexedDB。
oData.js公司
创建一个全局JSON模型来访问IndexedDB的功能。在构造函数中打开数据库。如果IndexedDB的打开实例已经存在,则当前版本将全局存储。元数据是使用扩展的oData模型从SAP后端加载的。类似地,会创建一个JSON"表模型"。控制数据的加载和保存。
模型创建
索引DB.js
初始化
为了能够访问扩展的ODatamodel类,模型实例化将从中删除清单.json…
…然后在组件.js/ 模型.js:
模型.js:
使用表格和odata模型读取数据。此外,TableModel的"load"方法检查IndexedDB中是否存在同一端点下的表。如果是这种情况,也会读取它,以便能够显示来自两个源的数据。下面描述通过读取"Table1Set"实体启动的过程。每次create和delete调用后都会调用并更新此读取过程。这还包括来自SAP后端和IndexedDB的数据。事件S1表示读取过程的开始。
读取过程
视图1。控制器.js
通过表格模型开始加载过程:
表.js
向oData模型转发请求:
oData.js公司
执行读取功能。在"成功"的情况下,读取结果被转发到"\u readSuccessCallback"方法,大数据产品,以检查数据是否也在本地存储在同一路径下。
索引DB.js
getTable首先在本地检查read sPath下是否有表。如果是这种情况,则读取并返回每个条目。每个条目接收一个附加属性,有哪些云服务器,用于确定来源。
读取过程结束后,表格显示从后端和IndexedDB读取的数据。
列表显示BE和本地数据
数据通过联机状态下表格模型的接口保存。新数据通过GUI创建并传输到后端。
添加对话框
保存过程
表格显示从后端读取的数据。
保存结果
对于测试用例,通过Chrome浏览器选项停用网络。对于用户来说,曲面上的创建过程是相同的。在线模式下,通过GUI创建数据。
将浏览器设置为离线模式
添加对话框
创建数据处理
视图1。控制器.js
保存后手动读取(S1)
表.js
oData.js公司
Createcall按计划失败后,要保存的数据(包括路径)被转发到IndexedDB。数据被赋予一个附加属性"\u http",值为"create",以便以后同步。
索引DB.js
如有必要,首先在IndexedDB中创建一个新表(sPath)。然后将数据存储在那里。
相应的条目可以在索引数据库中找到。添加了一个附加属性(_http),淘客工具,用于存储http谓词,一站式建站,以供以后处理。
包含数据的本地IndexedDB
随后,数据被读取为新数据,表格显示本地数据以及来自后端的数据。
显示IndexedDB数据的列表
删除数据的方式应与创建数据库的方式相同数据,如果应用程序不能访问SAP系统。下面描述的delete函数删除本地条目,并为处于脱机状态的IndexedDB中的后端条目创建delete令牌。为了删除列表中的第一个条目(后端数据),应用程序再次切换到脱机状态。
要删除的项目
程序顺序如下:
过程:删除后端项目,离线模式
视图1。控制器.js
通过ViewController启动过程:
表.js
转发请求:
oData.js公司
删除调用失败后,sPath转发到"\u removeErrorCallback"方法:
索引DB.js