業(yè)務(wù)流水號(hào)生成裝置和方法
【專利說(shuō)明】業(yè)務(wù)流水號(hào)生成裝置和方法
[0001]
技術(shù)領(lǐng)域
[0002]本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,具體地,涉及一種業(yè)務(wù)流水號(hào)生成裝置和一種業(yè)務(wù)流水號(hào)生成方法。
[0003]
【背景技術(shù)】
[0004]在軟件系統(tǒng)中,經(jīng)常會(huì)遇到給單據(jù)設(shè)置一個(gè)業(yè)務(wù)流水號(hào)的情況。業(yè)務(wù)流水號(hào),可以手工錄入,也可以通過(guò)一定的算法生成。對(duì)于不同的單據(jù),通常會(huì)對(duì)業(yè)務(wù)流水號(hào)有一定的規(guī)則要求,如:加上固定的前綴,按一定的依據(jù)從新從零開(kāi)始流水等等。
[0005]手工錄入業(yè)務(wù)流水號(hào),一方面,容易照成錯(cuò)誤,錄入不符合規(guī)則的業(yè)務(wù)流水號(hào),另一方面,難以保證連續(xù),在并發(fā)錄入的情況下,容易照成重復(fù)。對(duì)系統(tǒng)生成的流水號(hào),目前很多軟件系統(tǒng)都是自己實(shí)現(xiàn)了一些簡(jiǎn)單的生成方式,實(shí)現(xiàn)了業(yè)務(wù)流水號(hào)的生成和回收,缺乏通用性和可擴(kuò)展性。
[0006]因此,需要一種新的業(yè)務(wù)流水號(hào)生成技術(shù),可以在現(xiàn)有的業(yè)務(wù)流水號(hào)生成方式基礎(chǔ)上,充分利用單對(duì)象類型完成多對(duì)象類型元數(shù)據(jù)的業(yè)務(wù)流水號(hào)生成,建立多對(duì)象類型元數(shù)據(jù)參與的面向復(fù)雜類型業(yè)務(wù)流水號(hào)生成的通用、統(tǒng)一生成思路。
[0007]
【發(fā)明內(nèi)容】
[0008]本發(fā)明正是基于上述問(wèn)題,提出了一種新的業(yè)務(wù)流水號(hào)生成技術(shù),可以在現(xiàn)有的業(yè)務(wù)流水號(hào)生成方式基礎(chǔ)上,充分利用單對(duì)象類型完成多對(duì)象類型元數(shù)據(jù)的業(yè)務(wù)流水號(hào)生成,建立多對(duì)象類型元數(shù)據(jù)參與的面向復(fù)雜類型業(yè)務(wù)流水號(hào)生成的通用、統(tǒng)一生成思路。
[0009]有鑒于此,本發(fā)明提出了一種業(yè)務(wù)流水號(hào)生成裝置,包括:流水號(hào)生成單元,用于基于用戶請(qǐng)求生成業(yè)務(wù)流水號(hào),并基于生成的業(yè)務(wù)流水號(hào)進(jìn)行元素處理、持久化處理和模型處理;數(shù)據(jù)庫(kù)行鎖單元,用于基于元素處理、持久化處理和模型處理后的業(yè)務(wù)流水號(hào),進(jìn)行相關(guān)信息保存和記錄鎖定處理;業(yè)務(wù)流水號(hào)連續(xù)性處理單元,用于基于相關(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ī)則。
[0010]在上述技術(shù)方案中,優(yōu)選地,所述流水號(hào)生成單元,具體包括:流水號(hào)生成引擎,用于基于用戶請(qǐng)求,對(duì)于滿足預(yù)設(shè)業(yè)務(wù)流水號(hào)生成條件的業(yè)務(wù)流水號(hào)生成請(qǐng)求,采用默認(rèn)配置生成所需業(yè)務(wù)流水號(hào);流水號(hào)元素處理引擎,用于將生成的業(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)處理;流水號(hào)生成引擎持久化接口,用于基于獲得的最終業(yè)務(wù)流水號(hào),通過(guò)流水號(hào)生成上下文獲取流水號(hào)元素處理器,對(duì)最終業(yè)務(wù)流水號(hào)進(jìn)行流水號(hào)處理引擎持久化處理;流水號(hào)規(guī)則模型,用于基于流水號(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)碼;單據(jù)值對(duì)象模型,用于基于產(chǎn)生的隨機(jī)號(hào)碼,獲取與該隨機(jī)號(hào)碼對(duì)應(yīng)的業(yè)務(wù)流水號(hào)元素,分別提供默認(rèn)的元素處理器;流水號(hào)生成上下文模型,用于基于提供的元素處理器,獲取流水號(hào)生成上下文信息,進(jìn)行業(yè)務(wù)流水號(hào)的信息配置,并對(duì)配置的信息進(jìn)行保存,用于業(yè)務(wù)流水號(hào)生成過(guò)程中的隨時(shí)調(diào)用。在該技術(shù)方案中,可以通過(guò)業(yè)務(wù)流水號(hào)的生成和穩(wěn)固性處理,解決業(yè)務(wù)流水號(hào)的通用性與可擴(kuò)展性。
[0011 ] 在上述技術(shù)方案中,優(yōu)選地,所述流水號(hào)生成引擎,還用于對(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)的生成過(guò)程中使用的元素信息包括:和具體的單據(jù)值無(wú)關(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)整。
[0012]在上述技術(shù)方案中,優(yōu)選地,所述數(shù)據(jù)庫(kù)行鎖單元,具體包括:相關(guān)信息保存模塊,用于基于生成的業(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)記錄鎖定模塊,用于基于啟動(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)好的效率。
[0013]在上述技術(shù)方案中,優(yōu)選地,所述業(yè)務(wù)流水號(hào)連續(xù)性處理單元,具體包括:場(chǎng)景分類模塊,用于數(shù)據(jù)庫(kù)行鎖處理后,對(duì)使用業(yè)務(wù)流水號(hào)的場(chǎng)景進(jìn)行分類,對(duì)不同的場(chǎng)景進(jìn)行不同的處理;前編碼場(chǎng)景處理模塊,用于在前編碼場(chǎng)景下,通過(guò)前編碼表保證業(yè)務(wù)流水號(hào)的連續(xù)性;該通過(guò)前編碼表保證業(yè)務(wù)流水號(hào)的連續(xù)性的操作,具體包括:在前編碼的情況下,當(dāng)業(yè)務(wù)單據(jù)人員在獲取業(yè)務(wù)流水號(hào)后,既沒(méi)有保存,也沒(méi)有取消,而是直接關(guān)閉頁(yè)面或者系統(tǒng)時(shí),前編碼表中的數(shù)據(jù)會(huì)一直存;對(duì)超過(guò)預(yù)設(shè)時(shí)長(zhǎng)的前編碼表數(shù)據(jù)進(jìn)行清理后,將該清理的前編碼表數(shù)據(jù)轉(zhuǎn)移到回退表中,保證業(yè)務(wù)流水號(hào)的連續(xù)性;后編碼場(chǎng)景處理模塊,用于在后編碼的場(chǎng)景下,通過(guò)事務(wù)監(jiān)控外部事務(wù),根據(jù)事務(wù)成功失敗來(lái)進(jìn)行相應(yīng)的請(qǐng)求級(jí)內(nèi)存操作,保證業(yè)務(wù)流水號(hào)的連續(xù)性。在該技術(shù)方案中,可以解決業(yè)務(wù)流水號(hào)的唯一性與連續(xù)性,方便軟件開(kāi)發(fā)人員和提供運(yùn)行態(tài)規(guī)則調(diào)整的能力。
[0014]根據(jù)本發(fā)明的又一個(gè)方面,還提出了一種業(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ī)則。
[0015]在上述技術(shù)方案中,優(yōu)選地,所述步驟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),通過(guò)流水號(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)的隨