亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

規(guī)則引擎的構(gòu)建方法和裝置與流程

文檔序號(hào):11386173閱讀:376來(lái)源:國(guó)知局
規(guī)則引擎的構(gòu)建方法和裝置與流程

本發(fā)明涉及計(jì)算機(jī)互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種規(guī)則引擎的構(gòu)建方法和裝置。



背景技術(shù):

規(guī)則引擎是為了響應(yīng)和處理復(fù)雜多變的業(yè)務(wù)規(guī)則而設(shè)計(jì)的核心技術(shù)組件,規(guī)則引擎的使用場(chǎng)景包括但不限于以下兩種場(chǎng)景:第一種場(chǎng)景,大批量的靈活邏輯條件判斷,例如風(fēng)控系統(tǒng)里設(shè)置各種閾值的組合和分支條件ifelse等。第二種場(chǎng)景,經(jīng)常變動(dòng)的數(shù)據(jù)計(jì)算方式,比如針對(duì)銷售團(tuán)隊(duì)的階梯績(jī)效提成的計(jì)算處理。通過(guò)引入規(guī)則引擎,將復(fù)雜多變的部分,通過(guò)靈活配置的方式動(dòng)態(tài)定義和調(diào)整,從而保證了it系統(tǒng)能及時(shí)支撐業(yè)務(wù)需要的變化。

現(xiàn)在常見的業(yè)務(wù)規(guī)則引擎主要有:jess、jrules、drools等,從開發(fā)成本和價(jià)格上來(lái)說(shuō),現(xiàn)有的規(guī)則引擎的開發(fā)成本均較高,并且除了drools為開源免費(fèi)之外,其他規(guī)則引擎須經(jīng)商業(yè)授權(quán)付費(fèi)方可使用,并且價(jià)格高昂的。從規(guī)則描述語(yǔ)言rulelanguage來(lái)說(shuō),各個(gè)規(guī)則引擎都有自己的一套rulelanguage,使用一個(gè)規(guī)則引擎需要掌握相應(yīng)的rulelanguage,想用好rulelanguage需要更深入的學(xué)習(xí)。例如drools,drools支持使用java、groovy來(lái)定義規(guī)則,方法是在xml中嵌入java、groovy代碼,在一定程度上能夠降低java開發(fā)人員的學(xué)習(xí)成本,但由于是基于xml實(shí)現(xiàn)的,在java開發(fā)人員看來(lái),代碼格式依然怪異,而且也必須要學(xué)習(xí)這套xml的定義規(guī)則;drools同時(shí)也支持excel定義規(guī)則,可是從excel中讀取規(guī)則非常耗時(shí),其示例代碼中的excel規(guī)則讀取耗時(shí)約13484毫秒,預(yù)解析成drl文件讀取耗時(shí)依然需要大于7579毫秒的時(shí)間。從量級(jí)來(lái)說(shuō),雖然現(xiàn)有的規(guī)則引擎功能很強(qiáng)大,但是同時(shí)也比較重量級(jí)。

基于規(guī)則引擎價(jià)格高昂、開源規(guī)則引擎比較重量級(jí)且學(xué)習(xí)曲線較高,因此并非適用于所有業(yè)務(wù)系統(tǒng),商業(yè)化規(guī)則引擎性能高、易用性好、功能強(qiáng)大同時(shí)也比較重量級(jí),當(dāng)然更重要的是價(jià)格高昂,非一般項(xiàng)目可以擔(dān)負(fù);開源免費(fèi)的規(guī)則引擎效率較低,使用不是特別友好,也比較重量級(jí),并且現(xiàn)有的規(guī)則引擎對(duì)于開發(fā)人員和業(yè)務(wù)人員有較高的學(xué)習(xí)曲線,總體來(lái)說(shuō)是用這些規(guī)則引擎都有較高的成本投入,不利其于在技術(shù)團(tuán)隊(duì)全面推廣,一旦技術(shù)人員發(fā)生變動(dòng),需要再次投入規(guī)則引擎學(xué)習(xí)成本。

因此技術(shù)界一直在探索和嘗試價(jià)格低廉、易學(xué)習(xí)且比較輕量級(jí)的實(shí)現(xiàn)方式,有的直接硬編碼在程序中,有的實(shí)現(xiàn)了動(dòng)態(tài)改變但不方便管理,始終沒(méi)有形成一個(gè)成型成功的解決方案和產(chǎn)品。

針對(duì)上述現(xiàn)有技術(shù)中規(guī)則引擎開發(fā)成本高、學(xué)習(xí)成本高以及重量級(jí)的問(wèn)題,目前尚未提出有效的解決方案。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供了一種規(guī)則引擎的構(gòu)建方法和裝置,以至少解決現(xiàn)有技術(shù)中規(guī)則引擎開發(fā)成本高、學(xué)習(xí)成本高以及重量級(jí)的技術(shù)問(wèn)題。

根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種規(guī)則引擎的構(gòu)建方法,包括:根據(jù)預(yù)設(shè)的規(guī)則修改模板確定規(guī)則引擎的規(guī)則;對(duì)規(guī)則進(jìn)行預(yù)編譯和測(cè)試,測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件;將腳本文件推送至預(yù)設(shè)服務(wù)器中供規(guī)則引擎的調(diào)用終端調(diào)用。

進(jìn)一步地,將腳本文件推送至預(yù)設(shè)位置供規(guī)則引擎的調(diào)用終端調(diào)用,包括:按照規(guī)則的生效時(shí)間將腳本文件推送至zookeeper集群;通過(guò)zookeeper集群的zookeeperwatch將腳本文件推送至預(yù)設(shè)服務(wù)器中。

進(jìn)一步地,測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件之后,方法還包括:將腳本文件推送至第一預(yù)設(shè)位置供版本管理倉(cāng)庫(kù)調(diào)用,版本管理倉(cāng)庫(kù)包括至少如下之一:svn、git、cvs;和/或?qū)⒛_本文件推送至第二預(yù)設(shè)位置供消息中間件調(diào)用,消息中間件包括至少如下之一:activemq、rabbitmq、rocketmq、kafka。

進(jìn)一步地,測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件之后,還包括:將腳本文件存儲(chǔ)至數(shù)據(jù)庫(kù)中。

進(jìn)一步地,規(guī)則修改模板為可視化規(guī)則修改模板。

進(jìn)一步地,腳本文件為xml和/或groovy格式的腳本文件。

根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種規(guī)則引擎的構(gòu)建裝置,包括:確定模塊,用于根據(jù)預(yù)設(shè)的規(guī)則修改模板確定規(guī)則引擎的規(guī)則;測(cè)試模塊,用于對(duì)規(guī)則進(jìn)行預(yù)編譯和測(cè)試,測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件;推送模塊,用于將腳本文件推送至預(yù)設(shè)服務(wù)器中供規(guī)則引擎的調(diào)用終端調(diào)用。

進(jìn)一步地,推送模塊包括:第一推送模塊,用于按照規(guī)則的生效時(shí)間將腳本文件推送至zookeeper集群;第二推送模塊,用于通過(guò)zookeeper集群的zookeeperwatch將腳本文件推送至預(yù)設(shè)服務(wù)器中。

進(jìn)一步地,規(guī)則修改模板為可視化規(guī)則修改模板。

進(jìn)一步地,腳本文件為xml和/或groovy格式的腳本文件。

在本發(fā)明實(shí)施例中,通過(guò)根據(jù)預(yù)設(shè)的規(guī)則修改模板確定規(guī)則引擎的規(guī)則;對(duì)規(guī)則進(jìn)行預(yù)編譯和測(cè)試,測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件;將腳本文件推送至預(yù)設(shè)服務(wù)器中供規(guī)則引擎的調(diào)用終端調(diào)用,達(dá)到了構(gòu)建一個(gè)開發(fā)成本低、學(xué)習(xí)成本低以及輕量級(jí)的規(guī)則引擎的目的,從而實(shí)現(xiàn)了易學(xué)習(xí)、易用且靈活的技術(shù)效果,進(jìn)而解決了現(xiàn)有技術(shù)中規(guī)則引擎開發(fā)成本高、學(xué)習(xí)成本高以及重量級(jí)的技術(shù)問(wèn)題。

附圖說(shuō)明

此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:

圖1是根據(jù)本發(fā)明實(shí)施例的一種規(guī)則引擎的構(gòu)建方法的示意圖;

圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的規(guī)則引擎的構(gòu)建方法的示意圖;

圖3是根據(jù)本發(fā)明實(shí)施例的一種可選的規(guī)則引擎的構(gòu)建方法的示意圖;以及

圖4是根據(jù)本發(fā)明實(shí)施例的一種規(guī)則引擎的構(gòu)建裝置的示意圖。

具體實(shí)施方式

為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。

需要說(shuō)明的是,本發(fā)明的說(shuō)明書和權(quán)利要求書及上述附圖中的術(shù)語(yǔ)“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒(méi)有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。

實(shí)施例1

根據(jù)本發(fā)明實(shí)施例,提供了一種規(guī)則引擎的構(gòu)建方法的方法實(shí)施例,需要說(shuō)明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。

圖1是根據(jù)本發(fā)明實(shí)施例的規(guī)則引擎的構(gòu)建方法,如圖1所示,該方法包括如下步驟:

步驟s102,根據(jù)預(yù)設(shè)的規(guī)則修改模板確定規(guī)則引擎的規(guī)則。

具體的,通過(guò)開放預(yù)設(shè)的規(guī)則修改模板,相關(guān)的業(yè)務(wù)人員就不需要學(xué)習(xí)編碼知識(shí),可以節(jié)省學(xué)習(xí)成本,無(wú)論時(shí)系統(tǒng)研發(fā)還是后期業(yè)務(wù)人員修改規(guī)則,都比較友好,簡(jiǎn)單易用;并且由于規(guī)則修改模板是可以預(yù)設(shè)的,因此可以根據(jù)業(yè)務(wù)的需要任意擴(kuò)展規(guī)則修改模板,當(dāng)業(yè)務(wù)變動(dòng)有新的規(guī)則需求時(shí),視情況自主擴(kuò)展功能,且擴(kuò)展非常方便;相較于jrule是商業(yè)授權(quán),自己無(wú)法修改,以及drools需要先讀懂別人的源代碼才能修改,還需要承擔(dān)很大的修改風(fēng)險(xiǎn)(如因修改導(dǎo)致其他功能損壞、drools官方有修正錯(cuò)誤或安全問(wèn)題的新版本時(shí),難以升級(jí)等),本發(fā)明構(gòu)建的規(guī)則引擎更加靈活可控。

可選的,預(yù)設(shè)的規(guī)則修改模板可以設(shè)置為貼近實(shí)際業(yè)務(wù)規(guī)則定義,以使完全不用另外學(xué)習(xí)任何概念和語(yǔ)言。

步驟s104,對(duì)規(guī)則進(jìn)行預(yù)編譯和測(cè)試,測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件。

具體的,通過(guò)預(yù)編譯和測(cè)試,可以盡早發(fā)現(xiàn)有問(wèn)題的規(guī)則。

步驟s106,將腳本文件推送至預(yù)設(shè)服務(wù)器中供規(guī)則引擎的調(diào)用終端調(diào)用。

具體的,通過(guò)將根據(jù)規(guī)則生成的腳本文件集中在預(yù)設(shè)服務(wù)器上,可以方便進(jìn)行集中管理,而不用考慮使用規(guī)則的系統(tǒng)部署在哪里,可選的,可以設(shè)置統(tǒng)一的管理入口,以便于維護(hù),并且可以提供極其友好的可視化界面;其中,預(yù)設(shè)服務(wù)器也可以命名為腳本文件存儲(chǔ)服務(wù)器。

在本發(fā)明實(shí)施例中,通過(guò)根據(jù)預(yù)設(shè)的規(guī)則修改模板確定規(guī)則引擎的規(guī)則;對(duì)規(guī)則進(jìn)行預(yù)編譯和測(cè)試,測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件;將腳本文件推送至預(yù)設(shè)服務(wù)器中供規(guī)則引擎的調(diào)用終端調(diào)用,達(dá)到了構(gòu)建一個(gè)開發(fā)成本低、學(xué)習(xí)成本低以及輕量級(jí)的規(guī)則引擎的目的,從而實(shí)現(xiàn)了易學(xué)習(xí)、易用且靈活的技術(shù)效果,進(jìn)而解決了現(xiàn)有技術(shù)中規(guī)則引擎開發(fā)成本高、學(xué)習(xí)成本高以及重量級(jí)的技術(shù)問(wèn)題。

在一種可選的實(shí)施例中,調(diào)用終端在啟動(dòng)時(shí)首先初始化規(guī)則引擎以及規(guī)則引擎的規(guī)則對(duì)象,通過(guò)對(duì)預(yù)設(shè)服務(wù)器進(jìn)行監(jiān)控,如果監(jiān)控到腳本文件發(fā)生變化,則重新加載規(guī)則對(duì)象,在腳本文件為groovy的情況下,對(duì)groovy腳本引擎初始化,之后對(duì)業(yè)務(wù)規(guī)則進(jìn)行組裝,執(zhí)行并產(chǎn)生結(jié)果;其中,groovy是用于java虛擬機(jī)的一種敏捷的動(dòng)態(tài)語(yǔ)言,它是一種成熟的面向?qū)ο缶幊陶Z(yǔ)言,既可以用于面向?qū)ο缶幊?,又可以用作純粹的腳本語(yǔ)言,使用該種語(yǔ)言不必編寫過(guò)多的代碼,同時(shí)又具有閉包和動(dòng)態(tài)語(yǔ)言中的其他特性。

此處需要說(shuō)明的是,調(diào)用終端在調(diào)用規(guī)則的時(shí)候,可以通過(guò)jar引用,也可以通過(guò)rpc(遠(yuǎn)程過(guò)程調(diào)用協(xié)議)/http(超文本傳輸協(xié)議)遠(yuǎn)程調(diào)用,其中,jar(javaarchive,java歸檔文件)是一種文件格式,它允許將許多文件組合成一個(gè)壓縮文件。

在一種可選的實(shí)施例中,步驟s106中將腳本文件推送至預(yù)設(shè)位置供規(guī)則引擎的調(diào)用終端調(diào)用,包括:

步驟s202,按照規(guī)則的生效時(shí)間將腳本文件推送至zookeeper集群。

具體的,可以設(shè)定規(guī)則的生效時(shí)間,以定時(shí)推送更新,調(diào)用終端調(diào)用后則實(shí)時(shí)生效,其中,zookeeper是一個(gè)分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù)。

此處需要說(shuō)明的是,zookeeper集群可以實(shí)現(xiàn)腳本文件的分布式部署,但是本發(fā)明實(shí)施例中,如果沒(méi)有集群分布條件的話,也可以采用集中部署的方式,也就是說(shuō)本發(fā)明的規(guī)則引擎可以選擇集中部署、分布式集群部署等等,靈活多變。

步驟s204,通過(guò)zookeeper集群的zookeeperwatch將腳本文件推送至預(yù)設(shè)服務(wù)器中。

具體的,zookeeperwatch的定義如下:在zookeeper中,watch是一個(gè)一次性觸發(fā)器,會(huì)在被設(shè)置watch的數(shù)據(jù)發(fā)生變化的時(shí)候,發(fā)送給設(shè)置watch的客戶端。

在一種可選的實(shí)施例中,步驟s104中測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件之后,方法還包括:將腳本文件推送至第一預(yù)設(shè)位置供版本管理倉(cāng)庫(kù)調(diào)用,版本管理倉(cāng)庫(kù)包括至少如下之一:svn、git、cvs;和/或?qū)⒛_本文件推送至第二預(yù)設(shè)位置供消息中間件調(diào)用,消息中間件包括至少如下之一:activemq、rabbitmq、rocketmq、kafka。

其中,svn是subversion的簡(jiǎn)稱,是一個(gè)開放源代碼的版本控制系統(tǒng);git是一款免費(fèi)、開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目,cvs是一個(gè)c/s系統(tǒng),也是一個(gè)常用的代碼版本控制軟件,主要在開源軟件管理中使用。activemq是apache出品,最流行的、能力強(qiáng)勁的開源消息總線;rabbitmq是一個(gè)在amqp基礎(chǔ)上完成的,可復(fù)用的企業(yè)消息系統(tǒng);rocketmq是一個(gè)純java的開源消息中間件;kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費(fèi)者規(guī)模的網(wǎng)站中的所有動(dòng)作流數(shù)據(jù)。

在一種可選的實(shí)施例中,除了使用zookeeper進(jìn)行監(jiān)控以及推送的方式外,還可以采用其他文件共享方式,如disconfig[https://github.com/knightliao/disconf]、configcenter[https://github.com/baidu-ecom/configcenter]方式等。

在一種可選的實(shí)施例中,步驟s102中測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件之后,還包括:步驟s302,將腳本文件存儲(chǔ)至數(shù)據(jù)庫(kù)中。

在一種可選的實(shí)施例中,規(guī)則修改模板為可視化規(guī)則修改模板。

具體的,通過(guò)將規(guī)則修改模板可視化,更有利于相關(guān)人員直接在規(guī)則修改模板上進(jìn)行編輯,生成規(guī)則引擎的規(guī)則??梢暬?guī)則修改模板可以提供最貼合業(yè)務(wù)的自然語(yǔ)言模版定義方法,業(yè)務(wù)人員可以進(jìn)行完全可視化操作,不用了解模版背后的實(shí)現(xiàn)方式就可以通過(guò)模版修改規(guī)則,將使用規(guī)則引擎的門檻進(jìn)一步降低。

可選的,圖2給出了可以進(jìn)行編輯的關(guān)于銷售人員業(yè)務(wù)考核規(guī)則的規(guī)則修改模板,如圖2所示,圖2中生效時(shí)間即為修改保存后規(guī)則的生效時(shí)間,系統(tǒng)將按指定時(shí)間推送并生效新規(guī)則;預(yù)覽表示可以預(yù)編譯并檢測(cè)規(guī)則定義是否正確有效,并回顯給操作者;表示保存會(huì)先校驗(yàn)是否通過(guò)檢測(cè),通過(guò)的將修改完成的規(guī)則記錄入庫(kù),以及推送腳步。

在一種可選的實(shí)施例中,腳本文件為xml(可擴(kuò)展標(biāo)記語(yǔ)言)和/或groovy格式的腳本文件。

具體的,對(duì)于java開發(fā)人員來(lái)說(shuō),學(xué)習(xí)groovy僅需要一天,如果僅用來(lái)支撐規(guī)則引擎的話學(xué)習(xí)時(shí)間甚至不超過(guò)1小時(shí),因此groovy學(xué)習(xí)對(duì)于java開發(fā)人員來(lái)說(shuō)沒(méi)有難度,學(xué)習(xí)成本趨近于零,因此可以降低學(xué)習(xí)曲線。并且,根據(jù)規(guī)則修改模板確定的規(guī)則保存以后,可以通過(guò)轉(zhuǎn)換引擎將之轉(zhuǎn)換成groovy代碼,直接執(zhí)行在java系統(tǒng)內(nèi),可以與java代碼間無(wú)障礙調(diào)用,且性能不會(huì)降低。

可選的,圖2中的規(guī)則修改模板經(jīng)過(guò)轉(zhuǎn)換后可以得到如下代碼片段:

從圖2中的規(guī)則修改模板可以看出,對(duì)業(yè)務(wù)人員來(lái)說(shuō),界面非常友好,從上述生成的源代碼可以看出,上述代碼對(duì)java研發(fā)人員來(lái)說(shuō)基本沒(méi)有障礙。并且源代碼生成以后不需要編譯,規(guī)則調(diào)用終端只需要取得規(guī)則名稱(數(shù)據(jù)庫(kù)、配置等多種持久化方式),通過(guò)調(diào)用baserule提供的call方法即可得到經(jīng)過(guò)規(guī)則運(yùn)算的結(jié)果。

在一種可選的實(shí)施例中,本發(fā)明的規(guī)則引擎可以為基于spring動(dòng)態(tài)語(yǔ)言支持用groovy實(shí)現(xiàn)的分布式規(guī)則引擎。

在一種可選的實(shí)施例中,如圖3所示,可以將規(guī)則引擎劃分為引擎發(fā)布管理系統(tǒng)和規(guī)則文件推送平臺(tái),其中,引擎發(fā)布管理系統(tǒng)主要實(shí)現(xiàn)通過(guò)模板(此處的模板即規(guī)則修改模板)修改規(guī)則,將修改后的規(guī)則進(jìn)行預(yù)編譯以及測(cè)試,測(cè)試通過(guò)后可以生成groovy腳本文件,如果測(cè)試不通過(guò)可以繼續(xù)通過(guò)模板修改規(guī)則,可以將通過(guò)測(cè)試的規(guī)則存儲(chǔ)在數(shù)據(jù)庫(kù)中,并推送到zookeeper集群中;規(guī)則文件推送平臺(tái)主要實(shí)現(xiàn)通過(guò)zookeeperwatch將腳本文件推送至預(yù)設(shè)服務(wù)器中,圖3中顯示為通過(guò)zookeeperwatch推送xml和/或groovy格式的腳本文件,將其存儲(chǔ)在本地。規(guī)則調(diào)用終端可以基于spring啟動(dòng),初始化規(guī)則引擎以及規(guī)則對(duì)象,同時(shí)監(jiān)控本地xml和/或groovy格式的腳本文件是否發(fā)生變化,在發(fā)生變化的情況下重新加載規(guī)則對(duì)象,并初始化groovy腳本引擎,調(diào)用業(yè)務(wù)規(guī)則后組裝業(yè)務(wù)規(guī)則,執(zhí)行并返回結(jié)果。

實(shí)施例2

根據(jù)本發(fā)明實(shí)施例,提供了一種規(guī)則引擎的構(gòu)建裝置的產(chǎn)品實(shí)施例,圖4是根據(jù)本發(fā)明實(shí)施例的規(guī)則引擎的構(gòu)建裝置,如圖4所示,該裝置包括確定模塊、測(cè)試模塊和推送模塊,其中,確定模塊,用于根據(jù)預(yù)設(shè)的規(guī)則修改模板確定規(guī)則引擎的規(guī)則;測(cè)試模塊,用于對(duì)規(guī)則進(jìn)行預(yù)編譯和測(cè)試,測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件;推送模塊,用于將腳本文件推送至預(yù)設(shè)服務(wù)器中供規(guī)則引擎的調(diào)用終端調(diào)用。

在本發(fā)明實(shí)施例中,通過(guò)確定模塊根據(jù)預(yù)設(shè)的規(guī)則修改模板確定規(guī)則引擎的規(guī)則,由測(cè)試模塊對(duì)規(guī)則進(jìn)行預(yù)編譯和測(cè)試,測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件,最后由推送模塊將腳本文件推送至預(yù)設(shè)服務(wù)器中供規(guī)則引擎的調(diào)用終端調(diào)用,達(dá)到了構(gòu)建一個(gè)開發(fā)成本低、學(xué)習(xí)成本低以及輕量級(jí)的規(guī)則引擎的目的,從而實(shí)現(xiàn)了易學(xué)習(xí)、易用且靈活的技術(shù)效果,進(jìn)而解決了現(xiàn)有技術(shù)中規(guī)則引擎開發(fā)成本高、學(xué)習(xí)成本高以及重量級(jí)的技術(shù)問(wèn)題。

此處需要說(shuō)明的是,上述確定模塊、測(cè)試模塊和推送模塊對(duì)應(yīng)于實(shí)施例1中的步驟s102至步驟s106,上述模塊與對(duì)應(yīng)的步驟所實(shí)現(xiàn)的示例和應(yīng)用場(chǎng)景相同,但不限于上述實(shí)施例1所公開的內(nèi)容。需要說(shuō)明的是,上述模塊作為裝置的一部分可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行。

在一種可選的實(shí)施例中,推送模塊包括第一推送模塊和第二推送模塊,其中,第一推送模塊,用于按照規(guī)則的生效時(shí)間將腳本文件推送至zookeeper集群;第二推送模塊,用于通過(guò)zookeeper集群的zookeeperwatch將腳本文件推送至預(yù)設(shè)服務(wù)器中。

在一種可選的實(shí)施例中,裝置還包括第一推動(dòng)模塊和/或第二推送模塊,其中,第一推動(dòng)模塊用于在測(cè)試模塊測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件之后,將腳本文件推送至第一預(yù)設(shè)位置供版本管理倉(cāng)庫(kù)調(diào)用,版本管理倉(cāng)庫(kù)包括至少如下之一:svn、git、cvs;第一推動(dòng)模塊用于在測(cè)試模塊測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件之后,將腳本文件推送至第二預(yù)設(shè)位置供消息中間件調(diào)用,消息中間件包括至少如下之一:activemq、rabbitmq、rocketmq、kafka。

此處需要說(shuō)明的是,上述第一推送模塊和第二推送模塊對(duì)應(yīng)于實(shí)施例1中的步驟s202至步驟s204,上述模塊與對(duì)應(yīng)的步驟所實(shí)現(xiàn)的示例和應(yīng)用場(chǎng)景相同,但不限于上述實(shí)施例1所公開的內(nèi)容。需要說(shuō)明的是,上述模塊作為裝置的一部分可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行。

在一種可選的實(shí)施例中,裝置還包括存儲(chǔ)模塊,用于在測(cè)試模塊測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件之后,將腳本文件存儲(chǔ)至數(shù)據(jù)庫(kù)中。

此處需要說(shuō)明的是,上述存儲(chǔ)模塊對(duì)應(yīng)于實(shí)施例1中的步驟s302,上述模塊與對(duì)應(yīng)的步驟所實(shí)現(xiàn)的示例和應(yīng)用場(chǎng)景相同,但不限于上述實(shí)施例1所公開的內(nèi)容。需要說(shuō)明的是,上述模塊作為裝置的一部分可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行。

在一種可選的實(shí)施例中,規(guī)則修改模板為可視化規(guī)則修改模板。

在一種可選的實(shí)施例中,腳本文件為xml和/或groovy格式的腳本文件。

實(shí)施例3

根據(jù)本發(fā)明實(shí)施例,提供了一種存儲(chǔ)介質(zhì)的產(chǎn)品實(shí)施例,該存儲(chǔ)介質(zhì)包括存儲(chǔ)的程序,其中,在程序運(yùn)行時(shí)控制存儲(chǔ)介質(zhì)所在設(shè)備執(zhí)行上述規(guī)則引擎的構(gòu)建方法。

實(shí)施例4

根據(jù)本發(fā)明實(shí)施例,提供了一種處理器的產(chǎn)品實(shí)施例,該處理器用于運(yùn)行程序,其中,程序運(yùn)行時(shí)執(zhí)行上述規(guī)則引擎的構(gòu)建方法。

實(shí)施例5

根據(jù)本發(fā)明實(shí)施例,提供了一種終端的產(chǎn)品實(shí)施例,該終端包括確定模塊、測(cè)試模塊、推送模塊和處理器,其中,確定模塊,用于根據(jù)預(yù)設(shè)的規(guī)則修改模板確定規(guī)則引擎的規(guī)則;測(cè)試模塊,用于對(duì)規(guī)則進(jìn)行預(yù)編譯和測(cè)試,測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件;推送模塊,用于將腳本文件推送至預(yù)設(shè)服務(wù)器中供規(guī)則引擎的調(diào)用終端調(diào)用;處理器,處理器運(yùn)行程序,其中,程序運(yùn)行時(shí)對(duì)于從確定模塊、測(cè)試模塊和推送模塊輸出的數(shù)據(jù)執(zhí)行如下處理步驟:第一步驟,根據(jù)預(yù)設(shè)的規(guī)則修改模板確定規(guī)則引擎的規(guī)則,第二步驟,對(duì)規(guī)則進(jìn)行預(yù)編譯和測(cè)試,測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件,以及第三步驟,將腳本文件推送至預(yù)設(shè)服務(wù)器中供規(guī)則引擎的調(diào)用終端調(diào)用。

實(shí)施例6

根據(jù)本發(fā)明實(shí)施例,提供了一種終端的產(chǎn)品實(shí)施例,該終端包括確定模塊、測(cè)試模塊、推送模塊和存儲(chǔ)介質(zhì),其中,確定模塊,用于根據(jù)預(yù)設(shè)的規(guī)則修改模板確定規(guī)則引擎的規(guī)則;測(cè)試模塊,用于對(duì)規(guī)則進(jìn)行預(yù)編譯和測(cè)試,測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件;推送模塊,用于將腳本文件推送至預(yù)設(shè)服務(wù)器中供規(guī)則引擎的調(diào)用終端調(diào)用;存儲(chǔ)介質(zhì),用于存儲(chǔ)程序,其中,程序在運(yùn)行時(shí)對(duì)于從確定模塊、測(cè)試模塊和推送模塊輸出的數(shù)據(jù)執(zhí)行如下處理步驟:第一步驟,根據(jù)預(yù)設(shè)的規(guī)則修改模板確定規(guī)則引擎的規(guī)則,第二步驟,對(duì)規(guī)則進(jìn)行預(yù)編譯和測(cè)試,測(cè)試通過(guò)后根據(jù)規(guī)則生成腳本文件,以及第三步驟,將腳本文件推送至預(yù)設(shè)服務(wù)器中供規(guī)則引擎的調(diào)用終端調(diào)用。

上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。

在本發(fā)明的上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒(méi)有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。

在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過(guò)其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。

所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。

另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。

所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。

以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1