构建与服务无关的UI5应用程序

2020-09-24 17:36发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


HI

我想创建使用多个提供商提供的服务的UI5应用程序,

因此,我想创建一些与下划线服务无关的抽象层

例如,UI应该提供完全相同的值,但可以使用不同的服务。

在这种情况下,UI5的最佳实践是什么? 如何建议创建此抽象层? 示例或参考将非常有帮助,因为我是UI5的新手

谢谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


HI

我想创建使用多个提供商提供的服务的UI5应用程序,

因此,我想创建一些与下划线服务无关的抽象层

例如,UI应该提供完全相同的值,但可以使用不同的服务。

在这种情况下,UI5的最佳实践是什么? 如何建议创建此抽象层? 示例或参考将非常有帮助,因为我是UI5的新手

谢谢

付费偷看设置
发送
3条回答
Bunny_CDM
1楼-- · 2020-09-24 17:50

大家好,

有什么主意吗? 方向?

谢谢!

天桥码农
2楼-- · 2020-09-24 17:48

可以从UI5层调用任何服务REST投诉。 将服务调用捆绑在一个单独的JS文件中,该文件将充当服务层。

然后,将服务结果加载到本地JSON模型中。

这些JSON模型可以在控制器或视图中使用。

此致

Sharath

蓋茨
3楼-- · 2020-09-24 17:48

我的方法如下。

拥有models.js文件是一种常见的做法。 例如,这通常用于创建设备模型。

在此文件中,我创建了包含我需要的所有URL的服务模型-您可以根据要部署到的环境进行更改(忽略这种复杂性)。

作为示例,在models.js文件中,包括以下服务网址:

 createEnvironmentModel:function(environment,source){

 var data = {
  网址:{
  函数:" https://****api************.net/",
  记录:" https://crosscutting.********/",
  身份:" https://identity.********/",
  原型:" http://localhost:57109/"
  },...
 ...
 var cModel = new JSONModel(data);
 

因此,鉴于上述是在Component.js内部调用的(同样是惯常做法),因此可以从整个应用程序(如果需要,可以使用全局模型)访问此模型

 sap.ui.define([
     " sap/ui/core/UIComponent",
     " sap/ui/model/json/JSONModel",
     " blt/ui5/model/models"
 ],函数(UIComponent,JSONModel,模型){
     "使用严格";
     返回UIComponent.extend(" blt.ui5.Component",{
         元数据:{
             清单:" json"
         },
         初始化:函数(){
             var sEnvironment ="/img/qac";
             this.setModel(models.createEnvironmentModel(sEnvironment,this)," current"); //<------命名模型
            //设置设备型号
             this.setModel(models.createDeviceModel()," device");
 

然后我在服务调用(用于查询服务(用于READ活动)和命令服务(用于CrUD活动(WRITE))之间拆分)

以下示例:

 getAssetByVin:函数(会话,VIN){
         return simpleGet(session.urls.functions +"/img/v1/asset?primaryIdentifier =" + vin,session);
     },
 

会话实际上是命名模型(当前)的地方

我希望这是有道理的-进一步询问是否需要更多指导。

一周热门 更多>