如何使用SAP的後設資料框架 (MDF) 構建自定義業務規則?
SAP SuccessFactors利用後設資料框架(MDF)物件和業務規則做很多事情。業務規則適用於許多不同的情況,並且有大量關於如何使用它們的文件。不幸的是,這裡明顯缺乏定製解決方案的指南。
如果一個企業必須使用幾個相連的業務規則,他們如何從這些規則中實現他們期望的行為?
可悲的是,業務規則並沒有得到非常明確的解釋,這讓那些想要實施定製解決方案的企業感到他們必須透過實驗來找出事情的真相。我們將介紹企業在構建使用MDF物件的業務規則的定製解決方案時需要了解的一些基本知識。
將場景上下文切換為“基於 MDF 的物件的規則”
基本場景不是為使用基於 MDF 的物件而設計的,因此場景“基於 MDF 的物件的規則”更適合我們正在嘗試做的事情。它為企業提供了很多好處,其中包括:
- 完全內建於擴充套件中心
- 僅涵蓋適合特定用途的功能
- 允許從業務規則導航到呼叫它的事件
每當企業打算使用 MDF 物件時,建議他們使用這些“基於 MDF 的物件的規則”,因為該場景對使用者友好且可靠。
建立新規則
建立新的自定義規則會顯示需要編輯以完成規則設定的欄位。
規則 ID
僅在未選擇物件時可編輯。ID 至關重要,因為它是我們匯入和匯出業務規則及其對物件定義的分配的方式。規則名稱應包含有關規則的固定事實,例如:
- 實施專案的簡稱
- 基礎物件程式碼
- 規則的目的
- 儲存業務規則的程式碼型別
因此,例如,有效的規則 ID 可能類似於 COMPANY_Position_externalCode_Evaluate。
規則名稱
規則名稱可以隨時更改。規則名稱和規則 ID 在配置工具中表示時始終可見。因為規則名稱在系統內的 UI 中是可見且可修改的,所以它是儲存有關規則的可變資料的理想場所。專案如:
- 諸如“被刪除”或“被替換”之類的操作。
- 任何呼叫規則的事件
- 規則的執行順序
- 前一個規則 ID(如果有此規則的前任規則)
- 可變的 IF 條件以及要更改哪些欄位等。
分配事件順序
在任何事件中,新增到事件中的業務規則都按照新增的順序執行。通常,如果規則是獨立的,這不會引起任何問題。但是,某些規則需要先前規則的結果。在這些情況下,執行順序對於確保沒有中斷至關重要。將規則連結在一起並不少見,但某些配置往往比其他配置發生得更多。配置這些鏈時,OnLoad- 和 Initialize-Purposed 規則可能很複雜。供應商-消費者鏈應避免實施這樣的鏈。Evaluate-Purposed 規則經常出現在消費者-供應商鏈中,並適用於 OnChange 和 Save 事件。
不幸的是,工作流專用規則不尊重物件定義中的分配順序。他們在事件中具有固定的位置。在 Sve 事件上,首先執行工作流專用規則。在刪除事件上,工作流專用規則在其他所有內容之後執行。
測序事件
事件根據物件上發生的操作進行排序。
編寫業務規則的提示
那麼,企業在制定自定義業務規則時應該注意什麼?
- 業務規則應儘可能簡單(KISS 原則)
- 如果存在複雜的條件(IF 語句),則應儘可能簡化它們
- 應避免對大量引數使用邏輯組合(AND 語句)
- 首先應說明最可能的情況
- 任何使用重複計算或“魔術”數字的東西都應該用變數代替
- 業務規則永遠不應替代關聯和欄位標準。
乍一看,構建自定義業務規則可能看起來很複雜。但是,一旦一個人瞭解了後端是如何完成的,就更容易掌握如何編寫成功的規則。他們應該有一個深思熟慮的名稱和 ID,以便任何使用它的人一目瞭然地描述規則。他們還應該儘可能地簡單,但不要簡單到一事無成。在制定這些規則時要找到平衡點需要一些實踐,但值得擁有一個更精簡的系統來處理可能影響業務效率和生產的複雜條件。
相關文章
- 關於laravel使用自定義驗證規則後某些規則不生效Laravel
- ETL中如何自定義規則
- 如何構建自定義人臉識別資料集
- Laravel 自定義規則Laravel
- 使用DDD規格Specification模式構建資料驅動規則引擎 - jonblankenship模式
- zuul 自定義路由規則Zuul路由
- 使用jakarta.validation自定義校驗規則
- 微服務構建持久API的7大規則微服務API
- SQL稽核 | SQLE 如何開發一條自定義的規則SQL
- Laravel 自定義表單驗證-自定義驗證規則Laravel
- 使用Apache Hudi構建大規模、事務性資料湖Apache
- 掌握 Nuxt 3 的頁面後設資料:使用 definePageMeta 進行自定義配置UX
- Logback中如何自定義靈活的日誌過濾規則
- Laravel 自定義驗證規則的問題Laravel
- SAP UI5 的規則構建器控制元件介紹UI控制元件
- 使用CSS自定義屬性構建骨架屏CSS
- 正確使用資料架構的五條規則 - infoworld架構
- SELinux: 如何讓selinux對某些命令放行,自定義selinux規則。Linux
- jQuery Validate新增自定義驗證規則jQuery
- 荷蘭銀行構建可擴充套件的後設資料驅動的資料攝取框架套件框架
- 透過surging的後臺託管服務編寫任務排程並支援規則引擎自定義指令碼指令碼
- [譯] 教你如何用 Flutter 的 GestureDetector 構建自定義滑塊Flutter
- 潤乾報表設計器中使用 spring 框架實現自定義資料集Spring框架
- 自定義響應資料結構資料結構
- 物件業務的修改後設資料介面物件
- 使用DDD聚合發現隱藏的業務規則的案例分析:資料庫事務的業務實現 - Nick Tune資料庫
- HTML5 pattern自定義驗證規則HTML
- 團隊自定義 tslint & eslint 詳細規則EsLint
- 自定義Mybatis自動生成程式碼規則MyBatis
- 線上debug&gateway自定義路由規則Gateway路由
- [Laravel] 自定義配置你的密碼驗證規則Laravel密碼
- 【Laravel】 自定義配置你的密碼驗證規則Laravel密碼
- Java註解-後設資料、註解分類、內建註解和自定義註解Java
- Android 自定義構建型別 BuildTypeAndroid型別UI
- Zepto自定義模組打包構建
- DDD 中的那些模式 — 使用 Specification 管理業務規則模式
- 如何權衡業務規則的遵守與違反?
- 用 Java 構建簡單的規則引擎Java