跳到主要内容
← 返回博客

本文涉及的模块: Integration Flow Helper

在 SAP CPI 中使用 Externalize Parameters、复制步骤设置并从 SAP Business Accelerator Hub 导入 API

一步把固定地址变成 {{parameters}},把步骤的设置复制到另一个 iFlow,把 OData 查询保存为模板,从 Hub 导入 API,用示例检查 XPath,并整理映射表达式。

在 SAP Cloud Integration(SAP CPI)的 iFlow 中,最耗时的工作往往不是逻辑本身,而是:在三个 tenant 中输入同一个接收方地址,把十行 Content Modifier 从一个 iFlow 手动抄到另一个,重新拼出上个月写过的 OData 查询,或者仅仅为了知道某个实体集的字段而下载 API 规范。

现在,Kitegra 的 Helper 在 SAP Integration Suite 设计器旁为每一件事都提供了工具:Externalize Parameters、带 OData 查询模板的步骤设置复制粘贴、从 SAP Business Accelerator Hub 导入、用示例负载检查 XPath,以及整理 Message Mapping 表达式。本文介绍每个工具做什么、何时会更改您的 iFlow,以及它会保存什么。

一步完成 Externalize Parameters

如果地址直接写在接收方通道中,每次 iFlow 从 DEV 迁移到 QA、再到 PROD,都得修改 iFlow 本身。SAP 的解决办法是外部化参数:字段中写 {{Receiver_OData_Address}},值在每个 tenant 的 Configure 中设置。Externalize Parameters 替您完成这些输入。

打开一个 iFlow,在 SAP 中点击 Edit,然后在 Kitegra 菜单中选择 Externalize Parameters。面板会列出通常因 tenant 而异的固定值:

  • 地址:URL、主机、端点、路径、目录和 WSDL。除代理地址以及 ProcessDirect 或 JMS 地址外,这些都已预先勾选。
  • 其他值:队列和 Data Store 名称、OData 路径和查询、超时、凭据名称和别名,以及端口。
  • Content Modifier 和 Write Variables 表格中的常量。

每个值都会得到一个由参与方和字段组成的建议名称,例如 Receiver_OData_Address,您可以修改它。已经是 {{…}} 或 ${…} 的值会如实标出。点击外部化,勾选的字段就会成为当前 iFlow 中的参数。在您于 SAP 中保存 iFlow 之前,什么都不会保存。

运行之后,撤销可以恢复之前的值,复制当前值会把每个参数连同它替换掉的值一起复制下来:部署后,SAP 会在 Configure 中要求填写每个值,您把它们粘贴进去即可。每个 iFlow 会保留最近十次运行以供撤销。当接收方地址直接写在 iFlow 中时,iFlow Inspector 的设计检查会指向这个工具。

把步骤的设置复制到另一个步骤或 iFlow

在 Kitegra 菜单中选择步骤设置复制粘贴,在图表上选择一个步骤(或在面板中选择),然后点击复制设置。复制内容包括该步骤的头、交换属性和适配器字段。面板会按从新到旧的顺序保留最近十份复制,涵盖此浏览器中的所有 tenant 和 iFlow。

要粘贴时,在 SAP 中点击 Edit,选择目标步骤,然后点击粘贴到…。写入之前,面板会列出将要更改的字段。每个表格可以选择保留、追加行(只添加缺少的复制行)或替换行。复制内容只能粘贴到同类步骤中,但可以粘贴到另一个 iFlow;EDMX 路径和脚本字段除外,因为它们指向来源 iFlow 中的文件。撤销会恢复上一次粘贴所做的更改。

OData 查询模板

同一个面板中还有 OData 查询模板。选择一个已构建好查询的 OData 接收方通道,点击将查询保存为模板并命名。模板会保存操作、资源路径以及 $select、$filter 和 $expand 等查询选项。之后在编辑模式下,选择另一个 OData 接收方并点击应用即可。用已有名称保存会替换该模板。关于这些选项本身,请参见 OData 接收方查询选项。

复制内容和模板保存在此浏览器的扩展存储中,不会同步到您的 Kitegra 账户,也不会发送到任何地方。

从 SAP Business Accelerator Hub 导入 API

Helper 会根据 EDMX 提示 OData 实体集和字段,根据 OpenAPI 文件提示 HTTP 路径。有了 Hub 导入,您不再需要先下载这个文件。在扩展的弹出窗口中,打开某个 iFlow 的示例负载和 API 规范页面,找到从 SAP Business Accelerator Hub 导入。

  1. 第一次使用时,点击允许访问:浏览器会请求一次对 api.sap.com 的访问权限。在您同意之前,Kitegra 没有这项权限。
  2. 搜索一个 API,例如 API_PRODUCT_SRV。搜索无需登录。
  3. 点击导入。下载规范需要您在此浏览器中登录 api.sap.com;如果尚未登录,面板会提示您并打开 Hub。

之后,OData API 的实体集和字段会在该 iFlow 中没有自己 EDMX 的 OData 接收方中提示。REST API 的路径会在 HTTP 字段中提示,就像您加载了文件一样,详见OpenAPI 和 Postman 一文。规范按 iFlow 保存,只在此浏览器中,最大 8 MB,点击移除即可删除。

用示例负载检查 XPath

只要为 iFlow 保存了示例负载,Helper 就已经会根据它提示 XPath 路径。现在它还会检查您输入的 XPath。如果示例中没有任何节点匹配,字段下方会出现警告「示例负载中没有与此 XPath 匹配的节点。」;如果有匹配,一行提示信息会显示找到的值。

检查范围包括 Content Modifier 头和属性中的 XPath 行、Write Variables、XML Router 条件以及 XPath 拆分器。只有当保存的示例确实就是到达该步骤的内容时才会运行:XML 示例,且之前的步骤都不改变消息体;或者 JSON 示例,且之前只经过一个 JSON to XML Converter。在 Local Integration Process、Exception Subprocess 中,以及对用 ${…} 或 {{…}} 构建的 XPath,它不会提示,所以一旦出现警告,就说明确实不匹配。

整理 Message Mapping 表达式

一个包含十几个函数的 Message Mapping 表达式,很快就会变成一团交叉的连线。现在,在表达式画布上 SAP 自己的按钮旁边多了一个整理按钮。它会把节点从源字段到目标依次排开。在编辑模式下,保存会保留布局,旁边的撤销按钮可以恢复原样;在查看模式下,它只帮助您阅读,SAP 重新绘制表达式时布局就会消失。不会向 SAP 保存或发送任何内容。iFlow 图表也有自己的整理按钮,在编辑模式下可用,并支持撤销。

iFlow 中会改变什么

Externalize Parameters、粘贴和应用模板会写入设计器中当前打开的 iFlow,仅在编辑模式下进行,设计器会把 iFlow 显示为已更改。它们从不保存或部署:您在 SAP 中保存,或点击 Discard 放弃更改。这些工具都可以在选项页面的「工具」下单独关闭,关闭后会立即从设计器中消失。Externalize、步骤复制粘贴和 Hub 导入属于付费套餐,Free 中也可使用几次;XPath 检查和整理是免费的。Kitegra 上线期间,所有工具向所有已登录用户开放。比较各套餐。

在下一个 iFlow 中试试

了解 Kitegra 为 SAP Integration Suite 设计器增加了哪些功能,或者看看您点击 Deploy 之后它会做什么。

常见问题

如何在 SAP CPI 中外部化接收方地址?

在 SAP 中点击 Edit,从 Kitegra 菜单打开 Externalize Parameters,保持地址勾选,确认其名称后点击「外部化」。保存 iFlow,然后在每个 tenant 的 Configure 中设置值;「复制当前值」会提供需要粘贴的旧值。

可以把 Content Modifier 的行复制到另一个 iFlow 吗?

可以。复制该步骤的设置,以编辑模式打开另一个 iFlow,选择一个 Content Modifier 并粘贴。选择「追加行」只添加缺少的行,或选择「替换行」。

Hub 导入需要 api.sap.com 账户吗?

搜索不需要账户。下载规范需要您在同一浏览器中登录 api.sap.com。

我的步骤复制和模板会同步吗?

不会。它们保存在此浏览器的扩展存储中,从不发送到任何地方。

这些工具会保存或部署我的 iFlow 吗?

不会。这些工具只在编辑模式下写入当前打开的 iFlow;由您在 SAP 中保存,或放弃更改。

无需离开设计器即可处理 iFlow

将 Kitegra 添加到 Chrome 或 Microsoft Edge。免费开始,无需账户。