如何呼叫其他实体服务

2020-08-22 10:48发布

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

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


嗨,

我有一个简单的要求。 我在同一个SCP帐户中创建了3个api服务及其相应的mta并进行了部署。

https://xxxx.eu10.hana.ondemand.com/srv/testOne

testOne:cds

命名空间ntest;
 使用来自'@ sap/cds/common'的{cuid};
 实体testOne:cuid {
    数量:整数;
 }
 

srv.cds

使用来自'../db/testOne'的{ntest};
 服务srv {
     实体testOne作为ntest.testOne上的投影;
 }
 

testTwo->具有与testOne相同的cds和srv,但我将名称testOne替换为testTwo

https://xxxx.eu10.hana.ondemand.com/srv/testTwo

testThree->服务testOne和testTwo的CD相同

https://xxxx.eu10.hana.ondemand.com/srv/testThree

我想知道如何在服务testThree中调用testOne和testTwo。

testthree-service.js

 module.exports = cds.service.impl((srv)=> {
    srv.before('CREATE','TestThree',req => {
    /**首次通话**/
        let QuantityOne =//我要获取第一个服务的数量
     /**第二次通话**/
        let QuantityTwo =//我要获取第二个服务的数量

 设Total =数量一+数量二

     })
   
 }); 

我应该在我的MTA中添加依赖项服务吗?

有人可以提出建议吗? 任何帮助将不胜感激。

谢谢

F。

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

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


嗨,

我有一个简单的要求。 我在同一个SCP帐户中创建了3个api服务及其相应的mta并进行了部署。

https://xxxx.eu10.hana.ondemand.com/srv/testOne

testOne:cds

命名空间ntest;
 使用来自'@ sap/cds/common'的{cuid};
 实体testOne:cuid {
    数量:整数;
 }
 

srv.cds

使用来自'../db/testOne'的{ntest};
 服务srv {
     实体testOne作为ntest.testOne上的投影;
 }
 

testTwo->具有与testOne相同的cds和srv,但我将名称testOne替换为testTwo

https://xxxx.eu10.hana.ondemand.com/srv/testTwo

testThree->服务testOne和testTwo的CD相同

https://xxxx.eu10.hana.ondemand.com/srv/testThree

我想知道如何在服务testThree中调用testOne和testTwo。

testthree-service.js

 module.exports = cds.service.impl((srv)=> {
    srv.before('CREATE','TestThree',req => {
    /**首次通话**/
        let QuantityOne =//我要获取第一个服务的数量
     /**第二次通话**/
        let QuantityTwo =//我要获取第二个服务的数量

 设Total =数量一+数量二

     })
   
 }); 

我应该在我的MTA中添加依赖项服务吗?

有人可以提出建议吗? 任何帮助将不胜感激。

谢谢

F。

付费偷看设置
发送
4条回答
梦想连接
1楼-- · 2020-08-22 11:12

尊敬的F。

对于服务间通信,您需要为要呼叫的每个服务创建目的地。 为此,您可以在SAP Cloud Foundry上使用目标服务: https: //help.sap.com/viewer/cca91383641e40ffbe03bdc78f00f681/Cloud/zh-CN/7e306250e08340f89d6c103e28840f30.html

完成此操作后,您可以使用SAP Cloud SDK或CAP触发到这些目标的同步请求。

在CAP中,您可以导入外部cds模型并使用众所周知的查询API创建查询。 可以在此处找到更多信息: https://cap.cloud.sap/docs/guides/消费服务

最诚挚的问候,
David

Nir深蓝
2楼-- · 2020-08-22 11:23

嗨,

是的,有可能。 但是请记住,导入的CDS模型会自动使用`@ cds.persistence.skip`进行注释(因为它是远程服务)。

要检索数据,您需要编写自定义逻辑(在这里您可以使用CDS查询API)。


最好的问候,
大卫

wang628962
3楼-- · 2020-08-22 11:28

嗨,大卫,

非常感谢您提供信息。

在导入外部cds模型之后,是否还可以对其中一种导入服务进行关联?

命名空间my.test;
 使用来自'@ sap/cds/common'的{cuid};
 实体testOne:cuid {
    数量:整数;
 }
 
命名空间ntest;
 使用来自'@ sap/cds/common'的{cuid};
 使用'my.test'中的{testOne};//导入del modelo
 实体测试三:cuid {
    数量:整数;
    testOneId:与testOne的关联;
 }
 

应该是作品协会吗?

最佳

F。

亦是此间程序员
4楼-- · 2020-08-22 11:23

嗨,大卫

直到今天我都无法测试,也找不到导入CDS模型的方法。

我想将第一项服务的字段数量包括在第二项服务中,我将第二项服务称为:testSecond?&$ expand = XXXX

在这个例子中,您能帮我吗?

这是我package.json中的外部服务

" externalService":{
         " kind":" rest/odata",
         " model":" api/testOne",
         "凭据":{
           " destination":" DEST_testOne",
           " requestTimeout":30000
       },

 

外部第一服务:schema.cds:

命名空间my.test;
 使用来自'@ sap/cds/common'的{cuid};
 实体testOne:cuid {
    数量:整数;
 }


 

外部第二服务:schema.cds。

命名空间ntest;
 使用来自'@ sap/cds/common'的{cuid};
 实体testSecond:cuid {
    数量:整数;
    testOneId:与testOne的关联;
 }


 

非常感谢您。

一周热门 更多>