理解集成流

学习目标

  • 部署集成流。

  • 使用集成包和集成流。

  • 使用 Postman Collection。

  • 使用 Generic Receiver。

  • 使用转换器。

  • 使用映射。

如何使用示例集成流

理解示例集成流

示例集成流可帮助你快速掌握关键集成概念。这些流简单、易于设置,并且可在短时间内执行。

访问集成包

示例集成流位于 SAP Business Accelerator Hub 上的专用集成包中。这些包包含所有必需的组件。要使用它们,你必须:

  • 复制集成包

  • 部署集成流 有关详细步骤,请参阅 复制集成包并部署集成流。 有关详细步骤,请参阅复制集成包并部署集成流。

使用 HTTP 客户端作为发送方组件

许多集成流通过 HTTP 调用触发。你可以使用任何 HTTP 客户端(例如 SAP Business Application Studio)或第三方工具(例如 Postman 或 Insomnia)来执行这些流。

为简化执行,提供了 Postman 集合(Postman collections),让你能够以最少的操作发送 HTTP 请求。这些集合包含在集成包中,其中包含预先配置好的示例内容集合,可用于测试集成流。

注意

在以下练习中,我们将使用 SAP Business Application Studio 作为 HTTP 客户端。你可以阅读更多关于 SAP Business Application Studio 的信息,见 SAP Help Portal。

使用 Generic Receiver

为简化集成测试,提供了 Generic Receiver。这样就无需配置真实的接收方系统。

Generic Receiver 的工作原理

  • 它实现为一个单独的 集成流 ,名为 Generic Receiver 。

  • 它通过创建 数据存储条目 来记录每个传入的请求。

  • 每个集成包都包含自己的 Generic Receiver 流,并具有该包特有的唯一地址。

运行示例集成流的先决条件

在运行示例集成流之前,你必须首先部署同一包中的 Generic Receiver 集成流

对外部组件的 OData 调用

出于培训和演示目的,一些集成流会从外部 Webshop 应用程序检索数据。

总结

示例集成流通过简单、易于执行的场景帮助用户理解关键集成概念。这些流可在 SAP Business Accelerator Hub 的专用集成包中获取,使用前必须先复制并部署。

许多流通过 HTTP 调用触发,并提供 Postman 集合以简化执行。其中包含一个 Generic Receiver 集成流,以避免配置接收方系统。出于培训目的,一些流还会与外部 Webshop 应用程序交互。

复制集成包并部署集成流

要使用示例集成流,请执行以下步骤:

复制集成包

每个示例集成流都是 SAP Business Accelerator Hub 上某个专用集成包的一部分。开始之前:

  • 将与你想要了解的指南相对应的 集成包 复制到你的工作区。

  • 在 Web UI 的 Design 部分打开该包。

定位集成流

  • 集成流位于 Artifacts 标签页中。

  • Postman 集合位于 Documents 标签页中。

  • 你可以通过搜索名称来识别相关的流,名称遵循以下模式: 类别 → 指南 → 扩展 。

部署集成流

  • 部署包中每个所需的 集成流 。

  • 确保 Generic Receiver 集成流也已部署,因为它充当所有流的共享接收方。

总结

要使用示例集成流,首先将相关的集成包SAP Business Accelerator Hub 复制到你的工作区。在 Design 部分打开该包,其中集成流位于 Artifacts 标签页,Postman 集合位于 Documents 标签页

接下来,**部署所需的集成流,**并确保 Generic Receiver 集成流也已部署,因为它充当共享接收方。

按照这些步骤,你可以高效地设置并运行适用于不同指南的示例集成流。

在此处阅读更多内容:复制集成包并部署集成流 | SAP Help Portal

使用 Postman 集合

使用 Postman 集合

Postman 集合通过提供预先配置的 HTTP 请求,简化了示例集成流的执行。每个指南或模式都有一个关联的集成包,其中既包含示例集成流,也包含用于触发它们的 Postman 集合

注意

Postman 集合是针对第三方工具 Postman 设计的,但也可以与其他能够向你的集成流发送 HTTP 请求的工具一起使用。

下载 Postman 集合

每个 Postman 集合都遵循以下命名模式:GuidelineName_PostmanCollection

要下载并使用集合,请执行以下步骤:

  • 导航到集成包的 Documents 标签页。

  • 下载 压缩文件 并将其解压到一个文件夹中。

  • 将解压出的 .json 文件 导入 SAP Business Appliction Studio、Postman 或 Insomnia。

稍后我们将学习如何在 SAP Business Application Studio 中使用 Postman 集合中的内容。

处理 HTTP 请求中的 CSRF 保护

如果集成流在 HTTPS 发送方适配器中启用了跨站请求伪造(CSRF)保护,则 POST 请求需要额外的步骤:

  • 步骤 1: 发送一个 GET 请求 ,以从目标系统获取 X-CSRF-Token 。

  • 步骤 2: 发送 POST 请求, 并包含 所获取的令牌 。

需要 CSRF 保护的 Postman 集合会自动包含两个请求

有关更多详细信息,请参阅 HTTPS 发送方适配器以及发送 HTTP 请求和处理集成流

定时器触发的集成流

一些集成流不是通过 HTTP 请求触发的,而是在以下情况下通过定时器事件启动:

消息主体 在集成流内部 使用 内容修饰符步骤 创建。

  • 无需手动 HTTP 请求——部署会自动触发执行。

  • 无需手动 HTTP 请求——部署会自动触发执行。

总结

Postman 集合通过提供预先配置的 HTTP 请求,帮助执行示例集成流。每个集成包都包含相应的 **Postman 集合,**可从 Documents 标签页下载,并导入 SAP Business Application Studio、Postman 或同类工具。

在执行之前,必须为 Postman 集合设置连接参数**(用户名、密码和主机详细信息)**。然后使用 Collection Runner 运行该集合(取决于你使用的工具,此过程可能略有不同)。

对于受 CSRF 保护的流,一个 GET 请求会获取 X-CSRF-Token,随后该令牌用于 POST 请求。一些流由定时器事件触发,不需要 HTTP 请求。

按照这些步骤,你可以使用 Postman 或同类工具高效地测试和执行集成流。

使用 Generic Receiver

使用 Generic Receiver

Generic Receiver 是一个专用的集成流(Generic Receiver),它通过为每次传入调用创建数据存储条目来简化接收方系统的设置。

Generic Receiver 的用途

在集成场景中配置发送方和接收方系统可能既复杂又耗时。

即使是通过邮件适配器连接电子邮件账户这样的简单设置,也需要更多步骤,例如:

  • 为该电子邮件账户设置 安全配置 。

  • 将 电子邮件提供商的服务器证书 上传到密钥库(keystore)。

  • 为避免这些复杂性并让用户专注于集成流指南,**Generic Receiver 已作为预配置的接收方组件集成到某些示例流**中。

Generic Receiver 如何工作?

  • 每当集成流需要接收方时,就会调用 Generic Receiver 集成流。

  • 它使用 Process Direct 适配器 在固定地址接收调用。

  • 收到请求后,它会在你的 Cloud Integration 租户上 创建数据存储条目 。

使用 Generic Receiver 的先决条件

要**读取数据存储内容,**你的用户必须被分配 AuthGroup.BusinessExpert 授权。

通过使用 Generic Receiver,用户可以绕过复杂的接收方设置,专注于学习和实施集成流最佳实践。

Generic Receiver 中使用的关键标头

如果未提供 context 值,Check Context Script 步骤会分配一个默认值:"Result"

  • context: 标识调用的集成流中所使用的 模式或指南 。

  • receiver(可选): 指定消息的 目标接收方 。

在数据存储中存储数据

当 Generic Receiver 流被调用时,Data Store Write 步骤会创建一个条目,其属性如下。

  • Data Store Name: 根据所提供的 context 标头,使用 ${header.context} 动态设置。

  • Entry ID: 由 ${header.receiver} 生成。如果未提供 receiver 值,则会自动创建一个 唯一标识符 。

处理多个接收方

如果集成流将消息路由到多个接收方(例如基于内容的路由场景),则可以创建多个数据存储条目Entry ID 在运行时根据 receiver 标头值动态确定。

集成包特有的地址

每个集成包都有自己的 Generic Receiver 集成流,并具有该包特有的地址。这确保 Generic Receiver 能够在不同的集成场景中正确处理调用。

示例:基于内容的路由

Pattern: Content-based Routing - Ignore If No Receiver 集成流中,contextreceiver 标头是动态设置的:

标头

context

ContentBasedRouting-IgnoreIfNoReceiver

receiver

基于消息中的 shippingCountry 元素

此方法使集成流能够高效地存储和分类消息,同时支持动态路由逻辑。

总结

Generic Receiver 集成流由发送方集成流通过 ProcessDirect 适配器触发。它使用两个关键标头处理消息:

  • context:标识集成模式或指南。

  • receiver(可选):指定目标接收方。

如果未提供 context,则分配默认值 "Result"。Data Store Write 步骤使用这些标头创建条目,确保高效的数据存储。

对于多接收方场景(例如基于内容的路由),可以创建多个数据存储条目。

每个集成包都有该包特有的 Generic Receiver 流,用于管理其范围内的请求。

建模基础 - Generic Receiver

业务场景

理解 Generic Receiver 集成流的作用,以及它如何简化 SAP Cloud Integration 中的接收方系统设置。

任务流程

在本练习中,你将执行以下任务:

  1. 创建一个集成包和一个集成流(Integration Flow)工件。

  2. 创建一个带有 Generic Receiver 的集成流,其中包含一个 Groovy 脚本和一个数据存储操作。

先决条件

你可以访问 SAP Integration Suite 和 Cloud Integration 能力,例如在你的 SAP BTP 试用账户中。或者,你也可以观看下面的分步演示。

练习成果

你已获得构建基本集成流的初步经验。

你将从这个练习中学到什么?

你将获得关于 Generic Receiver 如何工作以及它如何帮助更有效地管理集成流的实践知识。

ExerciseStart Exercise(SAP 官方交互式练习)

使用 CSV 到 XML 转换器

理解 CSV 到 XML 转换器

在本课中,你将学习如何使用 CSV 到 XML 转换器将 CSV 文件转换为 XML 格式。这一过程对于将结构化数据转换为适合与其他系统集成的格式至关重要。

配置 CSV 到 XML 转换器

要有效地使用该转换器,你需要了解如何配置它。本节将指导你完成设置过程,确保你的 CSV 数据被正确格式化以便进行 XML 转换。

实践:将 CSV 转换为 XML

为演示该转换器的能力,我们使用一个简单示例。在此场景中,产品信息存储在一个 CSV 文件(逗号分隔值)中,需要转换为 XML 消息。

集成流 Modeling Basic - CSV to XML Converter 的结构如下:

  1. 输入数据:包含产品详细信息的 CSV 文件。

  2. 处理:CSV 到 XML 转换器处理数据并将其映射为 XML 格式以供后续使用。

  3. 输出数据:一条结构化的 XML 消息准备就绪。

示例场景如何工作?

  1. 接收数据:

  • 集成流首先通过 HTTPS 适配器接收一条消息。

  • 该消息包含一个带有产品信息的文本文件。

  1. 理解数据结构:

  • 行的第一行包含参数名称,它们定义了数据的结构。

  • 后续每一行都包含遵循这些参数的产品详细信息。

选择 XSD 文件

为确保将 CSV 数据正确映射到 XML,需要一个 XSD(XML Schema Definition)文件。该文件定义 XML 输出的结构。

  • 选择 Select 按钮,从你的本地系统上传一个 XSD 文件。

  • 上传后,该 XSD 文件会被添加到集成流的资源中。

定义 XML 结构

CSV 文件中的每一行代表一个产品条目。要在 XML 中正确组织这些数据:

  • XPath 表达式 Products/Product 用作 XSD 中的 Path to Target Element。

  • 这确保每个产品条目都放置在 根元素内的一个 节点中。

按类别筛选数据

仅包含来自 Notebooks 类别的产品。

配置 CSV 格式

  • CSV 数据字段由分号( ; )分隔。

  • 为匹配此格式,CSV 中的 Field Separator 设置为 Semicolon ( ; )。

处理表头

CSV 文件中的第一行包含列名,而不是实际的产品数据。为防止它被转换为一个 XML 条目,启用了 Exclude First Line Header 选项。这确保只处理实际数据。

将 CSV 值映射到 XML 元素

为将值正确分配给对应的 XML Elements,从下拉菜单中选择了 Configure CSV Headers to match the XSD Elements 选项。这会将 CSV 列标题映射到 XSD 结构中相应的元素。

一旦 CSV 数据成功转换为 XML,消息主体的结构如下所示。

按照这些步骤,你可以成功地将结构化 CSV 数据转换为格式良好的 XML 消息。

CSV 到 XML 转换器

业务场景

通过在集成流中使用 CSV 到 XML 转换器来理解 CSV 到 XML 转换器

任务流程

在本练习中,你将执行以下任务:

  1. 创建一个带 CSV 到 XML 转换器的集成流。

  2. 配置 CSV 到 XML 转换器。

先决条件

  • 你可以访问 SAP Integration Suite 和 Cloud Integration。

  • 对 CSV 和 XML 文件格式有基本了解。

  • 理解 XSD(XML Schema Definition)文件如何定义 XML 结构。

练习成果

完成本练习后,你将成功地将一个 CSV 文件转换为结构化的 XML 格式,配置 XSD 文件以定义 XML 结构,将 CSV 表头映射到相应的 XML 元素,并应用筛选以按类别处理数据。

你将从这个练习中学到什么?

通过本练习,你将获得以下方面的知识:

  • 数据转换 - 理解如何为不同格式组织数据。

  • XML 配置 - 使用 XSD 文件定义 XML 结构。

  • 数据筛选 - 应用基于类别的筛选以提取相关记录。

  • 集成流 - 理解如何将 CSV 数据转换为 XML 以实现系统集成。

这个动手练习为你处理企业应用程序和集成中的结构化数据做好准备。

ExerciseStart Exercise(SAP 官方交互式练习)

设置认证以发送消息

业务场景

你希望通过 POST 方法向你的集成流发送一条消息。

任务流程

在本练习中,你将执行以下任务:

  1. 使用所有需要的环境变量设置 SAP Business Application Studio。

  2. 向你的集成流发送一条消息。

先决条件

  • 你可以访问 SAP Integration Suite 和 Cloud Integration。

  • 你有一个可正常运行且已部署的 CSVtoXML 集成流。

  • 你有一个可正常运行且已部署的 Generic Receiver 集成流。

  • 你可以访问 SAP Business Application Studio。

  • 你的账户已设置使用 clientID 和 clientsecret 进行认证。

注意

如果你的子账户中没有设置 clientID 和 clientsecret,请参阅使用 clientsecret 和 clientid 进行基本认证以处理集成流文档。

注意

如果你使用的是 SAP BTP 试用账户,则需要先设置 SAP Business Application Studio。有关更多信息,请参阅设置 SAP Business Application Studio 教程。

练习成果:

完成本练习后,你将能够成功通过 SAP Business Application Studio 向你设置的 Generic Receiver 和 CSVtoXML 集成流发送一条消息。

你将从这个练习中学到什么?

通过本练习,你将获得以下方面的知识:

  • 使用所提供的 Postman 集合。

  • 设置 SAP Business Application Studio 以发送认证信息。

  • 在 SAP Integration Suite 中向你的集成流发送一条消息。

这个动手练习为你使用 SAP Business Application Studio 和 Postman 集合来验证你的集成流正常工作做好准备。

任务 1:在 SAP Business Application Studio 中设置你的 Dev Space

步骤

  1. 设置 SAP Business Application Studio 并创建一个专用的 Dev Space 用于开发。SAP Business Application Studio 中的 Dev Space 是一个隔离的、预配置的开发环境,提供构建和运行 SAP 应用程序所需的所有工具、运行时和扩展。

注意

如果你使用的是 SAP BTP 试用账户,需要先启用并订阅 SAP Business Application Studio。请查看设置 SAP Business Application Studio 教程。

  1. 点击 Instances and Subscriptions。搜索 SAP Business Application Studio 应用程序并点击它。

  2. SAP Business Application Studio 会在新标签页中打开。点击 Create Dev Space

  3. 现在,为你的 Dev Space 输入一个名称。向下滚动并选择 Basic,然后点击右下角的 Create Dev Space 进行确认。

  4. 等待你的 Dev Space 达到 Running 状态,然后点击它以打开。

  5. 在 SAP Business Application Studio 中创建一个文件,通过组合所需的凭据和密钥来配置授权,从而能够在需要时生成新的 bearer token。

  6. 现在我们在 SAP Business Application Studio Dev Space 的概览页面上。我们想创建一个文件来生成 bearer token 以供后续授权使用。点击左上角的汉堡菜单,选择 FileNew File...

  7. 将新文件命名为 GetToken.http 并按回车。然后点击 OK 确认。

  8. 你新建的文件会在编辑器视图中打开。将以下代码粘贴到编辑器中。我们将在接下来的步骤中填写 Token URLAuth Client Credentials

### Request OAuth Token
POST <Token URL>
Authorization: Basic <Auth Client Credentials>
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
  1. 现在我们需要获取 SAP Integration Suite 的 ClientID、Client Secret 和 Token URL。导航到你的 SAP BTP 子账户的驾驶舱(cockpit)。转到 Instances and Subscriptions,找到 default_integration_flow 实例。点击 3 keys 查看凭据。

  2. 选择 Form 视图。在这里你可以找到后续步骤所需的 clientIDclientsecrettokenurl。你可以让 Credentials 标签页保持打开,并在需要时返回查看。

  3. 现在我们想将 clientIDclientsecret 合并为一个 Base64 编码的字符串。这将作为 <Auth Client Credentials> 的值。导航回你的 SAP Business Application Studio Dev Space。点击汉堡菜单并打开 Terminal**New Terminal

  4. 在终端中,输入以下代码。然后用前面步骤中相应的凭据替换 <clientID><clientsecret>。按 enter。你将收到一个包含数字和字母的长字符串。复制这个新字符串,并将其粘贴到你的 GetToken.http 文件中,以替换 <Auth Client Credentials>

echo -n '<clientID>:<clientsecret>' | base64
  1. POST 旁边输入 token URL,然后点击 Send Request。如果一切正常,你会得到响应代码 200 OK,并会在响应文件中找到刚刚生成的 bearer/access token。在接下来的练习中,我们将需要这个 access token 来向集成流发送 HTTP 请求。此令牌将在几分钟后过期,因此请记住,你需要在一段时间后重复此步骤以获取新的令牌。

向 CSV_to_XML 集成流发送一条消息

业务场景

理解使用 SAP Business Application Studio 和 Postman 集合向你的集成流发送消息的概念。

任务流程

在本练习中,你将执行以下任务:

  1. 检查并验证你的集成流中已正确设置 HTTPS 适配器地址。

  2. 向你的集成流发送一条消息。

先决条件

  • 你可以访问 SAP Integration Suite、Cloud Integration 和 SAP Business Application Studio。

  • 你有一个可正常运行且已部署的 CSVtoXML 集成流。

  • 你有一个可正常运行且已部署的 Generic Receiver 集成流。

练习成果

完成本练习后,你将成功通过 SAP Business Application Studio 向你的 Generic Receiver 和 CSVtoXML 集成流发送一条消息。

你将从这个练习中学到什么?

通过本练习,你将获得以下方面的知识:

  • 使用所提供的 Postman 集合。

  • 在 SAP Integration Suite 中向你的集成流发送一条消息。

这个动手练习为你使用 SAP Business Application Studio 和 Postman 集合来验证你的集成流正常工作做好准备。

任务 1:发送和接收消息

步骤

  1. 确保 Generic_Receiver 集成流和 CVStoXML 集成流均已部署。将日志级别设置为 Trace

  2. 在你的 SAP Integration Suite 账户中,导航到 Integrations and APIs 和最近创建的 Basic_Modeling 包。检查你的 Generic_Receiver 集成流,确保它仍处于部署状态。

  3. 导航到你的 CVS_to_XML 集成流并打开它。检查部署状态,然后点击 Navigate to Manage Integration Content

  4. 将日志级别设置为 Trace,稍后我们进行监控时会用到。再次部署你的集成流,然后导航回 Manage Integration Content 页面。在那里你会看到端点地址。我们将需要这个地址来通过 SAP Business Application Studio 向该集成流发送消息。你可以将其复制粘贴到编辑器中,或者让标签页保持打开,稍后再回来复制。

注意

部署后,集成流的端点地址可能需要一些时间才会出现。如果还看不到,请等待几分钟后再检查。

  1. 现在我们来看一下 Postman 集合。下载名为 ModelingBasics.postman_collection.zipPostman 集合 并解压。现在你就有了一个 .json 文件。

  2. 双击该 .json 文件将其打开。这个 Postman 集合包含若干组数据。对于本练习,我们要使用 CsvToXml 数据集。打开搜索栏并搜索 csvto。你会看到 CsvToXml 数据集部分。对于我们的练习负载,我们需要 raw 部分之后的内容。你可以将其复制粘贴到编辑器中,或者让文件保持打开,稍后再回来查看。

注意

确保只复制引号内的文本。

  1. 在 SAP Business Application Studio 中创建一个新的 .http 文件,并将消息内容添加到其中。然后使用此文件向集成流发送消息请求。

  2. 创建一个 .http 文件以向你的集成流发送消息。导航到你在 SAP Business Application Studio 中最近创建的 dev space。点击左上角的汉堡菜单,然后点击 FileNew File...

  3. 将其命名为 CSVtoXML.http 并按回车。再次点击 OK 确认。

  4. 你的 .http 文件现已创建并打开。将以下代码粘贴到编辑器中。我们将在接下来的步骤中填写 <Endpoint URL><Bearer Token><PAYLOAD>

### Send Message to Iflow
POST <Endpoint URL>
Authorization: Bearer <Bearer Token>
<PAYLOAD>
  1. 将我们从 Postman 集合 .json 文件中选择的内容复制粘贴到 <PAYLOAD> 部分。(完全替换 <PAYLOAD> 文本。)

  2. 该负载仍包含一些需要删除的换行符,以便 CSV 内容格式正确。我们使用编辑器的搜索和替换功能来完成此操作。使用 strg+f 打开搜索功能。在搜索栏中输入 \\r\\n|\\n。激活正则模式 .*。在替换区域输入 \n。然后点击 replace all 符号。

  3. 现在你的负载应该看起来像一个块,而不是一个字符串。现在输入你的 CSV_to_XML 集成流的端点地址,并输入你的 bearer token。确保 bearer token 仍然有效。如果无效,请使用你的 GetToken.http 文件创建一个新的。

  4. 现在点击 Send Request 向你的集成流发送消息。如果一切顺利,你将收到 200 OK 响应。

  5. 检查监控以验证消息处理。查看集成流中的负载,并查看一下数据存储。

  6. 返回到你的 SAP Integration Suite 账户,导航到你的 CVS_to_XML 集成流的 Monitor Message Processing 视图。点击 Trace 获取详细的监控视图。

  7. 选择 HTTPS 元素并导航到 Message ContentPayload。在这里你可以看到你发送到集成流的原始负载。

  8. 现在,选择 End 元素并查看负载。你现在可以看到它已被转换为 XML。

  9. 我们的 CVS_to_XML 集成流通过 Generic_Receiver 集成流将负载发送到数据存储。导航到 MonitorIntegration and APIsManage StoresData Stores

  10. 现在你可以看到已创建一个数据存储,并且它具有唯一的 ID 和 Message ID。

映射上下文

理解映射上下文

在实施消息映射之前,理解映射上下文的概念至关重要。映射上下文确保源值被正确分配给目标字段,尤其是当源结构和目标结构在层级级别和出现次数方面存在差异时。

在本概念中,我们将探讨正确设置映射上下文的重要性,以避免数据丢失或错误的映射。

探讨用例

假设有一条传入的 XML 消息,其中包含按如下结构组织的商品分类信息:

我们的目标是将此结构扁平化为一个产品列表,同时将主类别分配为节点属性,结果如下:

实施映射上下文

要实现此转换,请执行以下步骤:

  1. 将源字段 ns1:ProductHierarchy\MainCategory\Product 映射到目标字段 ns1:Products\Product 。

  2. 在映射表达式编辑器中为每个字段适当地设置上下文。

  3. 通过在源字段中选择根节点作为上下文,确保产品列表保持完整。

上下文如何影响输出。

  • 如果上下文设置为 Category ,则只显示第一个类别的产品。

  • 如果设置为 MainCategory ,则只包含第一个主类别的产品。

  • 如果设置为根 ProductHierarchy ,则包含整个产品列表。

实施

现在,我们来看一下集成流中消息映射的实施。理解如何组织和处理消息转换,可确保源字段与目标字段之间的准确数据分配。

示例集成流 Modeling Basics - Mapping Context 遵循结构化的方法:

  1. 接收消息:集成流通过 HTTPS 适配器接收一条传入消息。

  2. 消息映射步骤:消息在映射步骤中经过转换以符合目标结构。

  3. 定义字段映射:映射按如下方式建立: 源字段 ns1:ProductHierarchy\MainCategory\Category\product 映射到目标字段 ns1:Products\Product

在映射表达式编辑器中,你可以单独为源结构中的每个字段定义上下文。为确保目标结构包含完整的产品列表,必须正确设置消息上下文。这通过在源字段的上下文菜单中选择消息根节点作为上下文来完成。

理解上下文设置背后的原理

要理解为什么需要此设置,让我们分析消息处理的行为:

  1. 消息导入和上下文分隔 XML 实例在目标字段映射生效之前被导入处理队列。队列内的上下文变化决定了数据的分组方式。

  2. 根节点生成 创建根节点 ns1:products。

  3. 将值映射到目标结构 在当前上下文中,值被映射到目标节点 ns1:Products\Product

  4. 上下文关闭和完成 一旦第一个上下文处理完毕,它便连同目标结构中的 ns1:Products 上下文一起关闭。当目标结构中的所有字段都处理完毕后,转换即告完成。

上下文选择对输出的影响

如果将产品源字段的上下文设置在类别级别,则只会生成产品列表的一个子集。具体来说,只包含第一个上下文中的产品(由上下文变化分隔)。

这意味着,你在源结构中设置上下文的方式会直接影响结果。

基于上下文选择的示例结果:

  1. 上下文设置为类别级别( ns1:ProductsHierarchy\MainCategory\Category\Product = Category )。 创建字段映射时的这一默认设置会导致只包含第一个类别的产品,例如 Multifunction Printers:

<?xml version="1.0" encoding="UTF-8"?>
<ns0:Products xmlns:ns0="http://demo.sap.com/mapping/context">
<Product MainCategory="Printers and Scanners">Multi Print</Product>
<Product MainCategory="Printers and Scanners">Multi Color</Product>
</ns0:Products>
  1. 上下文设置为主类别级别( ns1:ProductHierarchy\MainCategory\Category\product = MainCategory )。 此设置包含第一个主类别(printers, and Scanners)内的所有产品:

<?xml version="1.0" encoding="UTF-8"?>
<ns0:Products xmlns:ns0="http://demo.sap.com/mapping/context">
<Product MainCategory="Printers and Scanners">Multi Print</Product>
<Product MainCategory="Printers and Scanners">Multi Color</Product>
<Product MainCategory="Printers and Scanners">Power Scan</Product>
<Product MainCategory="Printers and Scanners">Photo Scan</Product>
</ns0:Products>
  1. 上下文设置为根级别( ns1:ProductHierarchy\MainCategory\Category\product = ns1:ProductHierarchy )。 选择根上下文可确保包含完整的产品列表。

使用 useOneAsMany 函数进行映射

要映射 MainCategory 属性(位于 ns1:Products\product 中),需应用标准函数 useOneAsMany。此函数确保主类别名称被正确复制。

  • 第一个参数:指定要传递给目标的值(在本例中为 MainCategory 节点的 Name 属性)。

  • 第二个参数:确定该值在目标中应重复的次数。

  • 第三个参数:定义目标中的上下文变化。

第二个和第三个参数均派生自源字段 ns1:ProductHierarchy\MainCategory\Category\Product。通过仔细设置上下文,你可以控制数据的分组和处理方式,确保转换结果准确。

要将适当的主类别名称正确分配给产品,MainCategory 节点的 Name 属性和 Product 字段的上下文都必须设置为 MainCategory

标准函数 useOneAsMany 的输出必须在每个值之后包含上下文变化。否则,第二个和第三个产品将分别被错误地分配给 Computer SystemsComputer Components 主类别,而其余产品的 MainCategory 属性将为空。

为防止此问题,我们在产品源字段与第三个输入参数之间插入标准函数 splitByValue,并使用 Context Change on Each Value 选项。如前所述,第三个参数决定目标结构中的上下文变化。

useOneAsMany 函数的消息队列如下所示。它显示主类别 Printers and Scanners 会重复,直到第二个输入参数中发生上下文变化。根据上下文设置,此变化会在主类别切换时正确发生。

获取更多信息,请参阅:

  • 将消息映射创建为流步骤

  • 设置映射上下文

  • 将消息映射创建为流步骤

映射上下文

业务场景

通过在集成流中使用 Mapping 工件来理解映射上下文,以确保源值被正确分配给目标字段,尤其是当源结构和目标结构在层级级别和出现次数方面存在差异时。

任务流程

在本练习中,你将执行以下任务:

  1. 创建一个带消息映射的集成流。

  2. 在集成流中配置映射。

先决条件

  • 你可以访问 SAP Integration Suite 和 Cloud Integration。

  • 对消息映射有基本了解。

练习成果

完成本练习后,你将学会如何设置和应用映射上下文,以确保正确的数据转换、防止数据丢失,并在消息映射中准确地将源值分配给目标字段。

你将从这个练习中学到什么?

通过本练习,你将获得以下方面的知识:

  • 理解映射上下文:映射上下文如何影响数据转换,并确保将源值正确分配给目标字段。

  • 上下文设置及其影响:不同的上下文级别(Category、MainCategory、Root)如何影响输出的结构和完整性。

  • 应用标准函数:如何使用 useOneAsMany 和 splitByValue 来正确处理数据复制和上下文变化。

  • 确保准确的数据映射:通过正确设置映射上下文来防止错误分配和缺失值的最佳实践。

  • 实施消息映射:在集成流中定义字段映射和处理消息转换的分步指导。

在本练习结束时,你将能够自信地应用映射上下文设置,以在消息映射中实现准确而完整的数据转换。

ExerciseStart Exercise(SAP 官方交互式练习)

发送消息并检查集成流

业务场景

了解如何使用 SAP Business Application Studio 和所提供的 PostmanCollection 来验证集成流的正确性。

任务流程

在本练习中,你将执行以下任务:

  1. 检查集成流的部署状态。

  2. 在 SAP Business Application Studio 中设置测试环境并创建测试请求。

先决条件

  • 可以访问 SAP Integration Suite 和 Cloud Integration。

  • 对消息映射有基本了解。

  • 可以访问 SAP Business Application Studio,以便向你的集成流发送消息。

练习成果

你将能够使用 SAP Business Application Studio 自信地测试和验证你的集成流,确保它们行为正确、按预期处理数据,并在各种场景中返回正确的响应。

你将从这个练习中学到什么?

通过本练习,你将能够:

  • 了解如何使用 SAP Business Application Studio 进行 API 测试。

  • 为你的集成流创建并执行测试用例。

  • 识别并修复集成逻辑中的问题。

  • 在生产环境中部署或维护集成流。

任务 1:检查集成流的部署状态

步骤

  1. 确保 Generic_Receiver 集成流和 Mapping_Context 集成流均已部署。将日志级别设置为 Trace

  2. 在你的 SAP Integration Suite 账户中,导航到 Integrations and APIs 和最近创建的 Basic_Modeling 包。检查你的 Generic_Receiver 集成流,确保它仍处于部署状态。

  3. 导航到你的 Mapping_Context 集成流并打开它。检查部署状态,然后点击 Navigate to Manage Integration Content。将日志级别设置为 Trace,稍后我们进行监控时会用到。再次部署你的集成流,然后导航回 Manage Integration Content 页面。在那里你会看到端点地址。我们将需要这个地址来通过 SAP Business Application Studio 向该集成流发送消息。你可以将其复制粘贴到编辑器中,或者让标签页保持打开,稍后再回来复制。

  4. 转到我们在上一个练习中下载的 Postman 集合 .json 文件。双击该 .json 文件将其打开。对于本练习,我们要使用 MappingContext 数据集。打开搜索栏并搜索 mapping。查看一下 MappingContext 数据集部分。在这种情况下,我们不打算将其复制到 .http 文件中。此例中删除换行符的清理过程更为繁琐。为节省时间,你可以从这里复制已格式化的 XML 负载:

<?xml version="1.0" encoding="UTF-8"?>
<ns0:ProductHierarchy xmlns:ns0="http://demo.sap.com/mapping/context">
<MainCategory Name="Printers and Scanners">
<Category Name="Multifunction printers">
<Product>Multi Print</Product>
<Product>Multi Color</Product>
</Category>
<Category Name="Scanners">
<Product>Power Scan</Product>
<Product>Photo Scan</Product>
</Category>
</MainCategory>
<MainCategory Name="Computer systems">
<Category Name="Computer system accessories">
<Product>Notebook Lock</Product>
<Product>USB Stick 1 GB</Product>
<Product>USB Stick 2 GB</Product>
<Product>Web cam reality</Product>
</Category>
<Category Name="Notebooks">
<Product>Notebook Basic 15</Product>
<Product>Notebook Pro 15</Product>
</Category>
<Category Name="PCs">
<Product>Gaming Monster</Product>
<Product>Gaming Monster Pro</Product>
</Category>
</MainCategory>
<MainCategory Name="Computer components">
<Category Name="Graphic cards">
<Product>Hurricane GX</Product>
<Product>Gladiator MX</Product>
</Category>
<Category Name="Telecommunication">
<Product>Modem Hyper Speed</Product>
<Product>ADSL progress T1</Product>
<Product>ISDN direct</Product>
</Category>
</MainCategory>
</ns0:ProductHierarchy>

注意

你也可以在 GitHub 上找到此代码块,以便更轻松地复制。

  1. 在 SAP Business Application Studio 中创建一个新的 .http 文件,并将消息内容添加到其中。然后使用此文件向集成流发送消息请求。

  2. 导航到你在 SAP Business Application Studio 中最近创建的 dev space。点击左上角的汉堡菜单,然后点击 FileNew File...

  3. 将其命名为 MappingContext.http 并按回车。再次点击 OK 确认。

  4. 你的 .http 文件现已创建并打开。将以下代码粘贴到编辑器中。我们将在接下来的步骤中填写 <Endpoint URL><Bearer Token><PAYLOAD>

### Send Message to Iflow
POST <Endpoint URL>
Authorization: Bearer <Bearer Token>
<PAYLOAD>
  1. 将已格式化的 XML 内容复制粘贴到 <PAYLOAD> 部分。(完全替换 <PAYLOAD> 文本。)

  2. 现在输入你的 Mapping_Context 集成流的端点地址,并输入你的 bearer token。确保 bearer token 仍然有效。如果无效,请使用你的 GetToken.http 文件创建一个新的。

  3. 点击 Send Request 向你的集成流发送消息。如果一切顺利,你将收到 200 OK 响应。响应文件还会向你显示集成流映射后 XML 文件的样子。

  4. 检查监控以验证消息处理。查看集成流中的负载,并查看一下数据存储。

  5. 返回到你的 SAP Integration Suite 账户,导航到你的 Mapping_Context 集成流的 Monitor Message Processing 视图。点击 Trace 获取详细的监控视图。

  6. 选择 Message Mapping 元素并导航到 Message ContentPayload。在这里你可以看到你发送到集成流的原始负载。

  7. 现在,选择 End 元素并查看负载。你现在可以看到负载已被转换。

  8. 我们的 Mapping_Context 集成流通过 Generic_Receiver 集成流将负载发送到数据存储。导航到 MonitorIntegration and APIsManage StoresData Stores

  9. 现在你可以看到已创建一个数据存储,并且它具有唯一的 ID 和 Message ID。

使用定时器发送消息

使用定时器和内容修饰符替代 HTTP 客户端

在前面的练习中,我们使用 SAP Business Application Studio 作为 HTTP 客户端向集成流发送消息。这需要在 SAP Business Application Studio 中设置认证,并在集成流中使用发送方元素。

如果你只是想快速测试集成流的功能,可以使用一个定时器元素和一个包含负载的内容修饰符来模拟进入集成流的消息。例如,当你尚未确定消息的发送来源,或者只需要一个无需设置 SAP Business Application Studio 或其他任何 HTTP 客户端的快速解决方案时,这会很有用。

  1. 从你的集成流中移除发送方元素。点击发送方,然后选择垃圾桶符号。

  2. 向你的集成流中添加一个 Content Modifier 元素。

  3. 双击 Content Modifier 元素。在菜单中,选择 Message Body 标签页。在这里,我们将负载添加到 Body 字段中。确保该负载的格式适合你的集成流。如果不适合,可能需要进一步的映射步骤。对于此示例,我们使用 CSVtoXML 示例负载,因为我们正在处理 CSV 到 XML 转换器集成流。同时检查 Type 是否设置为 Constant 。

  4. 现在添加一个 Timer 元素。你可以更改它的名称,但对于我们的集成流示例来说,无需进一步编辑。这样,Timer 元素会在我们每次部署时触发集成流。

  5. 由于我们已经在使用 Timer 元素,我们需要移除默认存在的 Start 元素。只需点击它,然后选择垃圾桶符号。

  6. 保存你的集成流。部署它。然后检查监控,看看一切是否正常。

本课其余配图

rev_21_U4_L09_01

rev_21_U4_L09_9_47

rev_21_U4_L09_9_48

rev_21_U4_L09_9_49

rev_21_U4_L09_9_50

01-bas

02-bas

03-bas

04-bas

06-bas

07-bas

09-bas

11-bas2

60-bas

12-bas

13-bas

14-bas

16-bas

17-bas

18-bas

postman-bas

19-bas

20-bas

21-bas

22-bas

22b-bas

23-bas

24-bas

25-bas

26-bas

27-bas

28-bas

29-bas

30-bas

rev_21_U4_L09_9_76

rev_21_U4_L09_9_77

rev_21_U4_L09_9_78

rev_21_U4_L09_9_79

rev_21_U4_L09_9_80

rev_21_U4_L09_9_81

rev_21_U4_L09_9_82

rev_21_U4_L09_9_84

rev_21_U4_L09_9_83

rev_21_U4_L09_9_85

32-bas

33-bas

20-bas

50-bas

22-bas

52-bas

42-bas

43-bas

29-bas

44-bas

timer01

timer02

timer06

timer04

timer05