且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SAP Spartacus 如何连接到其他系统

更新时间:2021-12-19 22:17:36

Connecting to Other Systems


Commerce Cloud 解决方案的系统架构由各种系统组成,这些系统通常在各种应用层(包括前端)上进行编排。


Spartacus 默认连接到 SAP Commerce Cloud API,但底层框架也可用于其他系统。 这是通过所谓的“连接器”完成的,可以添加连接器以连接到其他系统。


Component Data Binding

Spartacus 提供绑定到(复杂)商务数据和 Commerce Cloud 后端逻辑的视图逻辑。 Angular 提供数据绑定标准,并依赖反应式编程作为数据绑定的***实践和标准模式。以下***实践用于 Spartacus 中的数据绑定:


UI组件使用标准的 Angular 异步管道从后端绑定到可观察数据。


UI 组件不会在本地存储来自 observable 的响应数据,这意味着可以避免销毁逻辑。 RxJS 可管道化逻辑可用于在观察数据时实现任何逻辑。


后端数据存储在由状态管理系统提供的中间数据存储中。斯巴达克斯使用 NgRx。


状态管理系统的复杂性被外观层隐藏,为组件开发人员提供简单的 API。


您可以使用连接器、适配器和转换器逻辑来配置后端系统。客户可以提供替代实现来使用特定的后端。


这种数据绑定设计涉及多个层次,如下:


UI组件:UI层只关心UI的视图逻辑。 UI 组件观察由外观层提供的数据。


Facade 层:Facade 层隐藏了内存数据存储(NgRx)的复杂性。 该层旨在简化您的开发,让您专注于自定义视图逻辑。


内存存储:Spartacus 使用 NgRx 存储进行状态管理。 NgRx 被认为是复杂的,建议您使用 Facade 层。


后端连接器:后端连接器由 NgRx effect 调用,并在所需的 UI 模型中返回来自后端的响应。


连接器委托给与后端系统交互的适配器。


SAP Spartacus 如何连接到其他系统


尽管这是一个相当复杂的设置,但您无需担心大多数层。 当您想将 UI 组件连接到替代数据源时,您可以自定义一些低级层,而无需关心外观层或数据存储。 只有当需要替代的客户端业务逻辑时,您才会提供额外的逻辑(很可能,靠近 UI 层)。


Connector Logic

连接器逻辑位于 in-memory data store 和后端之间。 每个域都使用一个特定的连接器来将连接卸载到后端系统。 例如,产品连接器负责加载产品详细信息。


为了提供***的灵活性,连接到后端系统涉及三个实体:连接器、适配器和转换器。 但是请注意,当您使用第三方系统时,并非所有实体都必须涉及。


尽管使用了不同的名称(例如,填充器或序列化器而不是转换器),但这是跨不同框架和技术堆栈的常见模式。


细粒度的设置有助于分离关注点,并简化进一步的定制。 话虽如此,当您绑定到替代数据源时,没有什么能阻止您进一步简化设置。


Connector

连接器协调与源系统的连接。 连接器层可以被认为是过度设计的,因为有时会提供标准数据,即使在切换到替代系统的情况下也是如此。 连接器的一个真实示例用例是在加载结构化 CMS 数据时:Spartacus 可以设置为添加静态 CMS 数据而完全不依赖后端,或者作为后备,以防 CMS 无法提供足够的数据。


连接器的主要任务是将后端数据的加载和转换委托给适配器。


Adapter

适配器层负责加载和提交数据到源系统。 默认情况下,Spartacus 使用 OCC(SAP Commerce Cloud 的标准 REST API)。 适配器(和转换器)在单独的模块中发货和提供,因此它们在最终构建中成为可选的,以防您希望使用替代系统。


可以配置 OCC 适配器中使用的端点,因此 Spartacus 的定制可以非常轻量级。 仅当您使用另一个系统时,才可能需要提供自定义适配器。


Convertor

转换器用于将数据从后端转换到 UI,反之亦然。Spartacus 使用以下内容来区分这两个流程:


Normalize 是后端模型到 UI 模型的转换

Serialize是UI模型到后端模型的转换,在向后端提交数据的情况下。

为了提供可选的转换,转换器是所谓的“多提供者”,这允许 Spartacus 提供特定的转换器。可选规范化器的一个很好的例子是用于 SmartEdit 集成所需的附加数据的规范化器。


这种集成需要最终 DOM 上的一些附加属性。 Spartacus 提供了一个可选的转换器,用于将来自后端源的附加数据标准化为 UI 模型。


转换器是可选的:当没有找到给定域的转换器时,将返回源数据。此外,每当后端模型等于 UI 模型时,或者在简单转换的情况下,适配器都可以轻松处理。