碼;和單據(jù)信息有關(guān)的信息即單據(jù)上直接錄入的信息或引用別的單據(jù)的信息,包括業(yè)務(wù)時(shí)間、手工錄入的字符串。在該技術(shù)方案中,可以在運(yùn)行維護(hù)時(shí),提供業(yè)務(wù)流水號(hào)規(guī)則的動(dòng)態(tài)調(diào)整能力,支持單據(jù)業(yè)務(wù)流水號(hào)生成方式的調(diào)整。
[0029]在上述技術(shù)方案中,優(yōu)選地,數(shù)據(jù)庫(kù)行鎖單元104,具體包括:相關(guān)信息保存模塊1042,用于基于生成的業(yè)務(wù)流水號(hào),采用業(yè)務(wù)流水號(hào)關(guān)系型數(shù)據(jù)庫(kù)保存流水號(hào)生成相關(guān)信息,并對(duì)獲取業(yè)務(wù)流水號(hào)的方法啟動(dòng)新的事務(wù);流水號(hào)生成相關(guān)信息,包括當(dāng)前最大流水號(hào)、回退號(hào);最大流水號(hào)記錄鎖定模塊1044,用于基于啟動(dòng)的新事物,執(zhí)行數(shù)據(jù)庫(kù)行鎖,鎖定當(dāng)前歸零依據(jù)下的最大流水號(hào)記錄,這樣,在當(dāng)前流水號(hào)申請(qǐng)結(jié)束前,數(shù)據(jù)庫(kù)中的本條數(shù)據(jù)一直鎖定,直到當(dāng)前流水號(hào)申請(qǐng)結(jié)束,提交事務(wù)后,第二個(gè)同一流水依據(jù)的流水號(hào)申請(qǐng)方法才能結(jié)束等待,繼續(xù)執(zhí)行。在該技術(shù)方案中,可以采用的是數(shù)據(jù)庫(kù)行鎖,鎖定的只是一行數(shù)據(jù),對(duì)其他流水依據(jù)的流水號(hào)獲取,能夠并行執(zhí)行,保證了獲取業(yè)務(wù)流水號(hào)好的效率。
[0030]在上述技術(shù)方案中,優(yōu)選地,業(yè)務(wù)流水號(hào)連續(xù)性處理單元106,具體包括:場(chǎng)景分類模塊1062,用于數(shù)據(jù)庫(kù)行鎖處理后,對(duì)使用業(yè)務(wù)流水號(hào)的場(chǎng)景進(jìn)行分類,對(duì)不同的場(chǎng)景進(jìn)行不同的處理;前編碼場(chǎng)景處理模塊1064,用于在前編碼場(chǎng)景下,通過前編碼表保證業(yè)務(wù)流水號(hào)的連續(xù)性;該通過前編碼表保證業(yè)務(wù)流水號(hào)的連續(xù)性的操作,具體包括:在前編碼的情況下,當(dāng)業(yè)務(wù)單據(jù)人員在獲取業(yè)務(wù)流水號(hào)后,既沒有保存,也沒有取消,而是直接關(guān)閉頁(yè)面或者系統(tǒng)時(shí),前編碼表中的數(shù)據(jù)會(huì)一直存;對(duì)超過預(yù)設(shè)時(shí)長(zhǎng)的前編碼表數(shù)據(jù)進(jìn)行清理后,將該清理的前編碼表數(shù)據(jù)轉(zhuǎn)移到回退表中,保證業(yè)務(wù)流水號(hào)的連續(xù)性;后編碼場(chǎng)景處理模塊1066,用于在后編碼的場(chǎng)景下,通過事務(wù)監(jiān)控外部事務(wù),根據(jù)事務(wù)成功失敗來進(jìn)行相應(yīng)的請(qǐng)求級(jí)內(nèi)存操作,保證業(yè)務(wù)流水號(hào)的連續(xù)性。在該技術(shù)方案中,可以解決業(yè)務(wù)流水號(hào)的唯一性與連續(xù)性,方便軟件開發(fā)人員和提供運(yùn)行態(tài)規(guī)則調(diào)整的能力。
[0031]圖2示出了根據(jù)本發(fā)明的實(shí)施例的業(yè)務(wù)流水號(hào)生成方法的流程圖。
[0032]如圖2所示,根據(jù)本發(fā)明的實(shí)施例的業(yè)務(wù)流水號(hào)生成方法,包括:步驟202:基于用戶請(qǐng)求生成業(yè)務(wù)流水號(hào),并基于生成的業(yè)務(wù)流水號(hào)進(jìn)行元素處理、持久化處理和模型處理;步驟204:基于元素處理、持久化處理和模型處理后的業(yè)務(wù)流水號(hào),進(jìn)行相關(guān)信息保存和記錄鎖定處理;步驟206:基于相關(guān)信息保存和記錄鎖定處理后的業(yè)務(wù)流水號(hào),進(jìn)行場(chǎng)景分類處理,得到用戶所需業(yè)務(wù)流水號(hào)。在該技術(shù)方案中,可以對(duì)業(yè)務(wù)流水號(hào)的使用進(jìn)行分析,基于數(shù)據(jù)庫(kù)行鎖,提出通用的解決方式,有很好的擴(kuò)展性和通用性,能夠靈活的配置業(yè)務(wù)流水號(hào)的生成規(guī)則。
[0033]在上述技術(shù)方案中,優(yōu)選地,參見圖3,步驟202,具體包括:步驟302:基于用戶請(qǐng)求,對(duì)于滿足預(yù)設(shè)業(yè)務(wù)流水號(hào)生成條件的業(yè)務(wù)流水號(hào)生成請(qǐng)求,采用默認(rèn)配置生成所需業(yè)務(wù)流水號(hào);步驟304:將生成的業(yè)務(wù)流水號(hào)或單據(jù)業(yè)務(wù)流水號(hào)的所有信息,被凝練到業(yè)務(wù)流水號(hào)核心信息中,根據(jù)序列號(hào)生成器獲取序列號(hào)元素的值,將業(yè)務(wù)流水號(hào)模型中的序列號(hào)占位符替換,獲得最終業(yè)務(wù)流水號(hào);需要退號(hào)時(shí),根據(jù)系統(tǒng)時(shí)間進(jìn)行退號(hào)處理;步驟306:基于獲得的最終業(yè)務(wù)流水號(hào),通過流水號(hào)生成上下文獲取流水號(hào)元素處理器,對(duì)最終業(yè)務(wù)流水號(hào)進(jìn)行流水號(hào)處理引擎持久化處理;步驟308:基于流水號(hào)處理引擎持久化處理后的最終業(yè)務(wù)流水號(hào),進(jìn)行規(guī)則計(jì)算,在業(yè)務(wù)流水號(hào)規(guī)則計(jì)算中產(chǎn)生能夠唯一識(shí)別業(yè)務(wù)流水號(hào)的隨機(jī)號(hào)碼;步驟310:基于產(chǎn)生的隨機(jī)號(hào)碼,獲取與該隨機(jī)號(hào)碼對(duì)應(yīng)的業(yè)務(wù)流水號(hào)元素,分別提供默認(rèn)的元素處理器;步驟312:基于提供的元素處理器,獲取流水號(hào)生成上下文信息,進(jìn)行業(yè)務(wù)流水號(hào)的信息配置,并對(duì)配置的信息進(jìn)行保存,用于業(yè)務(wù)流水號(hào)生成過程中的隨時(shí)調(diào)用。在該技術(shù)方案中,可以通過業(yè)務(wù)流水號(hào)的生成和穩(wěn)固性處理,解決業(yè)務(wù)流水號(hào)的通用性與可擴(kuò)展性。
[0034]在上述技術(shù)方案中,優(yōu)選地,步驟202,還用于對(duì)于默認(rèn)配置不能滿足業(yè)預(yù)設(shè)業(yè)務(wù)流水號(hào)生成條件的業(yè)務(wù)流水號(hào)生成請(qǐng)求,采用擴(kuò)展方式和業(yè)務(wù)流水號(hào)規(guī)則的動(dòng)態(tài)調(diào)整方式,生成所需單據(jù)業(yè)務(wù)流水號(hào);和/或,業(yè)務(wù)流水號(hào)核心信息,包括序列號(hào)信息、系統(tǒng)時(shí)間信息和核心規(guī)則模型,序列號(hào)信息包含當(dāng)前需要使用的序列號(hào)生成器,核心規(guī)則信息包括流水歸零依據(jù)和業(yè)務(wù)流水號(hào)模型;和/或,退號(hào)處理的具體操作,包括:如果系統(tǒng)時(shí)間是歸零依據(jù),根據(jù)系統(tǒng)時(shí)間信息去截取要回退的流水號(hào)中的系統(tǒng)時(shí)間,反算出本回退號(hào)的時(shí)間流水依據(jù),如果和當(dāng)前獲得的系統(tǒng)時(shí)間的流水依據(jù)一致,并且其他流水依據(jù)也一致,則執(zhí)行退號(hào)操作,否則號(hào)碼不回退,直接拋棄;和/或,最終業(yè)務(wù)流水號(hào),由多個(gè)子字段拼裝組合而成,該多個(gè)子字段為業(yè)務(wù)流水號(hào)元素信息;在業(yè)務(wù)流水號(hào)的生成過程中使用的元素信息包括:和具體的單據(jù)值無關(guān)的信息,包括常量、系統(tǒng)時(shí)間、序列號(hào)和隨機(jī)碼;和單據(jù)信息有關(guān)的信息即單據(jù)上直接錄入的信息或引用別的單據(jù)的信息,包括業(yè)務(wù)時(shí)間、手工錄入的字符串。在該技術(shù)方案中,可以在運(yùn)行維護(hù)時(shí),提供業(yè)務(wù)流水號(hào)規(guī)則的動(dòng)態(tài)調(diào)整能力,支持單據(jù)業(yè)務(wù)流水號(hào)生成方式的調(diào)整。
[0035]在上述技術(shù)方案中,優(yōu)選地,參見圖4,步驟204,具體包括:步驟402:基于生成的業(yè)務(wù)流水號(hào),采用業(yè)務(wù)流水號(hào)關(guān)系型數(shù)據(jù)庫(kù)保存流水號(hào)生成相關(guān)信息,并對(duì)獲取業(yè)務(wù)流水號(hào)的方法啟動(dòng)新的事務(wù);流水號(hào)生成相關(guān)信息,包括當(dāng)前最大流水號(hào)、回退號(hào);步驟404:基于啟動(dòng)的新事物,執(zhí)行數(shù)據(jù)庫(kù)行鎖,鎖定當(dāng)前歸零依據(jù)下的最大流水號(hào)記錄,這樣,在當(dāng)前流水號(hào)申請(qǐng)結(jié)束前,數(shù)據(jù)庫(kù)中的本條數(shù)據(jù)一直鎖定,直到當(dāng)前流水號(hào)申請(qǐng)結(jié)束,提交事務(wù)后,第二個(gè)同一流水依據(jù)的流水號(hào)申請(qǐng)方法才能結(jié)束等待,繼續(xù)執(zhí)行。在該技術(shù)方案中,可以采用的是數(shù)據(jù)庫(kù)行鎖,鎖定的只是一行數(shù)據(jù),對(duì)其他流水依據(jù)的流水號(hào)獲取,能夠并行執(zhí)行,保證了獲取業(yè)務(wù)流水號(hào)好的效率。
[0036]在上述技術(shù)方案中,優(yōu)選地,參見圖5,步驟206,具體包括:步驟502:數(shù)據(jù)庫(kù)行鎖處理后,對(duì)使用業(yè)務(wù)流水號(hào)的場(chǎng)景進(jìn)行分類,對(duì)不同的場(chǎng)景進(jìn)行不同的處理;步驟504:在前編碼場(chǎng)景下,通過前編碼表保證業(yè)務(wù)流水號(hào)的連續(xù)性;該通過前編碼表保證業(yè)務(wù)流水號(hào)的連續(xù)性的操作,具體包括:在前編碼的情況下,當(dāng)業(yè)務(wù)單據(jù)人員在獲取業(yè)務(wù)流水號(hào)后,既沒有保存,也沒有取消,而是直接關(guān)閉頁(yè)面或者系統(tǒng)時(shí),前編碼表中的數(shù)據(jù)會(huì)一直存;對(duì)超過預(yù)設(shè)時(shí)長(zhǎng)的前編碼表數(shù)據(jù)進(jìn)行清理后,將該清理的前編碼表數(shù)據(jù)轉(zhuǎn)移到回退表中,保證業(yè)務(wù)流水號(hào)的連續(xù)性;步驟506:在后編碼的場(chǎng)景下,通過事務(wù)監(jiān)控外部事務(wù),根據(jù)事務(wù)成功失敗來進(jìn)行相應(yīng)的請(qǐng)求級(jí)內(nèi)存操作,保證業(yè)務(wù)流水號(hào)的連續(xù)性。在該技術(shù)方案中,可以解決業(yè)務(wù)流水號(hào)的唯一性與連續(xù)性,方便軟件開發(fā)人員和提供運(yùn)行態(tài)規(guī)則調(diào)整的能力。
[0037]本發(fā)明的技術(shù)方案,涉及一種方便擴(kuò)展的業(yè)務(wù)流水號(hào)生成技術(shù),適用于在業(yè)務(wù)系統(tǒng)中獲取業(yè)務(wù)流水號(hào)。該方便擴(kuò)展的業(yè)務(wù)流水號(hào)生成技術(shù),對(duì)業(yè)務(wù)流水號(hào)的使用進(jìn)行了分析,基于數(shù)據(jù)庫(kù)行鎖,提出了通用的解決方式。
[0038]本發(fā)明的技術(shù)方案,主要解決業(yè)務(wù)流水號(hào)的通用性與可擴(kuò)展性,業(yè)務(wù)流水號(hào)的唯一性與連續(xù)性,方便軟件開發(fā)人員和提供運(yùn)行態(tài)規(guī)則調(diào)整的能力。
[0039]本發(fā)明的技術(shù)方案,具有以下特點(diǎn):
⑴業(yè)務(wù)流水號(hào)生成裝置的通用性和可擴(kuò)展性
本發(fā)明對(duì)業(yè)務(wù)流水號(hào)的生成器模型,提供默認(rèn)配置,對(duì)于簡(jiǎn)單的業(yè)務(wù)流水號(hào)要求,可以直接使用默認(rèn)實(shí)現(xiàn);對(duì)于默認(rèn)配置不能滿足業(yè)務(wù)流水號(hào)生成需求的,為開發(fā)人員提供方便的擴(kuò)展方式。在運(yùn)行維護(hù)時(shí),提供業(yè)務(wù)流水號(hào)規(guī)則的動(dòng)態(tài)調(diào)整能力,支持單據(jù)業(yè)務(wù)流水號(hào)生成方式的調(diào)整。
[0040]本發(fā)明技術(shù)方案的生成器裝置中,主要組件包括流水號(hào)生成引擎,流水號(hào)元素處理引擎,流水號(hào)生成引擎持久化接口,流水號(hào)規(guī)則模型,需要生成業(yè)務(wù)流水號(hào)的單據(jù)值對(duì)象模型,以及流水號(hào)生成