SAP Hybris ecommerce cloud 核心是佛像,你只能繞香,不准雕刻

📘 SAP Hybris 請求處理流程與擴充原則

🔄 請求處理流程圖(文字版)

   ┌────────────────────────────┐
   │      前端發出 API 請求     │
   └────────────┬──────────────┘
                │
                ▼
   ┌────────────────────────────┐
   │ ✅ Controller (Impl 層)   │
   │ e.g. ExtendedUsersController│
   │ @Controller / @RestController │
   └────────────┬──────────────┘
                │ 呼叫介面(Facade Interface)
                ▼
   ┌────────────────────────────┐
   │     Facade Interface       │
   │     e.g. ElabUserFacade    │
   │  ← Spring XML 指派實作    │
   └────────────┬──────────────┘
                │
                ▼
   ┌────────────────────────────┐
   │ ✅ DefaultElabUserFacade   │
   │ ← Facade 的 Impl 類別     │
   └────────────┬──────────────┘
                │ 呼叫底層 service interface
                ▼
   ┌────────────────────────────┐
   │     Service Interface       │
   │     e.g. ElabUserService    │
   │  ← Spring XML 指派實作    │
   └────────────┬──────────────┘
                │
                ▼
   ┌────────────────────────────┐
   │ ✅ DefaultElabUserService  │
   │ ← Service 的 Impl 類別    │
   └────────────┬──────────────┘
                │
                ▼
   ┌────────────────────────────┐
   │     Populator / Converter  │
   │ 將 Model 映射成 DTO         │
   │ e.g. UserModel → UserDTO   │
   └────────────┬──────────────┘
                │
                ▼
   ┌────────────────────────────┐
   │     Model 層 (items.xml)   │
   │ e.g. UserModel, POSModel   │
   └────────────┬──────────────┘
                │
                ▼
   ┌────────────────────────────┐
   │   DB / FlexibleSearch 層   │
   │ PK, type system, relation  │
   └────────────────────────────┘

✅ 擴充原則說明

1. 不要直接修改原生 interface

  • Hybris 的 Service 與 Facade interface 是平台契約,應避免修改
  • 建議:寫自己的 impl 類別,並透過 Spring XML override

2. 使用 Spring XML 指定實作類別

<bean id="elabUserFacade" class="com.yourcompany.facades.impl.CustomElabUserFacade"/>
  • 寫在 *-spring.xml 檔案中即可
  • Controller 中的 @Resource(name = "elabUserFacade") 會自動注入該實作

3. DTO 請用 Populator / Converter 處理

  • Model 不直接傳給前端
  • 建議將 Model → DTO 寫成 Populator、Converter,獨立維護轉換邏輯

4. items.xml 控制整個資料結構與 DB schema

  • 所有 model 都來自 items.xml 編譯結果
  • 不要手動改 DB 結構,一律透過 model 層調整

💡 小提醒

Hybris 架構設計是 interface + Spring Bean override。若需擴充邏輯,請改寫 impl 類別,不要修改 interface,並透過 Spring XML 綁定。我們的 controller、facade、service、model 應保持分層清楚,利於測試與升級。

*

張貼留言 (0)
較新的 較舊

廣告1

廣告2