云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

香港服务器_科技公司网站建设_最新活动

小七 141 0

本教程介绍

如何实现深嵌件在里面SAP云应用编程模型(第1部分:基础知识)

快速链接:实施示例项目文件第2部分:使用UUID第3部分:多层次第4部分:使用远程服务第五部分:SDK远程服务

作为CAP开发者,你习惯于免费获取一切:只需定义一个CDS模型,就可以在生成的OData服务上执行GET和CREATE请求了。

但是,如果是Deep Insert,情况就不是这样了本教程将展示如何在Java中实现所需的实现有经验的用户可以跳转到代码感兴趣的读者可以继续学习:深度插入

注:我们将展示java编码,但归根结底,只有几行代码是相关的。因此,您可以很容易地将代码调整为您喜欢的语言

前提条件

需要一些SAP云应用程序编程模型的经验(请参见此处或此处开始)

开始制作模型CD的一个好的替代方法是本系列教程

场景

在我们的示例场景中,我们假设经理正在维护与客户公司的关系为此,他使用了一个OData服务,它显示一个公司列表和一个联系人列表此外,他希望创建新的客户公司和联系人

以下步骤详细说明OData服务的行为和所需的实施

我们将讨论直接的案例和第二个案例,其中包含一些附加任务

项目

假设您已经熟悉CAP项目创建,让我们跳过细节,只提到名称,在同一页

项目名称:DeepInsertDemoJava包:com.example.deep公司OData版本:2db模块:是

对于本教程,我们只需要一个非常简单的模型和两个相关实体(有关CD中关联的信息,请参见此处和此处)

CD型号

注:在教程中,我喜欢使用能够非常清楚地识别其内容的名称。E、 g.联系我相信这样的名字在解释下面的代码时非常有用但显然,这不是生产性使用的建议。

注:如果你需要UUID:在部署前跳到第2部分

服务定义

,需要考虑2点

mta.yaml公司如果您使用的是试用帐户,则必须在生成的帐户中更改xsuaa服务实例的服务计划mta.yaml公司打开mta.yaml公司根项目文件夹中的文件找到文件末尾的resources部分,然后找到uaa资源和服务计划参数将默认值"default"改为"application":

另外,我建议在mta中增加java模块的内存,大数据啥意思,因为生成的值(512)太小

为了使用新的OData服务,我们调用元数据(我们需要组成CREATE请求)和空集合:

尝试服务https://…deepinsertdemo-srv.cfapps软件../../odata/v2/RelationService/$元数据https://…deepinsertdemo-srv.cfapps软件../../odata/v2/RelationService/ContactEntityhttps://…deepinsertdemo-srv.cfapps软件../odata/v2/RelationService/CompanyEntity

在我的示例中,URL如下:

创建联系人为了填充空集合,我们首先创建一个ContactEntity:

create Company之后我们可以创建一个ComanyEntity,它使用在外键属性

导航

中创建的ContactEntity的id。现在我们有2个实体,它们通过外键关联,我们可以测试导航:https://…/v2/RelationService/CompanyEntity(1)/linkToContact

结果应该是在

$expand

之前创建的联系人的值现在查看客户公司的经理厌倦了导航步骤。他想一次看到所有信息:公司和联系人在一个请求中这可以通过附加到URL的$expand参数来实现。要组成URL:在实体设置"CompanyEntity"后,附加?然后参数$expand with value在我们的例子中:https://…/v2/RelationService/CompanyEntity/?$expand=contact

在下面的屏幕截图中可以看到$expand的结果。

集合的每个条目都包含到相关实体的链接(在属性的顶部)。这些是用户(或应用程序)可以遵循的链接在$expand的情况下,相应的链接(在我们的例子中是"linkToContact"导航属性)包含一个名为""的子标记它包含目标的内容。这个内联条目的内容与我们使用导航时的内容相同https://…/v2/关系服务/公司实体(1)/linkToContact唯一的区别是我们只需要一个HTTP请求就可以同时获得(公司和联系人)。

注意:在集合上使用$expand可能会影响性能

注意:$expand也可以应用于单个读取请求,例如。https://…/v2/RelationService/CompanyEntity(1)/?$expand=linkToContact

注:在我们的示例中,内联部分包含一个,因为我们定义了1:1的关联。在1对多关联的情况下,它将是一个包含ContactEntities列表

现在让我们重复相同的请求,但是这次我们希望响应的格式是JSON(我们稍后需要)

https://…/RelationService/CompanyEntity?$expand=linkToContact&$format=json

扩展创建现在反过来说:在我们的示例中,经理希望创建新客户。他想在一个请求中创建客户公司和相应的联系人