本發(fā)明涉及數(shù)據(jù)處理,尤其涉及一種基于有記憶規(guī)則引擎的數(shù)據(jù)處理方法、系統(tǒng)及介質(zhì)。
背景技術(shù):
1、規(guī)則引擎是一種嵌入在應(yīng)用程序中的組件,它實(shí)現(xiàn)了將業(yè)務(wù)決策從應(yīng)用程序代碼中分離出來(lái),使用預(yù)定義的語(yǔ)義模塊編寫(xiě)業(yè)務(wù)決策。它通過(guò)將業(yè)務(wù)決策從應(yīng)用程序代碼中分離出來(lái),使用預(yù)定義的語(yǔ)義模塊編寫(xiě)業(yè)務(wù)決策,接受數(shù)據(jù)輸入,解釋業(yè)務(wù)規(guī)則,并根據(jù)業(yè)務(wù)規(guī)則做出業(yè)務(wù)決策?,F(xiàn)有的規(guī)則引擎一般用于數(shù)值邏輯運(yùn)算相對(duì)簡(jiǎn)單但參數(shù)可靈活的應(yīng)用場(chǎng)景,比如:在金融風(fēng)控場(chǎng)景中,使用規(guī)則引擎根據(jù)借款人的信用評(píng)分、收入水平和其他財(cái)務(wù)信息自動(dòng)判斷是否批準(zhǔn)貸款【如果借款人的信用評(píng)分>=?700并且借款人的月收入>5000,那么批準(zhǔn)借款人的貸款】;在醫(yī)療診斷場(chǎng)景中,使用規(guī)則引擎可以輔助醫(yī)生根據(jù)患者的癥狀和檢查結(jié)果,提供可能的診斷和治療方案【如果患者患有高血壓并且患者的年齡>60,那么建議患者進(jìn)行定期檢查】;在保險(xiǎn)理賠行業(yè),使用規(guī)則引擎來(lái)自動(dòng)化理賠流程,判斷理賠申請(qǐng)是否符合公司政策,快速處理簡(jiǎn)單的理賠請(qǐng)求【如果理賠申請(qǐng)金額<5000并且理賠申請(qǐng)的事故日期在保單有效期內(nèi),那么快速處理理賠】。
2、現(xiàn)有規(guī)則引擎的運(yùn)用都是建立用于簡(jiǎn)單數(shù)據(jù)運(yùn)算的業(yè)務(wù)上,如4個(gè)簡(jiǎn)單的加、減、乘、除算子,在運(yùn)用這些算子進(jìn)行公式生成的過(guò)程中,并不需要考慮歷史值對(duì)最新一次運(yùn)算結(jié)果的影響,而是將同一個(gè)算子在每一次被調(diào)用時(shí)都作為獨(dú)立的一次新調(diào)用來(lái)處理,并沒(méi)考慮到需要使用上一次輸入值或者結(jié)果值來(lái)計(jì)算最新一次的結(jié)果情況。
3、傳統(tǒng)數(shù)據(jù)處理技術(shù)往往局限于特定的數(shù)據(jù)類型和業(yè)務(wù)場(chǎng)景,如專門(mén)針對(duì)時(shí)序數(shù)據(jù)或非時(shí)序數(shù)據(jù)的處理方案,這些方案在處理復(fù)雜多變的業(yè)務(wù)需求時(shí)顯得力不從心。特別是,在處理既包含時(shí)序特征又涉及非時(shí)序數(shù)據(jù)的混合業(yè)務(wù)場(chǎng)景時(shí),現(xiàn)有的數(shù)據(jù)處理工具和方法往往缺乏足夠的靈活性和適應(yīng)性,難以滿足企業(yè)對(duì)于高效、精準(zhǔn)數(shù)據(jù)分析的迫切需求。對(duì)于時(shí)序數(shù)據(jù)業(yè)務(wù)場(chǎng)景,如金融交易分析、物聯(lián)網(wǎng)設(shè)備監(jiān)控等,數(shù)據(jù)隨時(shí)間變化的特性至關(guān)重要,需要能夠捕捉數(shù)據(jù)的時(shí)間序列關(guān)系和趨勢(shì)。然而,傳統(tǒng)的時(shí)序數(shù)據(jù)處理技術(shù)通常僅關(guān)注數(shù)據(jù)的時(shí)間維度,忽略了業(yè)務(wù)邏輯中可能需要的多歷史記憶值處理,即基于過(guò)去多個(gè)時(shí)間點(diǎn)的數(shù)據(jù)來(lái)做出當(dāng)前決策或預(yù)測(cè)的能力。另一方面,非時(shí)序數(shù)據(jù)業(yè)務(wù)場(chǎng)景,如客戶關(guān)系管理、庫(kù)存管理等,雖然不涉及明確的時(shí)間序列分析,但同樣需要處理復(fù)雜的數(shù)據(jù)關(guān)系和規(guī)則,尤其是在決策支持系統(tǒng)中,經(jīng)常需要基于歷史數(shù)據(jù)和業(yè)務(wù)規(guī)則進(jìn)行智能推理和判斷。現(xiàn)有的非時(shí)序數(shù)據(jù)處理方案往往缺乏足夠的記憶機(jī)制,難以有效支持這類需要多步驟、多條件判斷的業(yè)務(wù)邏輯?,F(xiàn)有的數(shù)據(jù)處理系統(tǒng)大多采用硬編碼或固定配置的方式實(shí)現(xiàn)特定的數(shù)據(jù)處理邏輯,這不僅限制了系統(tǒng)的靈活性,也增加了維護(hù)和升級(jí)的成本。業(yè)務(wù)人員在進(jìn)行數(shù)據(jù)分析時(shí),通常需要依賴專業(yè)的技術(shù)人員進(jìn)行復(fù)雜的編程或配置工作,這不僅降低了工作效率,也限制了業(yè)務(wù)人員自主探索和創(chuàng)新的能力。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種基于有記憶規(guī)則引擎的數(shù)據(jù)處理方法、系統(tǒng)及介質(zhì)。
2、本發(fā)明的目的是通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn)的:本發(fā)明第一方面提供:一種基于有記憶規(guī)則引擎的數(shù)據(jù)處理方法,包括以下步驟:
3、建立可動(dòng)態(tài)擴(kuò)展的有記憶可擦除算子庫(kù);
4、在分析任務(wù)創(chuàng)建頁(yè)面選取任務(wù)所需算子;
5、為各個(gè)算子設(shè)置數(shù)據(jù)源,將所有算子轉(zhuǎn)變?yōu)楠?dú)立的算子對(duì)象,根據(jù)所有算子對(duì)象的連接關(guān)系生成任務(wù)公式文本;
6、將任務(wù)公式文本保存到數(shù)據(jù)庫(kù)中;
7、當(dāng)處理目標(biāo)數(shù)據(jù)時(shí),先將目標(biāo)數(shù)據(jù)輸入數(shù)據(jù)預(yù)處理模塊進(jìn)行預(yù)處理得到第一數(shù)據(jù);然后將第一數(shù)據(jù)輸入任務(wù)執(zhí)行引擎,任務(wù)執(zhí)行引擎從數(shù)據(jù)庫(kù)中加載任務(wù)公式文本對(duì)第一數(shù)據(jù)進(jìn)行分析運(yùn)算得到計(jì)算結(jié)果值;最后將計(jì)算結(jié)果值輸入結(jié)果信號(hào)處理模塊執(zhí)行目標(biāo)任務(wù)。
8、優(yōu)選的,所述可動(dòng)態(tài)擴(kuò)展的有記憶可擦除算子庫(kù)中的算子的內(nèi)部處理邏輯包括以下步驟:
9、將算子的計(jì)算結(jié)果對(duì)象記為result,并根據(jù)算子運(yùn)算參數(shù)和算子運(yùn)算邏輯對(duì)計(jì)算結(jié)果對(duì)象result進(jìn)行初始化賦值操作;
10、若任務(wù)執(zhí)行引擎在執(zhí)行時(shí)傳入的環(huán)境參數(shù)clear為1,則將算子對(duì)象對(duì)應(yīng)記憶單元中的值重置,否則保留算子對(duì)象對(duì)應(yīng)記憶單元的值以供后續(xù)運(yùn)算過(guò)程繼續(xù)使用;然后根據(jù)算子對(duì)象的objectname從該算子對(duì)象對(duì)應(yīng)的記憶單元中取出記憶值,記為memory[objname];
11、根據(jù)記億值memory[objname]和算子對(duì)象被調(diào)用時(shí)傳入的算子運(yùn)算參數(shù)一起按照算子運(yùn)算邏輯進(jìn)行計(jì)算,并將得到運(yùn)算結(jié)果值更新到計(jì)算結(jié)果對(duì)象result;
12、依照算子運(yùn)算邏輯完成對(duì)記憶單元值的更新后,返回最終的計(jì)算結(jié)果對(duì)象result;
13、所述記憶單元值存儲(chǔ)在三層樹(shù)狀存儲(chǔ)結(jié)構(gòu)中,所述三層樹(shù)狀存儲(chǔ)結(jié)構(gòu)的第一層存儲(chǔ)各個(gè)算子對(duì)象的名稱,三層樹(shù)狀存儲(chǔ)結(jié)構(gòu)的第二層存儲(chǔ)需要算子邏輯存取的記憶參數(shù)名稱,三層樹(shù)狀存儲(chǔ)結(jié)構(gòu)的第三層存儲(chǔ)實(shí)際的記憶單元值。
14、優(yōu)選的,對(duì)于無(wú)記憶算子,在對(duì)計(jì)算結(jié)果對(duì)象result進(jìn)行初始化賦值操作后,直接使用算子運(yùn)算參數(shù)按照算子運(yùn)算邏輯進(jìn)行計(jì)算,并在將得到運(yùn)算結(jié)果值更新到計(jì)算結(jié)果對(duì)象result后,直接返回最終的計(jì)算結(jié)果對(duì)象result。
15、優(yōu)選的,在設(shè)定算子運(yùn)算參數(shù)時(shí)均按照算子最小所需的算子運(yùn)算參數(shù)個(gè)數(shù)以及同算子嵌套計(jì)算的原則進(jìn)行設(shè)置。
16、優(yōu)選的,當(dāng)下降沿算子down被調(diào)用的表達(dá)式為down(name1,a),且任務(wù)執(zhí)行引擎在執(zhí)行時(shí)傳入的環(huán)境參數(shù)clear被賦值為0時(shí),下降沿算子down的運(yùn)算邏輯包括以下步驟:
17、初始化下降沿算子down的計(jì)算結(jié)果對(duì)象result的值字段為0,并賦值算子運(yùn)算參數(shù)a的時(shí)間戳字段給計(jì)算結(jié)果對(duì)象result的時(shí)間戳字段;
18、依據(jù)下降沿算子down的算子對(duì)象名稱從記憶單元中取出上一次調(diào)用的參數(shù)值;
19、若上一次調(diào)用的參數(shù)值大于算子運(yùn)算參數(shù)a的值,則更新計(jì)算結(jié)果對(duì)象result的值為1,否則不更新計(jì)算結(jié)果對(duì)象result的值;
20、更新下降沿算子down的記憶單元中的算子對(duì)象的記憶值為算子運(yùn)算參數(shù)a的值,并返回本次計(jì)算結(jié)果對(duì)象result。
21、優(yōu)選的,當(dāng)上穿算子crossover被調(diào)用的表達(dá)式為crossover(name1,a,b),且任務(wù)執(zhí)行引擎在執(zhí)行時(shí)傳入的環(huán)境參數(shù)clear被賦值為0時(shí),上穿算子crossover的運(yùn)算邏輯包括以下步驟:
22、初始化上穿算子crossover的計(jì)算結(jié)果對(duì)象result的值字段為0,并賦值算子運(yùn)算參數(shù)a和b的時(shí)間戳字段給計(jì)算結(jié)果對(duì)象result的時(shí)間戳字段,此時(shí)result.時(shí)間戳=max(a.時(shí)間戳,b.時(shí)間戳),result.值=0;
23、依據(jù)上穿算子crossover的算子對(duì)象名稱從記憶單元中取出上一次調(diào)用的第一參數(shù)值和第二參數(shù)值;
24、使用第一參數(shù)值、第二參數(shù)值與算子運(yùn)算參數(shù)a、b進(jìn)行計(jì)算,若記憶單元中取出的第一參數(shù)值小于等于第二參數(shù)值并且本次傳入的算子運(yùn)算參數(shù)a的值大于b的值,則更新計(jì)算結(jié)果對(duì)象result的值為1,否則不更新計(jì)算結(jié)果對(duì)象result的值;
25、更新上穿算子crossover的記憶單元中的算子對(duì)象的記憶值為本次調(diào)用的兩個(gè)算子運(yùn)算參數(shù)a和b的值,并返回本次計(jì)算結(jié)果對(duì)象result。
26、優(yōu)選的,當(dāng)無(wú)記憶乘法算子mul被調(diào)用的表達(dá)式為mul(name1,a,b),且任務(wù)執(zhí)行引擎在執(zhí)行時(shí)傳入的環(huán)境參數(shù)clear被賦值為0時(shí),無(wú)記憶乘法算子mul的運(yùn)算邏輯包括以下步驟:
27、初始化無(wú)記憶乘法算子mul的計(jì)算結(jié)果對(duì)象result的值字段為0,并賦值算子運(yùn)算參數(shù)a和b的時(shí)間戳字段給計(jì)算結(jié)果對(duì)象result的時(shí)間戳字段,此時(shí)result.時(shí)間戳=max(a.時(shí)間戳,b.時(shí)間戳),result.值=0;
28、使用算子參數(shù)a和b的值字段進(jìn)行計(jì)算,并更新result.值=a.值*b.值,然后直接返回此時(shí)計(jì)算結(jié)果對(duì)象result的值。
29、優(yōu)選的,當(dāng)可動(dòng)態(tài)擴(kuò)展的有記憶可擦除算子庫(kù)中沒(méi)有任務(wù)所需算子時(shí),按照算子創(chuàng)建規(guī)范為任務(wù)添加所需的算子到可擴(kuò)展的有記憶可擦除算子庫(kù)當(dāng)中。
30、本發(fā)明第二方面提供:一種基于有記憶規(guī)則引擎的數(shù)據(jù)處理系統(tǒng),用于實(shí)現(xiàn)上述任一種基于有記憶規(guī)則引擎的數(shù)據(jù)處理方法,包括:
31、算子庫(kù)建立模塊,用于建立可動(dòng)態(tài)擴(kuò)展的有記憶可擦除算子庫(kù);
32、算子選取模塊,用于在分析任務(wù)創(chuàng)建頁(yè)面選取任務(wù)所需算子;
33、任務(wù)公式文本生成模塊,用于為各個(gè)算子設(shè)置數(shù)據(jù)源,將所有算子轉(zhuǎn)變?yōu)楠?dú)立的算子對(duì)象,根據(jù)所有算子對(duì)象的連接關(guān)系生成任務(wù)公式文本;
34、數(shù)據(jù)庫(kù)模塊,用于將任務(wù)公式文本保存到數(shù)據(jù)庫(kù)中;
35、目標(biāo)任務(wù)執(zhí)行模塊,用將目標(biāo)數(shù)據(jù)輸入數(shù)據(jù)預(yù)處理模塊進(jìn)行預(yù)處理得到第一數(shù)據(jù);然后將第一數(shù)據(jù)輸入任務(wù)執(zhí)行引擎,任務(wù)執(zhí)行引擎從數(shù)據(jù)庫(kù)中加載任務(wù)公式文本對(duì)第一數(shù)據(jù)進(jìn)行分析運(yùn)算得到計(jì)算結(jié)果值;最后將計(jì)算結(jié)果值輸入結(jié)果信號(hào)處理模塊執(zhí)行目標(biāo)任務(wù)。
36、本發(fā)明第三方面提供:一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,所述計(jì)算機(jī)可執(zhí)行指令被處理器加載并執(zhí)行時(shí),實(shí)現(xiàn)上述任一種基于有記憶規(guī)則引擎的數(shù)據(jù)處理方法。
37、本發(fā)明的有益效果是:
38、1)適用于時(shí)序數(shù)據(jù)業(yè)務(wù)場(chǎng)景,又適用于非時(shí)序數(shù)據(jù)業(yè)務(wù)場(chǎng)景,既能處理簡(jiǎn)單無(wú)需記憶歷史值場(chǎng)景,又能處理多歷史記憶值的場(chǎng)景,同時(shí)本發(fā)明技術(shù)方案具備良好的擴(kuò)展性,可不斷豐富完善算子庫(kù)的可使用算子,支持業(yè)務(wù)人員以最簡(jiǎn)單拖拉拽方式完成業(yè)務(wù)數(shù)據(jù)分析;簡(jiǎn)化了業(yè)務(wù)人員進(jìn)行數(shù)據(jù)分析操作與效率,更好的支持業(yè)務(wù)與技術(shù)相分離,提升企業(yè)工作效率。