SAP Fiori Front-end Server (FES) 是 SAP Fiori 用户体验的技术基石,其核心是一个部署在 ABAP 应用服务器上的 Addon。根据 SAP 官方架构,其核心组成部分主要包括以下三大块 :
| 核心组成部分 | 主要功能与定位 |
|---|---|
| 1. SAP Fiori Apps | 这是用户直接交互的应用程序层,可以是 SAP 标准应用,也可以是客户开发的定制应用。它们通过 SAP Gateway 与后端系统通信 。 |
| 2. SAP Fiori Launchpad 与 SAPUI5 | Fiori Launchpad 是用户的统一角色化入口和工作中心 。SAPUI5 是构建这些 Fiori Apps 的前端开发框架,基于 HTML5、CSS 和 JavaScript,提供丰富的企业级控件 。 |
| 3. SAP Gateway | 这是连接前端应用与后端业务系统的关键中间件。它负责将后端系统的业务数据和服务(通常通过 OData 协议)暴露给前端的 SAPUI5 应用,实现前后端解耦 。 |
架构与数据流转详解
我们可以通过一个典型的交互流程来理解这三个部分如何协同工作:
- 用户入口 :用户通过浏览器访问 SAP Fiori Launchpad 。Launchpad 根据用户的角色和权限,动态加载并展示相应的 SAP Fiori Apps 磁贴 。
- 应用请求 :当用户点击一个 Fiori App 时,基于 SAPUI5 开发的该应用被加载到浏览器中运行 。
- 数据获取 :该应用通过 OData 服务向 SAP Gateway 发起数据请求 。
- 服务代理:SAP Gateway 接收请求,将其转换为后端系统(如 SAP S/4HANA 或 SAP Business Suite)能够理解的格式(如 RFC),并从后端获取业务数据 。
- 数据返回:SAP Gateway 将后端返回的业务数据封装成标准的 OData 格式(通常是 JSON),返回给前端的 SAPUI5 应用 。
- 界面渲染:SAPUI5 应用接收到数据后,利用其数据绑定机制,将数据渲染到用户界面上,完成一次完整的交互。
部署模式的演进
在 SAP S/4HANA 时代,FES 的部署模式也发生了重要演变,这直接影响了其组件的集成方式:
| 部署模式 | 核心特点 | 适用场景与趋势 |
|---|---|---|
| Standalone FES | FES 作为一个独立的 ABAP 系统(前端服务器)存在,与后端的业务服务器(如 ERP)物理分离。需要配置系统别名(System Alias)来建立连接 。 | 传统 SAP Business Suite 环境下的经典部署方式。架构清晰,但运维相对复杂。 |
| Embedded FES | FES 的组件(特别是 Gateway 和 Launchpad)直接嵌入到 SAP S/4HANA 等单一系统中,不再需要独立的前端服务器 。 | SAP S/4HANA 的默认和推荐模式。它简化了架构,降低了系统间通信开销和运维成本,使 Fiori 成为 S/4HANA 数字核心的天然统一入口 。 |
从 Standalone 迁移到 Embedded 模式是当前的主要技术趋势。迁移过程通常涉及使用 Rapid Activation 工具激活嵌入式前端服务,并重新配置目标映射和系统别名,以确保所有 OData 服务能正确指向新的嵌入式 Gateway 。
扩展组件与生态
除了上述三大核心,完整的 SAP Fiori 技术体系还包含其他重要组件,它们与 FES 紧密协作,共同构成现代化的企业应用平台:
- SAP Business Application Studio (BAS):这是 SAP 推荐的云端和本地 Fiori/SAPUI5 应用开发环境,取代了之前的 SAP Web IDE。它提供了从项目创建、代码编写、测试到部署的全套工具链 。
- 中央 UI 组件与主题管理:确保所有 Fiori 应用在不同设备上拥有一致的外观和交互体验 。
- SAP Web Dispatcher:作为反向代理和负载均衡器,是 Fiori 系统架构的入口点,处理 HTTPS 终止、请求路由和安全过滤 。
代码示例:一个简单的 OData 服务消费
以下是一个简化的 SAPUI5 应用代码片段,展示了 Fiori App 如何通过 sap.ui.model.odata.v2.ODataModel 连接到 SAP Gateway 提供的 OData 服务来获取数据。这体现了 SAPUI5 与 SAP Gateway 的协作 。
javascript
// 创建一个指向 SAP Gateway OData 服务的模型
sap.ui.define([
"sap/ui/core/mvc/Controller",
"sap/ui/model/odata/v2/ODataModel"
], function (Controller, ODataModel) {
"use strict";
return Controller.extend("my.app.controller.Main", {
onInit: function () {
// 初始化 OData 模型,服务根URL指向 SAP Gateway
var oModel = new ODataModel("/sap/opu/odata/sap/Z_MY_SERVICE_SRV/"); //
this.getView().setModel(oModel);
// 绑定视图中的表格(Table)到 OData 服务的实体集(EntitySet)
var oTable = this.byId("myTable");
oTable.bindItems({
path: "/MyEntitySet", // OData 实体集路径
template: new sap.m.ColumnListItem({
cells: [
new sap.m.Text({ text: "{ProductID}" }),
new sap.m.Text({ text: "{Name}" })
]
})
});
}
});
});
在这个例子中,/sap/opu/odata/sap/Z_MY_SERVICE_SRV/ 是 SAP Gateway 暴露的 OData 服务根 URL,/MyEntitySet 是该服务下的一个实体集。SAPUI5 模型会自动处理与 Gateway 的通信,获取数据并绑定到 UI 控件上。
综上所述,SAP Fiori Front-end Server 的核心是 Fiori Apps 、Launchpad with SAPUI5 和 SAP Gateway 的有机组合。在 SAP S/4HANA 的推动下,其 Embedded 部署模式已成为主流,将这三者更深地集成到业务核心系统中,提供了更简洁、高效和统一的用户体验平台 。