SAP Spartacus 如何连接到其他系统
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 模型中返回來自后端的響應。
連接器委托給與后端系統交互的適配器。
盡管這是一個相當復雜的設置,但您無需擔心大多數層。 當您想將 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 模型時,或者在簡單轉換的情況下,適配器都可以輕松處理。
Providing Custom Converters
Spartacus 中的轉換器使用特定的注入器令牌,這些令牌也可用于提供自定義轉換器。
例如,產品規范器使用 PRODUCT_NORMALIZER 令牌,可以按如下方式使用:
providers: [{provide: PRODUCT_NORMALIZER,useClass: CustomProductNormalizer,multi: true}]Extending the UI Model
使用自定義轉換器時,可以擴展 UI 模型以在 UI 層提供類型安全。
開箱即用,Spartacus 包括一組用于在 UI 層提供類型安全的類型,并且可以擴展這些類型以添加自定義系統提供的新字段。
以下示例演示如何將額外的目標字段添加到 Product 模型。
import { Product } from '@spartacus/core';export interface CustomProduct extends Product {target?: string; }此類型可用于自定義轉換器和自定義產品。 下面是一個例子:
import { Injectable } from '@angular/core'; import { Converter, Occ } from '@spartacus/core';@Injectable() export class CustomProductNormalizer implements Converter<Occ.Product, CustomProduct> {convert(source: any, target: any): CustomProduct {/*...*/} }Configuring Endpoints
您通常可以配置 OCC 提供的 REST 端點。 例如,所有端點都有一個可選的字段參數,用于確定返回的響應數據。 雖然此配置也可由(JAVA Spring)后端配置驅動,但在前端運行時執行此操作可提供更大的靈活性,并限制后端的自定義。 因此,您可以在 Spartacus 中配置 OCC 模塊的端點。
以下代碼片段顯示了產品詳細信息端點的自定義配置:
backend: {occ: {baseUrl: environment.occBaseUrl,endpoints: {product:'products/${productCode}?fields=DEFAULT,customAttribute',}} }OCC 配置用于 OccEndpointsService。 如果需要,該服務會查找配置并將參數應用于端點。
注意:端點是類型安全的。 因此,在添加配置時,可用端點列表是可見的。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的SAP Spartacus 如何连接到其他系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 报告称恶意 HTML 附件 10 个月数
- 下一篇: 路人如何衡量汽车品牌营销费用高低?李想支