给 SAP BTP 创建的 Java 应用添加 Custom Event Handler 支持创建功能

举报
Jerry Wang 发表于 2022/10/31 23:33:46 2022/10/31
【摘要】 在 productservice 文件夹下新建一个 handler 文件夹:在该文件夹里新建一个 AdminService.java 文件:此类现在处理针对 AdminService 的 Products 实体的 READ 和 CREATE 事件。READ 操作只返回保存在内存中的所有实体。CREATE 事件从 CQN 表示中提取有效负载并将其存储在内存中。CDS 查询表示法 (CQN) 是...

productservice 文件夹下新建一个 handler 文件夹:

在该文件夹里新建一个 AdminService.java 文件:

此类现在处理针对 AdminService 的 Products 实体的 READ 和 CREATE 事件。

  • READ 操作只返回保存在内存中的所有实体。

  • CREATE 事件从 CQN 表示中提取有效负载并将其存储在内存中。

CDS 查询表示法 (CQN) 是 CAP 中用于针对服务运行查询的通用语言。 它可用于与模型定义的服务进行通信,也可用于与数据库等远程服务通信。

事件处理程序使用以下 API,这些 API 可用于 CAP Java 中的服务提供者:

  1. 事件处理程序类必须实现标记接口,marker interface EventHandler 并将自己注册为 Spring Beans (@Component)。标记接口很重要,因为它使 CAP Java 运行时能够在所有 Spring Bean 中识别这些类。

  2. 事件处理程序方法使用@Before、@On 或@After 注释注册。每个事件,例如实体创建,都会经历这三个阶段。每个阶段的语义略有不同。

  3. 注释 @ServiceName 指定所有事件处理程序方法适用的默认服务名称。这里是 AdminService,因为这也是在 CDS 模型中定义服务时的名称。

事件处理程序方法获取特定于事件的事件上下文参数,该参数提供对事件输入参数的访问和设置结果的能力。例如,让我们看一下 CdsCreateEventContext 上下文参数。我们要扩展的事件是 CREATE 事件。上下文变量的类型特定于这个扩展的 CREATE 事件。 onCreate 方法返回 void,因为结果是通过运行设置的:context.setResult(…)。

使用命令行 mvn clean spring-boot:run 启动这个模板应用,然后在命令行里使用 curl 命令插入一条新的 product 数据:

curl -X POST http://localhost:8080/odata/v4/AdminService/Products \
-H "Content-Type: application/json" \
-d '{"ID": 42, "title": "My Tutorial Product", "descr": "You are doing an awesome job!"}'

插入成功:

打开 Java 应用 url:
https://workspaces-ws-pdwk4-app1.us10.trial.applicationstudio.cloud.sap
能看到刚刚插入的 product:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。