1. 程式人生 >實用技巧 >其它 >XAF Number(編號)

XAF Number(編號)


前言

編號在各類系統中都會存在,同時它還會根據業務場景的不同,會有不同的生成規則。XAF提供了一個編號生成助手(DistributedIdGeneratorHelper),它能在多併發的情況下,生成一個可遞增的唯一編號,它完全可以滿足一般場景的需求,但在一些特殊場景下,我們還需要對其進行擴充套件,如為了保持編號的連續性,我們需要對廢棄的編號進行回收再使用。下面是參考了Xafair編號生成的思路,再結合DistributedIdGeneratorHelper生成編號原理,建立一個了XAFNumbers模組,它可以通過配置的方式完成編號的生成,並自動賦值給對應的屬性。

示例

示例1

示例2

示例3

配置

  • Numbers是在IModelApplication下的,它下面可以包含多個Number,每一個Number都是一個編號定義。

  • Number是編號定義,下面是它的主要引數

    • AllowRetrieve 是否回收編號,預設為false,為true時,刪除BO後,會自動回收編號,也可以呼叫API回收編號

    • KeyTemplate Key用於對編號進行分組,當Template中用到了日期或BO中的屬性,都需要對KeyTemplate進行定義

    • Template 編號的模板,使用了String.Format,<INDEX>表示當前索引值,<NOW>表示當前時間

    • StartValue 編號的開始值

    • Step 編號每次遞增的值

  • NumberLink是用於連結BO類與屬性,每個Number可以包含多個NumberLink,下面是它的主要引數

    • ApplyStrategy 應用編號的策略(時機),它的值為AfterCreate(建立後)或OnSave(儲存時)

    • ModelClass 將編號應用到的BO類

    • Property 將編號應用到BO類的屬性