部署 SAP HANA Cloud
1.将 SAP HANA Cloud 添加到您的账户
在SAP BTP Cockpit中,单击服务,然后单击Service Marketplace。搜索SAP HANA Cloud,然后单击右上角的Create。
填写以下信息,点击创建。
要确保所需用户具有在 HANA Cloud Central中管理实例所需的权限,请导航到左侧菜单中的用户.然后单击您的用户。
点击分配角色集合
选择SAP HANA Cloud Administrator(SAP HANA Cloud 管理员),然后单击分配角色集合。
导航到实例和租用,然后单击SAP HANA Cloud以打开SAP HANA Cloud Central。
2.配置 SAP HANA Cloud 实例、SAP HANA 数据库
1.在屏幕的右上角,单击Create Instance。
在这里,您必须选择要创建的实例的Type。选择SAP HANA Cloud、SAP HANA 数据库,点击下一步。
接下来,配置许可证,实例名称和密码,,如果你在 SAP HANA Cloud 权利中只启用了一种类型的服务计划(例如,仅免费套餐),则不会显示“许可证”部分,并且将自动使用该服务计划类型。
在Basics部分中,在Instance Name字段中输入实例的名称,例如 .HC_HDB,在Administrator Password (管理员密码)字段中插入密码.点击下一步。
接下来设置数据库的大小,对于试用实例,大小分配预定义为 16 GB 内存、80 GB 存储和1 个 vCPU 计算。点击下一步。
检查高级设置,在此,我们不需要PAL和Data Provisioning Server。您可以管理 SAP HANA数据库实例的允许连接,即允许从SAP BTP外部访问 SAP HANA 数据库实例。选择仅允许 BTP IP 地址将拒绝 SAP BTP之外的所有IP地址。您可以选择通过插入一个或多个特定IP地址来允许访问特定应用程序,也可以允许来自所有 IP 地址的连接。接下来,您还可以选择启用 SAP Cloud Connector,这样可以更轻松地将此 SAP HANA 数据库实例连接到SAP HANA本地数据库.
最后,单击Review and Create完成预置过程,然后单击Create Instance。
要停止实例,只需在SAP HANA Cloud Central中点击SAP HANA Cloud实例行旁边的三个点菜单中的即可。实例停止后,菜单项将更新为Start。
系统运行后,我们需要先更新配置,然后再将其用于开发.单击三个点,然后选择。ManageConfiguration
转到 Configuration 的部分。HANA Cloud 实例位于BTP子账户级别,不会立即在Cloud Foundry 或 Kyma 运行时中使用。为了将HANA用于基于HDI(HANA Deployment Infrastructure)或 CAP的开发,您需要将实例映射到您选择的运行时。在此,我们将映射到试用帐户的默认Cloud Foundry 运行时。Instance Mapping
在映射的 Environment Instance ID(环境实例 ID)中,提供Cloud Foundry 环境中的组织 ID(可在 SAP BTP Cockpit 的 Subaccount Overview 中找到)。我们不需要映射到环境组(Cloud Foundry 空间)。如果将此可选字段留空,则组织内的所有空间都将自动映射
选择Review and Save更改成功。
为 SAP HANA Cloud 创建 SAP Cloud 应用程序编程模型项目
1.在 SAP Business Application Studio 中创建开发空间。
在SAP BTP子账号服务,实例和租用中打开SAP Business Application Studio。转到应用程序
创建开发空间。
按照以下选择创建开发空间。
一旦Dev Space达到绿色状态RUNNING,您可以单击Dev Space的名称,它将加载到浏览器中的编辑器中.
2.配置开发空间。
在创建 SAP HANA 项目之前,我们想再执行一些一次性配置步骤来准备 Dev Space,Business Application Studio的左侧,单击 Cloud Foundry 目标图标。
现在,在Cloud Foundry Targets 窗口中,可以展开 Service 或Applications,然后单击 Logon 图标以继续配置过程.
然后,Cloud Foundry Sign In and Targets窗口将在 SAP Business Application Studio 的侧面板中打开。第一个输入将提示您输入 API 终端节点和您的凭证.
建议的默认值不一定是正确的值,请确认。该值可以在 SAP BTP 主控室的子账户级别找到.
验证API端点后,输入用于创建SAP BTP 账户和密码的电子邮件地址,然后按登录.选择账户和开发空间,按Apply。
3.创建新项目。
在 SAP Business Application Studio 的欢迎选项卡中,单击从模板新建项目。
选择CAP项目,然后单击开始。
按照截图,填写信息。单击完成。
该向导生成了一个多目标应用程序,其中包含两个模块:一个数据库模块和一个服务模块。展开它们以熟悉基本的文件夹结构。
该向导还使用每个模块的必要依赖项和参数填充了配置文件。在代码编辑器中右键单击它并使用Open With(打开方式)菜单选项浏览它。mta.yaml. 截图红色部分依次为:service module of type node.js/database module/depends on hdi container/ HDI Container.
此文件是部署描述符,它是将所有微服务作为单个应用程序在其整个生命周期中保存在一起的粘合剂。它声明模块(应用程序或微服务)及其与其他微服务或后端服务的依赖关系。您还可以使用此文件将变量注入应用程序的环境变量中。VCAP_SERVICES
4.安装依赖项.
我们在项目中使用了几个依赖的Node.js模块。它们在我们刚刚编辑的package.json文件中被引用。在我们进行任何测试之前,需要将这些依赖项安装到您的项目中。Dependencies
打开新终端。输入命令:npm install。
我们将使用名为hana-cli的开源示例实用程序来帮助完成开发任务。从同一终端窗口运行命令以安装它以供以后使用。npm install -g hana-cli
5.初始化本地Git存储库。您将使用本地Git存储库进行基本版本管理。
单击Source Control图标。
单击Initialize Repository图标。
源代码控制面板现在显示它正在由 Git 管理,并且正在跟踪更改。
每次提交到本地或远程存储库时,都会创建一个版本。这将允许您还原和比较任何更改。建议在每次结束时执行提交。按照以下路径以在此提交中包含所有新的或更改的文件。
添加提交消息,然后单击Commit All。对于实际项目,建议设置远程仓库,例如 GitHub。这将允许您在SAP Business Application Studio Dev Space之外拥有代码的副本
使用适用于SAP HANA Cloud 的 Core Data Services (CDS) 创建数据库项目
1.创建数据库实体。SAP Cloud Application Programming模型利用核心数据服务来定义数据库模块中的工件。由于此模型与数据库无关,即适用于任何数据库,因此它不允许您利用特定于SAP HANA Cloud 的功能。因此,您还将创建两个不需要任何高级数据类型的表。在文件夹中,单击鼠标右键并选择New File(新建文件)db。
创建以下文件,声明两个彼此之间具有关系的实体。此文件中声明的设计时工件将转换为数据库中的运行时物理工件。在此示例中,实体将变为表。
在上述模型中,使用了SAP提供的一组可重用的内容(国家/地区、货币等列表)。我们还必须将此依赖项添加到我们的项目中。从命令行发出以下命令来执行此:
2.创建服务接口.
在文件夹中,创建另一个文件.声明服务公开在上一步中声明的数据库实体.
在终端中发出命令:cds build –production。
如果注意控制台中的构建日志,将看到 artifacts were converted to 和 artifacts。您将在名为的新文件夹中找到这些工件。
现在,将这些对象部署到HANA数据库中,创建表和视图。我们将使用SAP HANA Projects (SAP HANA 项目)视图来执行此作。请展开此视图,您将看到以下内容
将项目绑定到 Database Connection和 HD 容器实例。按绑定图标成为进程.
选择Bind to an container.
这里选择创建一个新的实例。MyHANAApp-dev
在 HANA 中创建服务需要一两分钟.消息对话框中将显示一个进度条.以下显示创建成功。
现在,我们已准备好将开发内容部署到数据库中。在继续之前,如果您在 SAP Business ApplicatiStudio中使Dev Space,我们建议您增加集成终端中的默认回滚行数。这是因为有许多行日志输出即将生成,您将希望看到所有行。因此,请使用菜单路径File -> Preferences -> Settings并搜索Terminal->Integrated: Scrollback设置。将值设置为 10000。现在,完成这些作后,您就可以进行部署了。在SAP HANA Projects 视图中的db文件夹级别按下Deploy按钮(看起来像火箭)。
3.在控制台中向上滚动以查看构建过程已完成的动作。
定义了一个CDS工件,这是一个抽象,一个要在数据库中表示的实体的设计时声明,以及用于公开它们的服务.
原始文件已转换为,这是保存所有文件时特定于SAP HANA的 SQLDDL 语法。.cds hdbtable
然后,这些文件被转换为运行时对象,例如HANA数据库中的表。Hdbtable
如果选中了空间中的服务,将看到HDI容器的服务。
4.在Database Explorer中检查生成的表和视图。
在SAP HANA Projects 视图中,按Open HDI Container按钮.
打开后,导航到该部分并单击表。Tables Header
表的名称与生成的构件匹配。还将看到由HDI容器管理的物理架构.
5.将数据加载到表中,右键单击标题表,然后选择Import Data。
选择Import Data并按Step 2。
为Import Data from导入数据来选择Local。浏览文件,然后单击Step .Header
保留默认导入目标,然后单击Step4.
保留默认表映射,然后按Step5.
保留默认错误处理方式,然后按Review.
选择Import into Database.导入到数据库。
将看到4条记录已成功导入的确认。
对其它的item和text表也重复此操作。检查加载到表中的数据。
在SQL语句中添加以下WHERE 条件,执行。
使用 CAP 创建用户界面 (SAP HANA Cloud)
1.运行服务。
在上文中,我们在文件夹中有一个文件。此文件包含与SAP HANA Cloud实例的连接详细信息,它是在我们从SAP HANA Projects视图执行绑定作时创建的。.env/db
可以使用Cloud Foundry中的相同配置信息来启动CAP服务层,并将其连接到SAP HANA。使用命令指示CAP绑定到我们之前在SAP HANA Projects视图中绑定到的同一 HANA Cloud HDI 服务实例.
运行命令以安装Cloud Application Programming Model所需的任何Node.js依赖模块.
项目是为真正的XSUAA安全性设置的,我们将在文的后面部分使用它。但现在,我们希望在不配置必要的身份验证和授权设置的情况下进行测试。为此,请在项目的根目录中打开package.json文件。将属性重新更改为 ,以便我们可以使用 mock身份验证进行测试。cds.requires.auth xsuaa mocked
现在发出命令.这将在本地启动 CAP 服务,并使用绑定配置连接到我们的远程HANA数据库实例。启动后,您将看到一个带有按钮的对话框,上面写着Open in New Tab。按此按钮可在新的浏览器选项卡中测试 CAP 服务。cds watch --profile hybrid
应该会看到公开的实体列表。
可以点击实体,查看SAP HANA Cloud数据库中提供的JSON格式的值。
2.测试服务。从 Welcome(欢迎)页面中选择选项,您可以看到该服务的技术描述$metadata.
可以在已创建的OData v4服务中使用不同的方法。返回到服务的欢迎页面,然后单击 。此时,不同版本的Cloud Application Programming Model预览页面执行不同的动作。有些会自动为生成的 URL添加 $top 限制。其他版本则不需要。打开URL时,请查看 URL 的末尾。如果它以结尾,则将以下内容添加到 URL:Interactions_ItemsInteractions_Items?$top=11如在截图添加此查找DE结尾,显示的数据不一样。
3.配置路由。
将使用Application Route模块。这是使用初始向导生成到项目中的。此模块非常重要,因为它将成为应用程序的入口点。到达此模块的每个请求都将被路由到不同的后端服务。该会在项目的根目录中看到一个名为name的文件夹。app/router
由于Web模块将接收请求并将其路由到适当的处理后端服务(例如您刚刚测试的OData服务),因此它还将负责强制执行身份验证.这些路由逻辑由名为的应用程序完成。您可以看到 Node.js 模块被调用为Web 模块的启动脚本,如file中所定义。Approuter package.json
我们现在还需要安装approuter依赖项.从终端切换到文件夹并发出命令app/routernpm install
将扫描文件以将请求中的模式路由到正确的目标.向导生成的xs-app.json已准备好使用真正的安全设置,但还没走到那部分.因此,让我们更改配置以暂时禁用安全检查。Approuter xs-app.json 并更改此文件下的内容为以下截图内容。
4.创建 Fiori Web 界面。
为CAP服务创建一个Fiori UI.我们将使用向导生成大部分UI.从顶部菜单中选择View-> Command Pallette.然后在搜索框中输入.选择Fiori Open Application Generator. fiori
选择Worklist Page作为模板,然后按Next.
在Data Source and Service Selection屏幕上,按以下信息填写.点击下一步.
选择Interactions_Header作为主实体,对于导航实体,保留如果不存在,则自动将表列添加到列表页和部分到对象页选项的值,然后按下一步。
在Project Attributes 屏幕中,匹配以下屏幕截图中显示的值,然后按完成。
新的项目结构和内容应如下所示
在终端中,应该仍然在运行(如果没有,请重新启动它)此命令监视更改,以便您的应用程序已经使用新UI进行测试.打开您之前测试它的浏览器选项卡.cds watch --profile hybrid
CAP 测试页面现在有一个指向新生成的应用程序的链接.
通过注释增强 Fiori UI.Fiori 应用程序.
模板向导已经为您的应用程序创建了一个 annotations.cds 文件,其中包含一些基本的注释条目。这就是我们在上一步中使用的预览和输出中的字段的方式。Partner country_code.
现在,让我们扩展向导生成的注释,以便在应用程序中包含更多字段。只需几行注释,我们就可以重塑整个 UI,替换为以下内容.
再次运行应用程序,将获得新功能,包括国家/地区和货币的价值帮助,以及查看和维护可翻译文本元素的功能.
将用户身份验证添加到您的应用程序 SAP HANA Cloud)
1.创建XSUAA配置.
UAA将提供用户身份,以及分配的角色和用户属性.这是以传HTTP 请求的 Authorization 标头中的 JWT令牌的形式完成的。我们需要在上文教程中添加到应用程序的应用程序路由器来执行重定向到 UAA 登录页面,然后将此JWT令牌转发到您的CAP服务.因此,这将是一个多步骤的过程.
在前面的文章中,我们在项目中使用了Application Router。当我们这样做时,向导在项目的根目录中创建了一个xs-security.json 文件.此文件在创建或更新XSUAA 服务实例期间使用,并控制角色、范围、属性和角色模板,这些模板将成为应用程序安全性的一部分。生成的是xs-security.json 的基本版本,它只需要身份验证,而不需要特定角色.
2.为了真正测试应用程序中角色的影响,让我们为我们的服务添加一些安全性。从文件夹中srv打开interaction_srv.cds。按如下方式调整代码,使服务仅对经过身份验证的用户可用,并且仅对具有该角色的用户可用,并将某些读取作期间的结果限制为仅Country Country)列的值为 German (DE)的那些记录。
3.当您像上一步中那样向服务添加范围时,可以使用以下命令生成一个示例,并将其合并到Application Router向导生成的 basics文件中。
4.由于我们想从 Business Application Studio测试安全设置,因此我们将向xs-security.json添加另一个属性。
5.打开终端并使用以下命令通过配置创建 XSUAA服务实例。
6.最后返回根目录中的package.json文件。在文中,我们将身份验证配置更改为mockedx。现在我们可以将其改回 xsuaa
7.配置应用程序。在终端上,我们需要创建一个服务密钥这将使我们能够访问您的XSUAA实例的凭证。
8.在终端中更改回项目的根目录,然后发出命令。这与我们之前用于将正在运行的 CAP 应用程序绑定到 HANA DB 的命令相同.现在,我们还向安全 XSUAA 服务添加了一个绑定.
9.为应用程序创建和授予角色.在测试应用程序之前,我们需要创建一个包含 XSUAA 实例详细信息的角色,并向该用户授予权限.我们将从SAP BTP主控室执行此动作。在 Cockpit中,可以设置角色和角色集合,并将角色集合分配给您的用户.当用户通过 XSUAA 和Application Router登录到您的应用程序时,这会将必要的授权信息引入JWT令牌。
在此创建新的角色集合,名称为MyHANAApp。
为其添加角色和用户。
该 approuter 组件使用 XSUAA 实现必要的握手,以允许用户以交互方式登录。生成的 JWT 令牌将发送到应用程序,用于实施授权。
接下来打开文件夹中的 xs-app.json 文件。这里要进行一些调整。
10.测试。如果打开 CAP 服务测试页(如果需要重新启动它)并尝试访问其中一个服务端点或元数据,则应该会收到 Unauthorized 错误。这意味着您的安全设置正在运行。现在,直接访问 CAP 服务将始终产生错误,因为不存在身份验证令牌。我们需要通过 Application Router 运行来生成和转发身份验证令。
在不停止 CAP 服务的情况下,打开第二个终端。在此终端中运行以下命令启动应用程序路由器。
在新选项卡中打开应用程序路由器(在端口 5000 上运行的新服务实例)。单击 .现在,您应该看到数据正常返回,而不是在直接测试 CAP 服务时收到的 Unauthorized 错误。
最后,切换到HeaderView页面。现在,您正在使用来自CAP服务的数据进行测试,但所有数据都使用身份验证。由于我们对服务设置了数据限制,您也应该只看到一条记录。
将/user-api/attributes添加到URL的末尾,应该会看到您的电子邮件和其他用户详细信息,这是在测试应用程序路由器是否真的从 UAA 实例获取安全令牌。
通过 CAP 创建计算视图和公开SAP HANA Cloud
1.创建计算视图。计算视图和其他HANA原生工件允许您利用 HANA 特定的功能和优化,这些功能和优化在 SAP Cloud Application Programming Model 中的抽象层中可能无法使用。计算视图特别擅长聚合和筛选大型数据集。在本练习中,将基于或小型数据集和数据模型创建一个简单的联接计算视图。这样做是为了让我们专注于将 HANA 原生与 CAP 相结合的机制,而不需要典型的大型数据集,其中计算视图的技术优势变得更加明显。
通过View > Command Pallette,然后通过SAP HANA:创建 SAP HANA 数据库构件命令调色板条目创建新的计算视图。
创建名为Data Category(数据类别)DIMENSION和 Dimension Type (维度类型) 为STANDARD的计算视图。
将在/db/src文件夹中创建新对象。这样,您就可以拥有一个同时包含 HANA 原生内容和 CAP 生成内容的 HANA 数据库模型。
单击 V_INTERACTION.hdbcalculationview以加载图形计算视图编辑器。
对联接关系进行建模,将节点拖放到建模空间中.
使用加号将表添加到节点。
重复该过程以将APP_INTERACTIONS_ITEMS表添加到同一联接节点。您应该会在 join 节点中看到这两个项目。
双击 join 节点。右侧将打开一个面板。
将ID字段链接到INTERACTION_ID字段,并将cardinality基数设置为1..n的关系
在Mapping选项卡中,将ID*列之外的所有列添加为输出列.
使用箭头链接Projection。
单击Projection节点并双击联接父节点,将所有列添加到输出中。
在 SAP HANA Projects视图中,按 Deploy按钮.
在数据库资源管理器中打开HDI容器,在Column Views下,您将找到 Calculation View (计算视图)。选择Open Data.
2.创建计算视图代理实体.
现在,我们希望通过在 CDS 数据模型中为视图创建“代理”实体,将计算视图公开给 Cloud Application Programming 模型。
返回 Business Application Studio 并打开interactions.cds文件。
注释掉 namespace 行,并在新上下文中添加除该行之外的所有现有内容。
我们需要为Calculation View 添加匹配的实体定义。这意味着重新定义所有列名和数据类型/长度。手动执行此作很容易出错,但有一个实用程序会有所帮助。打开终端并切换到包含命令 的文件夹 。现在发出命令:
从终端复制此块,并将其粘贴到 context 块外部末尾的interactions.cds文件中。
现在从srv文件夹中打开interactions_srv.cds文件。将这个基于 Calculation View 的新实体作为只读实体添加到CAP服务中。
从终端返回到项目的根目录并发出命令。
尽管我们没有向项目添加任何新的数据库构件,但向服务层添加实体会导致在 SAP HANA 中生成新视图。因此,我们需要先使用 SAP HANA Projects视图部署到数据库,然后才能进行测试。
现在在网页中打开测试,测试创建的视图。
创建 HANA 存储过程并作为 CAP 服务函数公开(SAP HANA Cloud)
1.创建存储过程.在文件夹中,创建一个名为sleep新数据库工件。
。
2.这是一个非常简单的SAP HANA存储过程,它调用内置库以使处理进入休眠状态 10 秒。这是一个很好的工具,它能够测试长时间运行的查询的影响,而不会实际给系统带来不必要的负载。
3.使用 SAP HANA Projects 视图再次将其部署到数据库。
4.检查日志,以确保内容在数据库中创建。
5.在数据库资源管理器中打开 HDI 容器。这个程序已经出现。可以测试。
6.以下截图为测试结果,等待10s。
7.将过程添加到CAP服务。
现在,我们想将此过程作为函数添加到CAP服务中。编辑/srv/interaction_srv.cds 文件。添加到服务定义中。这会将OData函数作为服务接口的一部分公开。
仅将函数添加到服务定义并不能实现它.与由 CAP的内置处理程序类实现的表和视图不同,我们需要使用服务处理程序exit来自己实现这一点。为此,请在文件夹中创建一个名为interaction_srv.js的文件。该名称必须与 JavaScript 的不同文件扩展名匹配。
在 interaction_srv.js中,我们将实现对 Stored Procedure 的调用。此逻辑将实现此函数的退出处理程序,该处理程序反过来使用标准 Node.js 模块从 SAP HANA Cloud 调用存储过程.保存文件.
接下进行测试。
缓冲10s进入。

