Commit ce882fc9 authored by guozhipeng's avatar guozhipeng

使用说明

parent 5bcf7959
# 注意事项 # 使用说明
# 文档1:使用 CAP for Java 构建业务应用程序
## 参考文档
Build a Business Application Using CAP for Java
使用 CAP for Java 构建业务应用程序
https://developers.sap.com/mission.cap-java-app.html https://developers.sap.com/mission.cap-java-app.html
注意:JDK需要21 # 设置SAP Business Application Studio for CAP Java
## 本地开发环境先决条件
JDK 21.0.5
```
java -version
```
openjdk version "21.0.5" 2024-10-15 LTS
OpenJDK Runtime Environment SapMachine (build 21.0.5+11-LTS)
OpenJDK 64-Bit Server VM SapMachine (build 21.0.5+11-LTS, mixed mode, sharing)
node v22.11.0
```
node -v
```
v22.11.0
npm 10.8.3
本地开发启动命令: ```
npm -v
```
10.8.3
Maven 3.6.3
```
mvn -v
```
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: D:\Program Files (x86)\apache-maven-3.6.3
Java version: 21.0.5, vendor: SAP SE, runtime: D:\javaAndroid\Java\sapmachine-jdk-21.0.5
Default locale: zh_CN, platform encoding: UTF-8
OS name: "windows 11", version: "10.0", arch: "amd64", family: "windows"
## 本地开发启动命令
```
mvn clean spring-boot:run mvn clean spring-boot:run
```
浏览器访问地址:http://localhost:8080/ 浏览器访问地址:http://localhost:8080/
## 打包部署 ## 创建应用程序bookstore
在添加书店项目之前,我们需要确保您位于项目文件夹中。这两个项目(产品服务和书店)应该放在一起。在新创建的终端中运行以下命令以返回到projects文件夹:
```
cd ~/projects
```
现在你已经在正确的文件夹中,运行以下命令:
```
cds init bookstore --add java
```
从SAP Business Application Studio的主菜单中,选择Terminal→New Terminal。通过在终端中执行以下命令切换到书店目录:
```
cd ~/projects/bookstore
```
将可重用服务项目安装为npm依赖:
```
npm install $(npm pack ../products-service -s)
```
在终端中,转到bookstore项目的根目录:
```
cd ~/projects/bookstore
```
使用CTRL+C确保您已停止所有以前运行的应用程序(包括产品-服务应用程序)。
通过运行以下命令启动应用程序:
```
mvn spring-boot:run
```
您将在SAP Business Application Studio中看到一个弹出窗口。选择在新选项卡中打开。
## 向应用程序添加身份验证和授权
在本教程中,您将通过添加cds-starter-cloudfoundry依赖项来向应用程序添加身份验证,这将启用CAP Java基于Spring Security的默认安全行为。
编辑srv目录中的pom.xml(而不是位于项目根文件夹中的pom.xml文件),并在 `<dependencies>`标记下添加cds-starter-cloudfoundry依赖项。确保你保存文件。
```
<dependency>
<groupId>com.sap.cds</groupId>
<artifactId>cds-starter-cloudfoundry</artifactId>
</dependency>
```
将模拟用户添加到应用程序配置
内置的模拟用户对于初始的本地测试是很好的,但是您可能需要为您的应用程序分离不同的用户来进一步测试它。现在,您将向应用程序添加一些自定义模拟用户:
将security部分添加到srv/src/main/resources下的application.yaml文件中,如下所示:
此外,您还需要准备以下内容:
```
---
spring:
config.activate.on-profile: default
sql.init.schema-locations: classpath:schema-h2.sql
cds:
datasource:
auto-config.enabled: false
security:
mock:
users:
- name: klaus
password: pass_klaus
additional:
firstName: Klaus
lastName: Sussard
email: Klaus.Sussard@mail.com
- name: mia
password: pass_mia
additional:
firstName: Mia
lastName: Bonnellac
email: Mia.Bonnellac@mail.com
```
## 将CAP Java应用程序部署到SAP Business Technology Platform
增强生产的项目配置
```
cds add hana,mta,xsuaa,approuter --for production
```
为Cloud Foundry启用应用程序
Cloud Foundry使用Open Service Broker API为应用程序提供服务。在Cloud Foundry上运行应用程序时,可以使用环境变量 `VCAP_SERVICES`,其中包含所有必需的服务凭据。CAP Java可以自动读取此环境变量并配置应用程序以使用SAP HANA数据库。此外,您还需要确保在将应用程序部署到云中时,应用程序在默认情况下是安全的。这些方面所需的依赖项包含在 `cds-starter-cloudfoundry`依赖项包中,该包是您在上一个教程中添加的。
检查 `srv`目录中的 `pom.xml`(而不是位于项目根文件夹中的 `pom.xml`文件)和 `<dependencies>`下是否存在 `cds-starter-cloudfoundry`依赖项。
```
<dependency>
<groupId>com.sap.cds</groupId>
<artifactId>cds-starter-cloudfoundry</artifactId>
</dependency>
```
使用cf deploy部署
SAP提供了一种应用程序格式,它尊重单个模块及其技术,并使这些模块处于相同的生命周期中:[多目标应用程序](https://help.sap.com/docs/BTP/65de2977205c403bbc107264b8eccf4b/d04fc0e2ad894545aebfd7126384307c.html?version=Cloud)
MBT Build工具使用之前使用 cds add mta 创建 mta.yaml 文件来构建可部署的归档文件。MultiApps CF CLI插件添加 deploy 命令并协调部署步骤。
在项目的根目录中,执行以下命令来构建归档文件。
```
mbt build -t gen --mtar mta.mtar
```
为此,您需要MBT构建工具,SAP Business Application Studio已经安装了该工具。
使用 cf deploy 部署归档。
```
cf deploy gen/mta.mtar
```
为此,您需要MultiApps CF CLI插件,SAP Business Application Studio已经安装了该插件。
在部署期间,将创建所有需要的服务实例,并部署应用程序和数据库构件。
此过程需要几分钟。在这一步中,归档文件被上传到Cloud Foundry,服务实例被创建,应用程序被暂存,然后部署到它们的目标运行时。
如果您的部署在部署 `bookstore-db-deplayer`期间失败,请确保您的IP地址已配置为连接到SAP HANA Cloud。或者允许连接到所有IP地址,风险由您自己承担。我们建议您在完成本教程后恢复该设置。
## 在SAP BTP上配置身份验证和授权
在部署启用身份验证的应用程序之前,您必须创建服务 **授权和信任管理服务** (XSUAA)的实例并对其进行配置,将其绑定到应用程序并为其提供包含应用程序角色和范围的安全描述符。有关详细信息,请参阅SAP BTP文档中的“[保护您的应用程序”](https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/7c5c565f37c946faa154909004331d57.html)部分。
在浏览器中打开应用程序。使用欢迎页面上的链接,您可以检查您是否无法访问 Orders 实体或 `AdminService`下的所有内容。你应该看到一个 `401`错误,如果你点击这些。
要使用 `AdminService`,您需要将自己分配给在 `xs-security.json`文件中定义的角色集合 `BookStore_Administrators`。要将此角色集合分配给您的用户,您需要导航到SAP BTP子帐户的 **安全** **→** **角色集合**部分。
选择 `BookStore_Administrators`角色集合并选择 **编辑** 。在**ID****E-Mail**字段中输入您的电子邮件地址,然后选择 **保存**
![1736827468082](image/README/1736827468082.png)
### 在SAP BTP上测试应用程序
要使对角色集合的更改生效,您需要重新启动approuter:
```
cf restart bookstore
```
在浏览器中打开应用程序。相应的路径可以在上一步的路径下找到。
可以看到,您的应用程序现在通过身份验证流(非常快速)得到了保护,并且您可以访问 `AdminService`,因为您已经为自己分配了相应的角色。
搞定了!搞定了!您已经学习了如何将安全应用程序部署到SAP BTP、Cloud Foundry并分配所需的角色。
# 文档2:CAP部署到Cloud Foundry
https://cap.cloud.sap/docs/guides/deployment/to-cf
## 先决条件
以下部分基于您可以像这样创建的新项目:
```
cds init bookshop --java --add sample
cd bookshop
```
如果你想使用一个可以部署的示例,请参阅我们[的java/samples](https://github.com/sap-samples/cloud-cap-samples-java)
### 1.SAP BTP与SAP HANA云数据库启动并运行
访问[SAP BTP,例如试用](https://developers.sap.com/tutorials/hcp-create-trial-account.html)
在您的子帐户中运行[SAP HANA Cloud数据库](https://help.sap.com/docs/hana-cloud/sap-hana-cloud-administration-guide/create-sap-hana-database-instance-using-sap-hana-cloud-central)
您的子帐户的[`HDI共享`服务计划权利](https://help.sap.com/docs/hana-cloud/sap-hana-cloud-getting-started-guide/set-up-schema-or-hdi-container-cloud-foundry)
Cloud[Foundry空间](https://help.sap.com/docs/btp/sap-business-technology-platform/create-spaces?version=Cloud)
启动SAP HANA数据库需要几分钟时间
因此,我们建议您尽早执行这些步骤。在试用帐户中,您需要**每天**启动数据库。
### 2.最新版本@sap/cds-dk
确保您在全球范围内安装了最新版本的@sap/cds-dk:
```
npm -g outdated #> check whether @sap/cds-dk is listed
npm i -g @sap/cds-dk #> if necessary
```
### 3.云MTA构建工具
在终端中运行mbt来检查你是否安装了它。
如果没有,请根据[MTA构建工具的文档进行](https://sap.github.io/cloud-mta-build-tool/download)安装。
对于macOS/Linux机器,最好使用 `npm`安装:
```
npm i -g mbt
```
对于Windows,[请同时安装 `GNU Make`](https://sap.github.io/cloud-mta-build-tool/makefile/)
### 4. Cloud Foundry CLI w/ MTA插件
在终端中运行 `cf -v`,检查是否安装了版本**8**或更高版本。
如果没有,请根据[Cloud Foundry CLI文档](https://github.com/cloudfoundry/cli#downloads)安装或更新它。
此外,确保安装[了Cloud Foundry CLI的MTA插件](https://github.com/cloudfoundry-incubator/multiapps-cli-plugin/tree/master/README.md)
```
cf add-plugin-repo CF-Community https://plugins.cloudfoundry.org
cf install-plugin multiapps
cf install-plugin html5-plugin
```
## 准备生产
如果到目前为止您遵循了CAP的随使用而增长的方法,那么您已经使用内存数据库和基本/模拟身份验证开发了应用程序。要准备生产,您需要确保配置了相应的生产级选项:
![1736828457379](image/README/1736828457379.png)
为此,我们将使用 `cds add <facets>`CLI命令,这将确保正确配置所需的服务,并将相应的包依赖项添加到您*的package.json*中。
### 1.使用SAP HANA数据库
虽然我们在开发过程中使用SQLite或H2作为低成本的替代品,但我们将使用托管的SAP HANA数据库进行生产:
```
cds add hana --for production
```
### 2.使用基于XSUAA的身份验证
配置您的应用以进行基于XSUAA的身份验证:
```
cds add xsuaa --for production
```
这还将生成一个 `xs-security.json`文件
角色/范围是从CDS模型中与授权相关的注释中派生出来的。只要这些注释发生更改,请确保将 `tokercds编译为xsuaa`,如[*授权*指南](https://cap.cloud.sap/docs/guides/security/authorization#xsuaa-configuration)中所述。
### 3.使用基于MTA的部署
我们将使用[Cloud MTA Build Tool](https://sap.github.io/cloud-mta-build-tool/)来执行部署。模块和服务在一 `个部署`描述符文件中配置,我们使用以下命令生成该文件:
```
cds add mta
```
### 4.使用App Router作为网关
*App Router*充当单个入口点网关,用于将请求路由到该入口点网关。特别是,它与XSUAA相结合,确保了用户登录和身份验证。
**自定义应用程序路由器** :对于没有SAP Fiori Launchpad的场景,应用程序路由器需要与应用程序一起部署沿着。使用以下命令增强应用程序配置:
```
cds add approuter
```
## 打包部署到联创杰子账户gzpTest
命令: 命令:
```
cf api https://api.cf.cn40.platform.sapcloud.cn cf api https://api.cf.cn40.platform.sapcloud.cn
```
登录BTP命令:
登录BTP gzpTest子账户部署命令: ```
cf login -a https://api.cf.cn40.platform.sapcloud.cn -o "Shenzhen-Lianchuangjie-Technology-Co-Ltd-test-cnrc164l" -s gzpTest -u zhipeng.guo@boscloud.cn cf login -a https://api.cf.cn40.platform.sapcloud.cn -o "Shenzhen-Lianchuangjie-Technology-Co-Ltd-test-cnrc164l" -s gzpTest -u zhipeng.guo@boscloud.cn
```
密码: Gzp@123456 密码: Gzp@123456
打包命令: ## Build & Assemble 构建和组装
### 使用cds build构建可部署文件
运行 `cds build`以生成额外的部署构件,并在本地为生产做好一切准备 `。/ gen`文件夹作为暂存区。虽然 `cds build`包含在下一步 `mbt build`中,但您也可以选择性地将其作为测试运行,并检查生成的内容:
```
cds build --production
```
### 使用mbt build组装
现在,我们使用 `mbt`构建工具将所有内容组装到一个 `mta.tar`归档文件中:
```
mbt build -t gen --mtar mta.mtar mbt build -t gen --mtar mta.mtar
```
部署命令: ### Deploy to Cloud 部署到云
最后,我们可以将生成的归档部署到Cloud Foundry:
```
cf deploy gen/mta.mtar cf deploy gen/mta.mtar
```
此过程可能需要几分钟时间,最终创建一个如下所示的日志输出:
```
[…]
Application "bookshop" started and available at
"[org]-[space]-bookshop.landscape-domain.com"
[…]
```
复制并在Web浏览器中打开此URL。这是您的App Router应用程序的URL。
### 在BTP Cockpit中检查应用程序
访问[SAP BTP驾驶舱](https://help.sap.com/docs/BTP/65de2977205c403bbc107264b8eccf4b/144e1733d0d64d58a7176e817fa6aeb3.html)中的“应用程序”部分,查看已部署的应用程序:
![1736828919755](image/README/1736828919755.png)
分配*管理员*角色
我们没有为 `AdminService`分配*管理员*角色。您需要创建一个角色集合,并[分配角色和您的用户](https://developers.sap.com/tutorials/btp-app-role-assignment.html)以获得访问权限。
# 结束 2025-01-14
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
"@sap/hdi-deploy": "^5" "@sap/hdi-deploy": "^5"
}, },
"engines": { "engines": {
"node": "^22.0.0" "node": "^20.0.0"
}, },
"scripts": { "scripts": {
"start": "node node_modules/@sap/hdi-deploy/deploy.js --use-hdb", "start": "node node_modules/@sap/hdi-deploy/deploy.js --use-hdb",
......
...@@ -22,10 +22,14 @@ ...@@ -22,10 +22,14 @@
{ {
"name": "BookStore_Administrators", "name": "BookStore_Administrators",
"description": "BookStore Administrators", "description": "BookStore Administrators",
"role-template-references": ["$XSAPPNAME.Administrators"] "role-template-references": [
"$XSAPPNAME.Administrators"
]
} }
], ],
"oauth2-configuration": { "oauth2-configuration": {
"redirect-uris": ["https://*.unibetter-ic.com/**"] "redirect-uris": [
"https://*.unibetter-ic.com/**"
]
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment