SAP Cloud Platform Integration (CPI),通常与早期的本地版本SAP Process Integration (PI)相提并论,是当今互联数字世界中企业高效运营的关键工具。它充当不同应用程序、系统和数据源之间的桥梁,促进无缝通信和数据集成,确保端到端的业务流程和谐运作。有研究表明,有效投资SAP CPI/PI解决方案,可将企业生产力提高40%,并将相关运营成本降低30%。它是现代数字企业的支柱,能够实现精简的工作流程、流程自动化和增强的客户体验。SAP也正在大力投资并持续为其添加新功能。
一、SAP CPI/PI的核心概念与架构
用户通过指定的URL、用户ID和密码访问SAP CPI系统租户。系统的主界面主要分为三个核心工作区域:发现 (Discover)、设计 (Design) 和 监控 (Monitoring)。
- 发现 (Discover): 此区域包含了由SAP官方开发和提供的预打包集成内容。这些内容以“包(Package)”的形式组织,每个包内都包含大量针对标准业务场景的、预定义的集成流(iFlows)。用户可以根据需要直接使用或作为模板进行参考。SAP会持续更新和添加新的预打包内容。
- 设计 (Design): 这是集成开发者实际进行开发工作的区域。用户可以在此区域对从“发现”区复制过来的标准iFlow进行定制化修改,或者创建全新的、自定义的iFlow。
- 监控 (Monitoring): 集成专家和运维人员使用此区域来检查消息流的健康状况,了解消息的传输路径、处理状态和可能出现的错误。
此外,还有一个设置 (Setting)区域,用于租户(即CPI服务器或系统本身)和传输相关的配置。在实际项目中,此区域使用频率较低,大多数普通用户也没有访问权限。
集成流 (iFlows) 是CPI中的核心集成工件。iFlows通常被组织在包 (Package)中,一个包就是一个用于分组管理类似iFlows的文件夹。在进行自定义开发时,需要先创建一个包,然后才能在包内创建iFlow。在不同环境间传输iFlow时,也需要先传输包,再传输iFlow。创建新iFlow时,用户可以选择创建一个通用的集成流,或者直接创建一个基于REST API或SOAP API的iFlow,后者会提供一个包含基本连接器和结构的初始流框架。
二、解构集成流程 (Integration Process)
SAP CPI的设计区域,是用户构建和修改集成流程的可视化画布。
- 发送方和接收方 (Sender and Receiver): 在iFlow的设计视图中,左侧通常代表发送方(或参与者),右侧代表接收方。
- 集成流程 (Integration Process): 这是创建iFlow时自动出现的中心处理框。所有集成步骤和功能(即从调色板中拖拽的组件)都必须放置在此集成流程的内部。
- 本地集成流程 (Local Integration Process): 与主集成流程类似,它也可以容纳各种处理步骤。它不能直接放在主集成流程内部,但可以从主流程中通过“流程调用(Process Call)”步骤来调用。它通常用于将一些可复用的、相似的功能或步骤进行分组,以提高iFlow的可读性和可维护性。
- 异常子流程 (Exception Subprocess): 用于捕获和处理在主流程执行过程中发生的错误。默认情况下,它包含一个“错误开始(Error Start)”事件和一个“结束消息(End Message)”事件。
- 流程直连适配器 (Process Direct Adapter): 当多个iFlow(例如iFlow 1, 2, 3)需要连接到同一个通用的异常处理子流程iFlow时,通常会使用此适配器。通过在通用的异常处理iFlow的发送方连接器中定义一个共享的、唯一的地址(路径),然后在各个主iFlow的异常处理分支中,使用“流程调用”并指向这个共享地址,即可将错误消息统一传输到这个通用的子流程进行集中处理。
三、消息处理与监控
CPI提供了强大的监控功能,帮助用户跟踪消息状态和排查问题。
- 监控消息处理 (Monitor Message Processing):
- 显示所有集成流在特定时间段内的消息处理总量。
- 可以根据时间范围(如过去1小时、30天)或特定的iFlow进行筛选。
- 可以清晰地看到失败消息和成功完成的消息数量。
- 管理集成内容 (Manage Integration Content):
- 显示所有已部署的iFlows及其当前状态(“已启动”表示已成功部署并正在运行)。
- 提供每个iFlow的部署详情,包括部署时间、部署者、iFlow ID和包名称。
- 端点 (Endpoint): 每个通过HTTP适配器暴露的iFlow,在部署后都会生成一个唯一的HTTP端点URL。这个URL需要提供给发送方系统,用于调用此iFlow。
- 取消部署 (Undeploy) vs. 删除 (Delete):
- 取消部署: 停用系统中的iFlow。iFlow的配置仍然保留在服务器上,但不再运行或接收消息。可以随时重新部署以激活它。
- 删除: 彻底地、物理地删除整个iFlow。在云环境中,一旦删除,通常无法恢复。
- 日志级别 (Log Levels) 与消息查看:
CPI提供了不同的日志级别,用于控制系统记录消息处理过程的详细程度。
- 无 (None): 不记录任何消息处理细节。
- 信息 (Info) (默认): 仅当发生错误时,才会记录错误详情和相关步骤。成功消息不记录详细步骤。建议在生产环境中使用此模式,以避免数据库被大量日志填满。归档的消息会被保留。
- 调试 (Debug): 可以查看消息处理的详细步骤,无论是成功还是错误消息,但不显示消息的有效载荷(Payload)内容。在存储空间有限的项目中常用。
- 跟踪 (Trace): 显示消息处理的详细步骤,并包含有效载荷(Payload)内容。此模式非常适用于测试和调试阶段,特别是需要查看数据在处理过程中的具体内容时。但需要注意,跟踪模式下的数据通常只捕获并保留很短时间(例如10分钟),之后将无法再看到载荷内容。对于大量数据的接口,长时间开启跟踪模式可能会很快耗尽系统内存。
在跟踪模式下,要查看特定步骤处理后的载荷内容,通常需要点击该步骤的下一步,然后在其“消息内容”标签页中查看,因为它显示的是前一步骤的输出(即当前步骤的输入)。
- 错误处理与消息终止:
- 终止消息 (Terminate Message): 这是一个流程步骤,用于在CPI内部主动停止整个集成流,而不将消息发送到接收方系统。当满足某些特定业务条件,且不应继续处理消息时使用。
- 异常子流程中的错误处理事件: 在异常子流程中,有几种不同的“结束事件”,它们的行为各不相同,这是常见的认证考点。
- 错误结束 (Error End): 若流程进入此事件,消息在CPI监控中将显示为失败(Failed),后续步骤将停止执行,并且发送方系统会收到失败通知。大多数项目倾向于使用此方式,因为它能直接在CPI监控中清晰地看到错误。
- 升级结束 (Escalation End): 若流程进入此事件,消息在CPI监控中的状态仍会显示为已完成(Completed),并且后续步骤将继续执行。然而,发送方系统仍将收到错误通知。当需要在发生某种“可接受”的错误时,仍需继续处理消息的场景下非常有用。
- 结束消息 (End Message): 这是异常子流程的默认结束事件。若流程进入此事件,消息在CPI监控中会显示为已完成(Completed),后续步骤将停止执行,并且发送方系统不会收到任何错误通知。
四、数据管理与安全
- 数据存储 (Data Stores):
用于在CPI中临时存储有效载荷(Payload)或特定字段值。主要用于存储“载荷类型的数据”。可以设置数据的保留时间(例如5天、30天、90天),以实现数据的自动清理并释放存储空间。
- 变量 (Variables):
主要用于在CPI中存储“单个字段值”。可以是通用/全局变量(可在不同的iFlow中共享使用),也可以是局部变量(仅在当前iFlow的执行上下文中有效)。
- 安全性 (Security):
CPI中的“管理安全”功能,涵盖了多种安全相关的配置。
- 密钥库 (Key Store): 用于存储数字证书,如用于SSL/TLS通信的公钥和私钥。
- 安全材料 (Security Material): 用于存储连接到目标系统所需的凭据,如用户名和密码。在iFlow的连接器配置中,可以通过一个“别名(Alias)”来引用这些凭据。这样做的好处是实现了凭据的集中式管理:如果后端系统的密码发生变化,只需在此处更新一次,所有引用该凭据别名的iFlows都会自动应用新的密码,而无需修改和重新部署iFlow本身。需要注意的是,凭据本身不会随iFlow一起传输,必须在每个系统环境(开发、质量、生产)中单独创建。
五、核心映射与内容修饰
- 映射功能 (Mapping Functions):
也称消息映射或图形映射,是CPI中用于转换消息结构和内容的核心功能。它通过改变数据容器中的内容来修改数据。
- 主要目的: 实现数据格式的转换、字段的连接、值的计算、格式的调整等。
- 数据格式: 消息映射主要处理XML格式的有效载荷。如果接收到的数据是JSON格式,通常需要先通过一个转换器步骤将其转换为XML,才能进行图形化的映射。较新版本的CPI也支持直接对JSON Schema进行映射,简化了部分流程。
- XSD (XML Schema Definition): 源和目标的数据结构通常使用XSD文件来定义。在实际项目中,XSD文件通常从发送方或接收方系统获取,而非手动创建。
- 标准函数 (Standard Functions): CPI的图形映射器提供了大量预构建的标准函数,如字符串函数(连接、转大小写、去除空格、计算长度)、日期函数(格式转换、日期比较)、算术函数(加、减、乘、除)、布尔逻辑函数(If/Else、And、Or)以及数字格式化函数等。
- 自定义函数 (Custom Functions) / Groovy脚本: 对于标准函数无法满足的复杂转换逻辑,可以在消息映射功能内部编写自定义的Groovy脚本来实现。
- 内容修饰器 (Content Modifier):
内容修饰器是iFlow中使用频率极高的一个组件。它用于在集成流的执行过程中,添加、删除或增强消息的头部(Header)、属性(Property)或消息体/载荷(Body/Payload)。
- 消息头部 (Message Header): 在此处定义的值,会作为消息的一部分传输到目标系统。常用于设置HTTP头部,例如授权令牌(Authorization)或内容类型(Content-Type)。
- 交换属性 (Exchange Property): 在此处定义的值,仅在当前iFlow的执行内部保留和传递,不会传输到目标系统。主要用于在iFlow的不同步骤之间临时存储和传递中间值。
- 消息体 (Message Body): 用于捕获或完全修改消息的有效载荷。可以使用表达式
${in.body}
来获取前一步骤的载荷,也可以使用${header.elementName}
或${property.elementName}
等表达式,将头部或属性的值引入到消息体中。还支持使用XPath表达式从XML载荷中提取特定字段的值。
六、传输机制
SAP CPI提供了两种主要的传输机制,用于将开发完成的集成流从一个环境移动到另一个环境。
- 文件传输 (File Transport) (手动): 用户将一个iFlow或整个包,从源系统下载为一个文件到本地桌面,然后再手动上传到目标系统。这是项目中最常用、最灵活的方法。
- 自动传输 (Automatic Transport) (CDS Transport): 这种方法不常用,且通常需要额外购买相应的功能。它允许通过配置传输路径,将iFlow直接从一个环境推送到下一个环境。
七、赛锐信息观点
SAP CPI作为SAP集成套件的核心,为企业在云时代实现无缝集成提供了强大的平台。通过理解其核心概念、掌握其关键功能,并遵循最佳实践,集成开发者可以构建出高效、稳定且可维护的集成解决方案,从而有力地支撑企业的数字化转型之旅。
企业在向SAP S/4HANA Cloud转型时,SAP 许可 (License) 从 On-Premise 时代的经典指定用户模型转向全新的 FUE 许可模式,且 SAP 产品的许可 (License) 包含诸如“组件授权、用户授权、计量模式”等复杂模型,这对企业来说如同一个黑匣子,难以理解其工作原理。此外,企业还面临 SAP 的 License 审计等合规性问题。赛锐信息在 SAP License 审计流程方面拥有丰富咨询经验,拥有自主研发的高效 SAP License 资产优化软件产品,欢迎企业在需要时随时联系我们,以获得我们的支持服务和软件产品试用体验。