機號碼;步驟310:基于產(chǎn)生的隨機號碼,獲取與該隨機號碼對應(yīng)的業(yè)務(wù)流水號元素,分別提供默認(rèn)的元素處理器;步驟312:基于提供的元素處理器,獲取流水號生成上下文信息,進(jìn)行業(yè)務(wù)流水號的信息配置,并對配置的信息進(jìn)行保存,用于業(yè)務(wù)流水號生成過程中的隨時調(diào)用。在該技術(shù)方案中,可以通過業(yè)務(wù)流水號的生成和穩(wěn)固性處理,解決業(yè)務(wù)流水號的通用性與可擴展性。
[0016]在上述技術(shù)方案中,優(yōu)選地,所述步驟202,還用于對于默認(rèn)配置不能滿足業(yè)預(yù)設(shè)業(yè)務(wù)流水號生成條件的業(yè)務(wù)流水號生成請求,采用擴展方式和業(yè)務(wù)流水號規(guī)則的動態(tài)調(diào)整方式,生成所需單據(jù)業(yè)務(wù)流水號;和/或,所述業(yè)務(wù)流水號核心信息,包括序列號信息、系統(tǒng)時間信息和核心規(guī)則模型,序列號信息包含當(dāng)前需要使用的序列號生成器,核心規(guī)則信息包括流水歸零依據(jù)和業(yè)務(wù)流水號模型;和/或,所述退號處理的具體操作,包括:如果系統(tǒng)時間是歸零依據(jù),根據(jù)系統(tǒng)時間信息去截取要回退的流水號中的系統(tǒng)時間,反算出本回退號的時間流水依據(jù),如果和當(dāng)前獲得的系統(tǒng)時間的流水依據(jù)一致,并且其他流水依據(jù)也一致,則執(zhí)行退號操作,否則號碼不回退,直接拋棄;和/或,所述最終業(yè)務(wù)流水號,由多個子字段拼裝組合而成,該多個子字段為業(yè)務(wù)流水號元素信息;在業(yè)務(wù)流水號的生成過程中使用的元素信息包括:和具體的單據(jù)值無關(guān)的信息,包括常量、系統(tǒng)時間、序列號和隨機碼;和單據(jù)信息有關(guān)的信息即單據(jù)上直接錄入的信息或引用別的單據(jù)的信息,包括業(yè)務(wù)時間、手工錄入的字符串。在該技術(shù)方案中,可以在運行維護時,提供業(yè)務(wù)流水號規(guī)則的動態(tài)調(diào)整能力,支持單據(jù)業(yè)務(wù)流水號生成方式的調(diào)整。
[0017]在上述技術(shù)方案中,優(yōu)選地,所述步驟204,具體包括:步驟402:基于生成的業(yè)務(wù)流水號,采用業(yè)務(wù)流水號關(guān)系型數(shù)據(jù)庫保存流水號生成相關(guān)信息,并對獲取業(yè)務(wù)流水號的方法啟動新的事務(wù);所述流水號生成相關(guān)信息,包括當(dāng)前最大流水號、回退號;步驟404:基于啟動的新事物,執(zhí)行數(shù)據(jù)庫行鎖,鎖定當(dāng)前歸零依據(jù)下的最大流水號記錄,這樣,在當(dāng)前流水號申請結(jié)束前,數(shù)據(jù)庫中的本條數(shù)據(jù)一直鎖定,直到當(dāng)前流水號申請結(jié)束,提交事務(wù)后,第二個同一流水依據(jù)的流水號申請方法才能結(jié)束等待,繼續(xù)執(zhí)行。在該技術(shù)方案中,可以采用的是數(shù)據(jù)庫行鎖,鎖定的只是一行數(shù)據(jù),對其他流水依據(jù)的流水號獲取,能夠并行執(zhí)行,保證了獲取業(yè)務(wù)流水號好的效率。
[0018]在上述技術(shù)方案中,優(yōu)選地,所述步驟206,具體包括:步驟502:數(shù)據(jù)庫行鎖處理后,對使用業(yè)務(wù)流水號的場景進(jìn)行分類,對不同的場景進(jìn)行不同的處理;步驟504:在前編碼場景下,通過前編碼表保證業(yè)務(wù)流水號的連續(xù)性;該通過前編碼表保證業(yè)務(wù)流水號的連續(xù)性的操作,具體包括:在前編碼的情況下,當(dāng)業(yè)務(wù)單據(jù)人員在獲取業(yè)務(wù)流水號后,既沒有保存,也沒有取消,而是直接關(guān)閉頁面或者系統(tǒng)時,前編碼表中的數(shù)據(jù)會一直存;對超過預(yù)設(shè)時長的前編碼表數(shù)據(jù)進(jìn)行清理后,將該清理的前編碼表數(shù)據(jù)轉(zhuǎn)移到回退表中,保證業(yè)務(wù)流水號的連續(xù)性;步驟506:在后編碼的場景下,通過事務(wù)監(jiān)控外部事務(wù),根據(jù)事務(wù)成功失敗來進(jìn)行相應(yīng)的請求級內(nèi)存操作,保證業(yè)務(wù)流水號的連續(xù)性。在該技術(shù)方案中,可以解決業(yè)務(wù)流水號的唯一性與連續(xù)性,方便軟件開發(fā)人員和提供運行態(tài)規(guī)則調(diào)整的能力。
[0019]通過以上技術(shù)方案,可以在現(xiàn)有的業(yè)務(wù)流水號生成方式基礎(chǔ)上,充分利用單對象類型完成多對象類型元數(shù)據(jù)的業(yè)務(wù)流水號生成,建立多對象類型元數(shù)據(jù)參與的面向復(fù)雜類型業(yè)務(wù)流水號生成的通用、統(tǒng)一生成思路。
[0020]
【附圖說明】
[0021]圖1示出了根據(jù)本發(fā)明的實施例的業(yè)務(wù)流水號生成裝置的框圖;
圖2示出了根據(jù)本發(fā)明的實施例的業(yè)務(wù)流水號生成方法的流程圖;
圖3示出了根據(jù)本發(fā)明的實施例的流水號生成單元的原理示意圖;
圖4示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)庫行鎖單元的原理示意圖;
圖5示出了根據(jù)本發(fā)明的實施例的業(yè)務(wù)流水號連續(xù)性處理單元的原理示意圖;
圖6示出了根據(jù)本發(fā)明的實施例的的基本處理過程的流程圖;
圖7示出了根據(jù)本發(fā)明的實施例的在前編碼場景下通過前編碼表來保證業(yè)務(wù)流水號的連續(xù)性的流程圖。
[0022]
【具體實施方式】
[0023]為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點,下面結(jié)合附圖和【具體實施方式】對本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。需要說明的是,在不沖突的情況下,本申請的實施例及實施例中的特征可以相互組合。
[0024]在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實施,因此,本發(fā)明的保護范圍并不受下面公開的具體實施例的限制。
[0025]圖1示出了根據(jù)本發(fā)明的實施例的業(yè)務(wù)流水號生成裝置的框圖。
[0026]如圖1所示,根據(jù)本發(fā)明的實施例的業(yè)務(wù)流水號生成裝置100,包括:流水號生成單元102,用于基于用戶請求生成業(yè)務(wù)流水號,并基于生成的業(yè)務(wù)流水號進(jìn)行元素處理、持久化處理和模型處理;數(shù)據(jù)庫行鎖單元104,用于基于元素處理、持久化處理和模型處理后的業(yè)務(wù)流水號,進(jìn)行相關(guān)信息保存和記錄鎖定處理;業(yè)務(wù)流水號連續(xù)性處理單元106,用于基于相關(guān)信息保存和記錄鎖定處理后的業(yè)務(wù)流水號,進(jìn)行場景分類處理,得到用戶所需業(yè)務(wù)流水號。在該技術(shù)方案中,可以對業(yè)務(wù)流水號的使用進(jìn)行分析,基于數(shù)據(jù)庫行鎖,提出通用的解決方式,有很好的擴展性和通用性,能夠靈活的配置業(yè)務(wù)流水號的生成規(guī)則。
[0027]在上述技術(shù)方案中,優(yōu)選地,流水號生成單元102,具體包括:流水號生成引擎1022,用于基于用戶請求,對于滿足預(yù)設(shè)業(yè)務(wù)流水號生成條件的業(yè)務(wù)流水號生成請求,采用默認(rèn)配置生成所需業(yè)務(wù)流水號;流水號元素處理引擎1024,用于將生成的業(yè)務(wù)流水號或單據(jù)業(yè)務(wù)流水號的所有信息,被凝練到業(yè)務(wù)流水號核心信息中,根據(jù)序列號生成器獲取序列號元素的值,將業(yè)務(wù)流水號模型中的序列號占位符替換,獲得最終業(yè)務(wù)流水號;需要退號時,根據(jù)系統(tǒng)時間進(jìn)行退號處理;流水號生成引擎持久化接口 1026,用于基于獲得的最終業(yè)務(wù)流水號,通過流水號生成上下文獲取流水號元素處理器,對最終業(yè)務(wù)流水號進(jìn)行流水號處理引擎持久化處理;流水號規(guī)則模型,1028用于基于流水號處理引擎持久化處理后的最終業(yè)務(wù)流水號,進(jìn)行規(guī)則計算,在業(yè)務(wù)流水號規(guī)則計算中產(chǎn)生能夠唯一識別業(yè)務(wù)流水號的隨機號碼;單據(jù)值對象模型1030,用于基于產(chǎn)生的隨機號碼,獲取與該隨機號碼對應(yīng)的業(yè)務(wù)流水號元素,分別提供默認(rèn)的元素處理器;流水號生成上下文模型1032,用于基于提供的元素處理器,獲取流水號生成上下文信息,進(jìn)行業(yè)務(wù)流水號的信息配置,并對配置的信息進(jìn)行保存,用于業(yè)務(wù)流水號生成過程中的隨時調(diào)用。在該技術(shù)方案中,可以通過業(yè)務(wù)流水號的生成和穩(wěn)固性處理,解決業(yè)務(wù)流水號的通用性與可擴展性。
[0028]在上述技術(shù)方案中,優(yōu)選地,流水號生成引擎1022,還用于對于默認(rèn)配置不能滿足業(yè)預(yù)設(shè)業(yè)務(wù)流水號生成條件的業(yè)務(wù)流水號生成請求,采用擴展方式和業(yè)務(wù)流水號規(guī)則的動態(tài)調(diào)整方式,生成所需單據(jù)業(yè)務(wù)流水號;和/或,業(yè)務(wù)流水號核心信息,包括序列號信息、系統(tǒng)時間信息和核心規(guī)則模型,序列號信息包含當(dāng)前需要使用的序列號生成器,核心規(guī)則信息包括流水歸零依據(jù)和業(yè)務(wù)流水號模型;和/或,退號處理的具體操作,包括:如果系統(tǒng)時間是歸零依據(jù),根據(jù)系統(tǒng)時間信息去截取要回退的流水號中的系統(tǒng)時間,反算出本回退號的時間流水依據(jù),如果和當(dāng)前獲得的系統(tǒng)時間的流水依據(jù)一致,并且其他流水依據(jù)也一致,則執(zhí)行退號操作,否則號碼不回退,直接拋棄;和/或,最終業(yè)務(wù)流水號,由多個子字段拼裝組合而成,該多個子字段為業(yè)務(wù)流水號元素信息;在業(yè)務(wù)流水號的生成過程中使用的元素信息包括:和具體的單據(jù)值無關(guān)的信息,包括常量、系統(tǒng)時間、序列號和隨機