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

<dl id="s6ycz"><wbr id="s6ycz"></wbr></dl>

業(yè)務(wù)規(guī)則腳本生成方法及裝置與流程

文檔序號:11864372閱讀:240來源:國知局
業(yè)務(wù)規(guī)則腳本生成方法及裝置與流程

本發(fā)明涉及物聯(lián)網(wǎng)領(lǐng)域,尤其涉及一種業(yè)務(wù)規(guī)則腳本生成方法及裝置。



背景技術(shù):

目前的物聯(lián)網(wǎng)應(yīng)用,不同行業(yè)的解決方案,或者同一行業(yè)的不同項(xiàng)目中,用戶對數(shù)據(jù),告警處理的業(yè)務(wù)規(guī)則也不盡相同(比如:某個溫度傳感器溫度超過不同的限定值,產(chǎn)生不同級別的告警;系統(tǒng)出現(xiàn)緊急告警前給用戶發(fā)送短信通知;某個門禁告警控制攝像頭轉(zhuǎn)動到指定預(yù)置位;通過GPS(Global Positioning System,全球定位系統(tǒng))監(jiān)控車輛離開某個區(qū)域產(chǎn)生告警;每天定時通過郵件發(fā)送一些統(tǒng)計報表信息給管理員等等),也會經(jīng)常發(fā)生變化。

在目前的應(yīng)用軟件中,對于業(yè)務(wù)規(guī)則變化的處理主要包括以下幾種方式:1、直接編寫代碼,生成新的業(yè)務(wù)規(guī)則。2、使用通用的規(guī)則引擎:基于JRules、Drools等規(guī)則引擎,需要使用規(guī)則描述語言,如基于XML(Extensible Markup Language,可擴(kuò)展標(biāo)記語言)或特定的腳本語法來編寫業(yè)務(wù)規(guī)則,再編譯、測試和重新部署。顯然,這兩種業(yè)務(wù)規(guī)則的生成方式,都需要重新編碼和測試、學(xué)習(xí)難度也較大,即使在業(yè)務(wù)規(guī)則變化較小時也需要完成這些工作,導(dǎo)致開發(fā)工作量大,效率低下。



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

本發(fā)明的主要目的在于提出一種業(yè)務(wù)規(guī)則腳本生成方法及裝置,旨在解決傳統(tǒng)的業(yè)務(wù)規(guī)則腳本生成方式,開發(fā)工作量大,效率低下的技術(shù)問題。

為實(shí)現(xiàn)上述目的,本發(fā)明提供的一種業(yè)務(wù)規(guī)則腳本生成方法,所述業(yè)務(wù)規(guī)則腳本生成方法包括:

顯示預(yù)設(shè)的規(guī)則配置界面;

在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器時,獲取所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板;

將基于所述規(guī)則配置界面輸入的代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,以生成業(yè)務(wù)規(guī)則腳本。

優(yōu)選地,所述在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器時,獲取所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板的步驟之前,所述業(yè)務(wù)規(guī)則腳本生成方法還包括:

在接收到觸發(fā)事件時,確定是否預(yù)存有所述觸發(fā)事件對應(yīng)的觸發(fā)器;

若未預(yù)存有所述觸發(fā)事件對應(yīng)的觸發(fā)器,則根據(jù)接收到的所述觸發(fā)事件創(chuàng)建觸發(fā)器;

將創(chuàng)建的所述觸發(fā)器添加到所述規(guī)則配置界面中。

優(yōu)選地,所述將基于所述規(guī)則配置界面輸入的代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,以生成業(yè)務(wù)規(guī)則腳本的步驟之后,所述業(yè)務(wù)規(guī)則腳本生成方法還包括:

對所述業(yè)務(wù)規(guī)則腳本進(jìn)行動態(tài)加載并編譯;

在所述業(yè)務(wù)規(guī)則腳本的編譯結(jié)果正常時,將所述業(yè)務(wù)規(guī)則腳本與所述觸發(fā)器關(guān)聯(lián)存儲,以在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器時,確定是否預(yù)存有所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本,若沒有則執(zhí)行獲取所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板的步驟,若有則獲取所述觸發(fā)器關(guān)聯(lián)的所述業(yè)務(wù)規(guī)則腳本。

優(yōu)選地,所述在所述業(yè)務(wù)規(guī)則腳本的編譯結(jié)果正常時,將所述業(yè)務(wù)規(guī)則腳本與所述觸發(fā)器關(guān)聯(lián)存儲的同時,執(zhí)行以下步驟:

根據(jù)所述觸發(fā)器與預(yù)存的函數(shù)庫、動作庫以及規(guī)則運(yùn)行上下文中的函數(shù)、動作和類實(shí)例的關(guān)聯(lián)關(guān)系,建立所述業(yè)務(wù)規(guī)則腳本與所述函數(shù)、動作和類實(shí)例的關(guān)聯(lián)關(guān)系;

所述在所述業(yè)務(wù)規(guī)則腳本的編譯結(jié)果正常時,將所述業(yè)務(wù)規(guī)則腳本與所述觸發(fā)器關(guān)聯(lián)存儲的步驟之后,所述業(yè)務(wù)規(guī)則腳本生成方法還包括:

在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器,并運(yùn)行所述觸發(fā)器關(guān)聯(lián)的所述業(yè)務(wù)規(guī)則腳本時,調(diào)用所述業(yè)務(wù)規(guī)則腳本關(guān)聯(lián)的函數(shù)、動作以及通過命名空間訪問類實(shí)例,以得到業(yè)務(wù)規(guī)則。

優(yōu)選地,所述業(yè)務(wù)規(guī)則腳本生成方法還包括:

在所述規(guī)則配置界面中接收到代碼段的更新指令時,獲取更新后的代碼段;

根據(jù)更新后的代碼段,更新業(yè)務(wù)規(guī)則腳本。

此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種業(yè)務(wù)規(guī)則腳本生成裝置,所述業(yè)務(wù)規(guī)則腳本生成裝置包括:

顯示模塊,用于顯示預(yù)設(shè)的規(guī)則配置界面;

獲取模塊,用于在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器時,獲取所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板;

生成模塊,用于將基于所述規(guī)則配置界面輸入的代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,以生成業(yè)務(wù)規(guī)則腳本。

優(yōu)選地,所述業(yè)務(wù)規(guī)則腳本生成裝置還包括:

確定模塊,用于在接收到觸發(fā)事件時,確定是否預(yù)存有所述觸發(fā)事件對應(yīng)的觸發(fā)器;

創(chuàng)建模塊,用于若未預(yù)存有所述觸發(fā)事件對應(yīng)的觸發(fā)器,則根據(jù)接收到的所述觸發(fā)事件創(chuàng)建觸發(fā)器;

添加模塊,用于將創(chuàng)建的所述觸發(fā)器添加到所述規(guī)則配置界面中。

優(yōu)選地,所述業(yè)務(wù)規(guī)則腳本生成裝置還包括:

加載編譯模塊,用于對所述業(yè)務(wù)規(guī)則腳本進(jìn)行動態(tài)加載并編譯;

存儲模塊,用于在所述業(yè)務(wù)規(guī)則腳本的編譯結(jié)果正常時,將所述業(yè)務(wù)規(guī)則腳本與所述觸發(fā)器關(guān)聯(lián)存儲,以在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器時,確定是否預(yù)存有所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本,若沒有則執(zhí)行獲取所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板的步驟,若有則獲取所述觸發(fā)器關(guān)聯(lián)的所述業(yè)務(wù)規(guī)則腳本。

優(yōu)選地,所述業(yè)務(wù)規(guī)則腳本生成裝置還包括:

建立模塊,用于根據(jù)所述觸發(fā)器與預(yù)存的函數(shù)庫、動作庫以及規(guī)則運(yùn)行上下文中的函數(shù)、動作和類實(shí)例的關(guān)聯(lián)關(guān)系,建立所述業(yè)務(wù)規(guī)則腳本與所述函數(shù)、動作和類實(shí)例的關(guān)聯(lián)關(guān)系;

調(diào)用模塊,用于在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器,并運(yùn)行所述觸發(fā)器關(guān)聯(lián)的所述業(yè)務(wù)規(guī)則腳本時,調(diào)用所述業(yè)務(wù)規(guī)則腳本關(guān)聯(lián)的函數(shù)、動作以及通過命名空間訪問類實(shí)例,以得到業(yè)務(wù)規(guī)則。

優(yōu)選地,所述獲取模塊,還用于在所述規(guī)則配置界面中接收到代碼段的更新指令時,獲取更新后的代碼段;

所述業(yè)務(wù)規(guī)則腳本生成裝置還包括:

更新模塊,用于根據(jù)更新后的代碼段,更新業(yè)務(wù)規(guī)則腳本。

本發(fā)明提出的業(yè)務(wù)規(guī)則腳本生成方法及裝置,在業(yè)務(wù)規(guī)則變化時,先顯示預(yù)設(shè)的規(guī)則配置界面,在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器時,獲取所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板,并將基于所述規(guī)則配置界面輸入的代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,以生成業(yè)務(wù)規(guī)則腳本,而不用在業(yè)務(wù)規(guī)則變化時,重新手動編寫代碼,或者是通過特定腳本語法,來編寫業(yè)務(wù)規(guī)則腳本,本發(fā)明直接根據(jù)觸發(fā)器獲取業(yè)務(wù)規(guī)則腳本模板,并將代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,生成業(yè)務(wù)規(guī)則腳本,降低了業(yè)務(wù)規(guī)則腳本開發(fā)的工作量,提高了開發(fā)效率。

附圖說明

圖1為本發(fā)明業(yè)務(wù)規(guī)則腳本生成方法第一實(shí)施例的流程示意圖;

圖2為本發(fā)明規(guī)則配置界面的較佳示意圖;

圖3為本發(fā)明生成業(yè)務(wù)規(guī)則的較佳示意圖;

圖4為本發(fā)明業(yè)務(wù)規(guī)則腳本生成方法第二實(shí)施例的流程示意圖;

圖5為本發(fā)明較佳應(yīng)用場景示意圖;

圖6為本發(fā)明業(yè)務(wù)規(guī)則腳本生成裝置第一實(shí)施例的功能模塊示意圖;

圖7為本發(fā)明業(yè)務(wù)規(guī)則腳本生成裝置第二實(shí)施例的功能模塊示意圖。

本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。

具體實(shí)施方式

應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

參照圖1,圖1為本發(fā)明業(yè)務(wù)規(guī)則腳本生成方法第一實(shí)施例的流程示意圖。

本實(shí)施例提出一種業(yè)務(wù)規(guī)則腳本生成方法,所述業(yè)務(wù)規(guī)則腳本生成方法包括:

步驟S10,顯示預(yù)設(shè)的規(guī)則配置界面;

步驟S20,在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器時,獲取所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板;

步驟S30,將基于所述規(guī)則配置界面輸入的代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,以生成業(yè)務(wù)規(guī)則腳本。

在本實(shí)施中,所述步驟S20之前,可以是步驟S10之后,也可以是步驟S10之前,所述方法包括:

在接收到觸發(fā)事件時,確定是否預(yù)存有所述觸發(fā)事件對應(yīng)的觸發(fā)器;

若未預(yù)存有所述觸發(fā)事件對應(yīng)的觸發(fā)器,則根據(jù)接收到的所述觸發(fā)事件創(chuàng)建觸發(fā)器;

將創(chuàng)建的所述觸發(fā)器添加到所述規(guī)則配置界面中。

本實(shí)施例中,接收到的觸發(fā)事件,可以是用戶輸入的觸發(fā)事件,也可以是外界設(shè)備發(fā)送的觸發(fā)事件,如數(shù)據(jù)、告警、定時器等事件,在接收到的觸發(fā)事件時,先確定是否預(yù)存有所述觸發(fā)事件對應(yīng)的觸發(fā)器,若未預(yù)存有所述觸發(fā)事件對應(yīng)的觸發(fā)器,則創(chuàng)建相應(yīng)的觸發(fā)器,并將創(chuàng)建的所述觸發(fā)器添加到所述規(guī)則配置界面中。進(jìn)一步地,在創(chuàng)建觸發(fā)器之后,還會完成Rule Context(規(guī)則運(yùn)行上下文)中相關(guān)類實(shí)例的初始化,例如:接收到一個告警,會將設(shè)備(Device),監(jiān)控量(Mete)、告警(Alarm)等實(shí)例初始化到規(guī)則運(yùn)行上下文中,后續(xù),業(yè)務(wù)規(guī)則腳本可以通過命名空間來訪問這些相關(guān)的實(shí)例。相當(dāng)于是所述觸發(fā)器創(chuàng)建時,在預(yù)設(shè)的存儲空間中加載所述觸發(fā)器關(guān)聯(lián)的類實(shí)例;并將加載的類實(shí)例緩存到所述規(guī)則運(yùn)行上下文中。

在本實(shí)施例中,顯示預(yù)設(shè)的規(guī)則配置界面,所述規(guī)則配置界面優(yōu)選包括觸發(fā)器類型選擇框,在獲取到基于所述觸發(fā)器類型選擇框選擇的觸發(fā)器時,獲取所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板,然后獲取基于所述規(guī)則配置界面輸入的代碼段,再將基于所述規(guī)則配置界面輸入的代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,以生成業(yè)務(wù)規(guī)則腳本。值得注意的是,所述業(yè)務(wù)規(guī)則腳本模板還可以不由觸發(fā)器獲取,而是由其它的狀態(tài)信息或者指令獲取。本實(shí)施例中,可以是用戶在顯示的業(yè)務(wù)規(guī)則腳本模板中添加代碼段,還可以是系統(tǒng)中事先在業(yè)務(wù)規(guī)則腳本模板中預(yù)存有代碼段,后續(xù)可直接根據(jù)所述業(yè)務(wù)規(guī)則腳本模板預(yù)存的代碼段,生成業(yè)務(wù)規(guī)則腳本,當(dāng)然,用戶若想修改預(yù)存的代碼段,可也對預(yù)存的代碼段進(jìn)行修改,最終根據(jù)修改后的代碼段生成業(yè)務(wù)規(guī)則腳本。

進(jìn)一步地,為了提高業(yè)務(wù)規(guī)則腳本生成的準(zhǔn)確性,所述規(guī)則配置界面還包括觸發(fā)器名稱選擇框,規(guī)則類型選擇框,如圖2所示,此時,由于觸發(fā)器類型選擇的是定時器,因此所述觸發(fā)器名稱選擇框用定時器名稱選擇框表示。而所述規(guī)則類型包括:表達(dá)式規(guī)則:基于IF-THEN-ELSE的規(guī)則。狀態(tài)機(jī)規(guī)則:基于某個設(shè)備或監(jiān)控量狀態(tài)的規(guī)則,在不同的狀態(tài)下執(zhí)行不同的動作。定時器規(guī)則:定義一個定時器,調(diào)用一些規(guī)則腳本,實(shí)現(xiàn)一些定時任務(wù)。自定義規(guī)則:根據(jù)觸發(fā)器,實(shí)現(xiàn)一些自定義的業(yè)務(wù)。由于圖2中選擇的觸發(fā)器是定時器,規(guī)則類型選擇的是表達(dá)式規(guī)則,此時,在確定觸發(fā)器以及表示式規(guī)則之后,即可顯示詳細(xì)的業(yè)務(wù)規(guī)則模板,而業(yè)務(wù)規(guī)則腳本模塊具體包括IF、THEN和ELSE輸入框。因此,獲取基于所述業(yè)務(wù)規(guī)則模板之后,將基于所述規(guī)則配置界面輸入的代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,即可生成業(yè)務(wù)規(guī)則腳本。從圖2中輸入的代碼段可知,創(chuàng)建的這個表達(dá)式規(guī)則,是關(guān)聯(lián)到一個10秒定時器,條件是系統(tǒng)中存在超過1小時(3600秒)未被確認(rèn)的告警,給管理員用戶發(fā)送郵件通知。

進(jìn)一步地,所述步驟S30之后,所述業(yè)務(wù)規(guī)則腳本生成方法還包括:

對所述業(yè)務(wù)規(guī)則腳本進(jìn)行動態(tài)加載并編譯;

在所述業(yè)務(wù)規(guī)則腳本的編譯結(jié)果正常時,將所述業(yè)務(wù)規(guī)則腳本與所述觸發(fā)器關(guān)聯(lián)存儲,以在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器時,確定是否預(yù)存有所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本,若沒有則執(zhí)行獲取所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板的步驟,若有則獲取所述觸發(fā)器關(guān)聯(lián)的所述業(yè)務(wù)規(guī)則腳本。

在本實(shí)施例中,對所述業(yè)務(wù)規(guī)則腳本進(jìn)行動態(tài)加載并編譯,相當(dāng)于對生成的業(yè)務(wù)規(guī)則腳本進(jìn)行測試,在所述業(yè)務(wù)規(guī)則腳本的編譯結(jié)果正常時,說明測試成功,此時,將所述業(yè)務(wù)規(guī)則腳本與所述觸發(fā)器關(guān)聯(lián)存儲,便于后續(xù)再選擇該觸發(fā)器時,且代碼段不變的情況下,直接選擇該觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本。

本實(shí)施例提出的業(yè)務(wù)規(guī)則腳本生成方法,在業(yè)務(wù)規(guī)則變化時,先顯示預(yù)設(shè)的規(guī)則配置界面,在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器時,獲取所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板,并將基于所述規(guī)則配置界面輸入的代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,以生成業(yè)務(wù)規(guī)則腳本,而不用在業(yè)務(wù)規(guī)則變化時,重新手動編寫代碼,或者是通過特定腳本語法,來編寫業(yè)務(wù)規(guī)則腳本,本發(fā)明直接根據(jù)觸發(fā)器獲取業(yè)務(wù)規(guī)則腳本模板,并將代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,生成業(yè)務(wù)規(guī)則腳本,降低了業(yè)務(wù)規(guī)則腳本開發(fā)的工作量,提高了開發(fā)效率。

進(jìn)一步地,為了提高業(yè)務(wù)規(guī)則腳本生成的靈活性,基于第一實(shí)施例提出本發(fā)明業(yè)務(wù)規(guī)則腳本生成方法的第二實(shí)施例,在本實(shí)施例,所述在所述業(yè)務(wù)規(guī)則腳本的編譯結(jié)果正常時,將所述業(yè)務(wù)規(guī)則腳本與所述觸發(fā)器關(guān)聯(lián)存儲的同時,執(zhí)行以下步驟:

根據(jù)所述觸發(fā)器與預(yù)存的函數(shù)庫、動作庫以及規(guī)則運(yùn)行上下文中的函數(shù)、動作和類實(shí)例的關(guān)聯(lián)關(guān)系,建立所述業(yè)務(wù)規(guī)則腳本與所述函數(shù)、動作和類實(shí)例的關(guān)聯(lián)關(guān)系;

所述在所述業(yè)務(wù)規(guī)則腳本的編譯結(jié)果正常時,將所述業(yè)務(wù)規(guī)則腳本與所述觸發(fā)器關(guān)聯(lián)存儲的步驟之后,所述業(yè)務(wù)規(guī)則腳本生成方法還包括:

在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器,并運(yùn)行所述觸發(fā)器關(guān)聯(lián)的所述業(yè)務(wù)規(guī)則腳本時,調(diào)用所述業(yè)務(wù)規(guī)則腳本關(guān)聯(lián)的函數(shù)、動作以及通過命名空間訪問類實(shí)例,以得到業(yè)務(wù)規(guī)則。

本實(shí)施例中,將業(yè)務(wù)規(guī)則劃分為幾個部分,觸發(fā)器、規(guī)則運(yùn)行上下文(RuleContext)、動作(Action)、函數(shù)(Function)、規(guī)則腳本(RuleScript)。

其中,觸發(fā)器(Trigger):系統(tǒng)中的事件,可以是一數(shù)據(jù)上報、一個告警產(chǎn)生、設(shè)備上線、用戶登錄等,每個規(guī)則對應(yīng)于一種觸發(fā)器,即由某一種類型的觸發(fā)器觸發(fā),觸發(fā)器類型可擴(kuò)展,例如:Data為某個傳感器上報了一條數(shù)據(jù);Alarm為某個傳感器上報了一個告警(通過接入網(wǎng)關(guān)、或服務(wù)器),例如溫度過高;Alarm State Change為告警狀態(tài)發(fā)生了改變,告警被確認(rèn)或手動關(guān)閉;User Login為用戶登錄。

規(guī)則運(yùn)行上下文(RuleContext):包括多個和當(dāng)前觸發(fā)器以及規(guī)則相關(guān)的可訪問的類實(shí)例,每個類實(shí)例對應(yīng)一個命名空間,例如:Device名字空間中包括所有設(shè)備可訪問的屬性(例如:id,name等),不同觸發(fā)器觸發(fā)的規(guī)則,其上下文中的可訪問的名字空間也是不同的,如:Alarm命名空間只有在觸發(fā)器類型是告警相關(guān)的時候才能訪問。例如:Alarm:告警命名空間,用于訪問和當(dāng)前告警相關(guān)的屬性(例如:告警時間、告警級別);Device:設(shè)備命名空間,用于訪問和當(dāng)前設(shè)備相關(guān)的屬性;User:用戶命名空間,用于訪問和當(dāng)前用戶相關(guān)的屬性。

動作:包括規(guī)則腳本中可以執(zhí)行的動作,例如一個發(fā)送郵件的動作,

動作本身是一個可以調(diào)用的API(Application Programming Interface,應(yīng)用程序編程接口),但相對于函數(shù)(Function)也可以使用json/xml等描述,用于在UI界面中配置規(guī)則,例如:

[{"paramList":[{"name":"address","value":"test@mail.com"},{"name":"conte nt","value":"this is a test email"}],"id":"sendEmail",}]

函數(shù):一些常用的函數(shù),在規(guī)則腳本中可以直接調(diào)用。例如:Now()函數(shù)放回當(dāng)前的時間。

規(guī)則腳本:一段可執(zhí)行的Groovy(一種用于Java虛擬機(jī)的動態(tài)語言)腳本,規(guī)則腳本可以直接在線編寫,調(diào)試,保存生效。也可以通過UI(User Interface,用戶界面)界面來配置一個簡單的業(yè)務(wù)規(guī)則,后臺會根據(jù)配置自動生成一個規(guī)則腳本。

為更好理解本實(shí)施例,參照圖3,首先獲取觸發(fā)器,然后根據(jù)觸發(fā)器獲取對應(yīng)的業(yè)務(wù)規(guī)則腳本模板,再將基于所述規(guī)則配置界面輸入的代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,以生成規(guī)則腳本,并且,建立通過所述觸發(fā)器在規(guī)則運(yùn)行上下文中緩存設(shè)備類實(shí)例與所述生成規(guī)則腳本的關(guān)聯(lián)關(guān)系,同時根據(jù)所述觸發(fā)器與預(yù)存的函數(shù)庫、動作庫中的函數(shù)及動作的關(guān)聯(lián)關(guān)系,建立所述業(yè)務(wù)規(guī)則腳本與所述函數(shù)庫、動作庫中的函數(shù)及動作的關(guān)聯(lián)關(guān)系,最終在運(yùn)行所述規(guī)則腳本時,通過所述規(guī)則腳本命名空間在所述規(guī)則運(yùn)行上下文中提取所述業(yè)務(wù)規(guī)則腳本關(guān)聯(lián)的類實(shí)例,并且在動作庫和函數(shù)庫中調(diào)用關(guān)聯(lián)的動作和函數(shù),以實(shí)現(xiàn)業(yè)務(wù)規(guī)則腳本的運(yùn)行。

在本實(shí)施例中,將物聯(lián)網(wǎng)基于事件的業(yè)務(wù)規(guī)則劃分為:觸發(fā)器、動作、函數(shù)、規(guī)則運(yùn)行上下文、規(guī)則腳本,便于后續(xù)開發(fā)人員以及用戶可以方便的新增和定制新的業(yè)務(wù)規(guī)則,并且可以重用,提高業(yè)務(wù)規(guī)則編寫效率。同時,采用直接嵌入腳本語言的方式,支持規(guī)則動態(tài)增加、修改并實(shí)時生效,可快速滿足用戶需求。支持通過UI界面配置,無需開發(fā)人員參與,用戶也可增加和修改規(guī)則。

進(jìn)一步地,為了提高業(yè)務(wù)規(guī)則腳本生成的靈活性,基于第一或第二實(shí)施例提出本發(fā)明業(yè)務(wù)規(guī)則腳本生成方法的第三實(shí)施例,在本實(shí)施例,參照圖4,所述業(yè)務(wù)規(guī)則腳本生成方法還包括:

步驟S40,在所述規(guī)則配置界面中接收到代碼段的更新指令時,獲取更新后的代碼段;

步驟S50,根據(jù)更新后的代碼段,更新業(yè)務(wù)規(guī)則腳本。

在本實(shí)施例中,在所述規(guī)則配置界面中接收到代碼段的更新指令時,先確定待更新的代碼段,然后獲取用戶輸入的代碼段,將輸入的代碼段作為更新后的代碼段替換待更新的代碼段,最終根據(jù)更新后的代碼段更新業(yè)務(wù)規(guī)則腳本,無須重新編寫代碼,只要更新代碼段即可,使得業(yè)務(wù)規(guī)則腳本可以實(shí)時快速更新,提高業(yè)務(wù)規(guī)則腳本的更新效率。

為更好理解本實(shí)施例,參照圖5,舉例應(yīng)用場景如下:

本實(shí)施例中,優(yōu)選在物聯(lián)網(wǎng)規(guī)則引擎系統(tǒng)生成業(yè)務(wù)規(guī)則腳本,所述物聯(lián)網(wǎng)規(guī)則引擎系統(tǒng)由規(guī)則由以下幾個模塊構(gòu)成:

規(guī)則編輯模塊:規(guī)則腳本編輯子模塊,提供用戶在線編寫腳本,測試、保存功能;一個規(guī)則配置UI界面,用戶選擇觸發(fā)器、規(guī)則類型,動作實(shí)現(xiàn)一個簡單的業(yè)務(wù)規(guī)則;規(guī)則腳本動態(tài)加載和編譯子模塊,對于保存的規(guī)則腳本,動態(tài)加載,編譯(使用Groovy腳本引擎實(shí)現(xiàn)腳本的動態(tài)加載和編譯)。

規(guī)則管理模塊:一個規(guī)則運(yùn)行上下文,用于保存所有編譯好的可執(zhí)行的規(guī)則類;動作和函數(shù)庫用于保存規(guī)則腳本可以調(diào)用的動作和函數(shù)。

規(guī)則執(zhí)行模塊:根據(jù)觸發(fā)器類型以及規(guī)則和設(shè)備的關(guān)聯(lián)關(guān)系,匹配需要觸發(fā)的規(guī)則腳本,并執(zhí)行規(guī)則腳本。

觸發(fā)模塊:根據(jù)接收的數(shù)據(jù)、告警、定時器等事件,創(chuàng)建相應(yīng)的觸發(fā)器,并完成Rule Context中相關(guān)實(shí)例的初始化,例如:接收到一個告警,會將設(shè)備(Device),監(jiān)控量(Mete)、告警(Alarm)等實(shí)例初始化到上下文中,在規(guī)則腳本可以通過命名空間來訪問這些相關(guān)的實(shí)例。

本領(lǐng)域技術(shù)人員可以理解的是,本發(fā)明主要提供一個面向物聯(lián)網(wǎng)應(yīng)用的ECA(Event-Condition-Action,事件一條件一活動)規(guī)則引擎,具有以下特性:

支持在線業(yè)務(wù)規(guī)則腳本編寫和實(shí)時修改,開發(fā)人員和一些高級用戶可以快速實(shí)現(xiàn)業(yè)務(wù)規(guī)則的定制和修改;

提供業(yè)務(wù)規(guī)則編寫和配置UI界面,對于簡單的業(yè)務(wù)規(guī)則普通用戶也可以直接在線動態(tài)編輯、修改,實(shí)時生效,快速完成業(yè)務(wù)定制,無需開發(fā)人員參與;

使用Groovy直接編寫業(yè)務(wù)規(guī)則代碼,會使用Java語言即可,無需學(xué)習(xí)特定的規(guī)則描述語言,如規(guī)則腳本定義語言,并實(shí)時生效;

將一個業(yè)務(wù)規(guī)則劃分為:觸發(fā)器、動作、函數(shù)、運(yùn)行時上下文,規(guī)則腳本,各部分可獨(dú)立擴(kuò)展,快速定制新的業(yè)務(wù)規(guī)則,提高規(guī)則編寫效率;

使用命名空間定義和訪問物聯(lián)網(wǎng)領(lǐng)域特定實(shí)體,易于用戶學(xué)習(xí)使用,例如:Device.id、Device.name,Device是一個命名空間,代表當(dāng)前設(shè)備,id和name為Device的ID和名稱屬性;

系統(tǒng)默認(rèn)提供了很多已實(shí)現(xiàn)的功能和函數(shù),方便業(yè)務(wù)規(guī)則的編寫。

實(shí)現(xiàn)了在線編寫業(yè)務(wù)規(guī)則->測試->保存的過程,便于開發(fā)人員和用戶定制業(yè)務(wù)需求快、易于學(xué)習(xí)、易于擴(kuò)展,使得業(yè)務(wù)規(guī)則定制效率快。

本發(fā)明進(jìn)一步提供一種業(yè)務(wù)規(guī)則腳本生成裝置。

參照圖6,圖6為本發(fā)明業(yè)務(wù)規(guī)則腳本生成裝置第一實(shí)施例的功能模塊示意圖。

需要強(qiáng)調(diào)的是,對本領(lǐng)域的技術(shù)人員來說,圖6所示功能模塊圖僅僅是一個較佳實(shí)施例的示例圖,本領(lǐng)域的技術(shù)人員圍繞圖6所示的業(yè)務(wù)規(guī)則腳本生成裝置的功能模塊,可輕易進(jìn)行新的功能模塊的補(bǔ)充;各功能模塊的名稱是自定義名稱,僅用于輔助理解該業(yè)務(wù)規(guī)則腳本生成裝置的各個程序功能塊,不用于限定本發(fā)明的技術(shù)方案,本發(fā)明技術(shù)方案的核心是,各自定義名稱的功能模塊所要達(dá)成的功能。

本實(shí)施例提出一種業(yè)務(wù)規(guī)則腳本生成裝置,所述業(yè)務(wù)規(guī)則腳本生成裝置包括:

顯示模塊10,用于顯示預(yù)設(shè)的規(guī)則配置界面;

獲取模塊20,用于用于在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器時,獲取所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板;

生成模塊30,用于將基于所述規(guī)則配置界面輸入的代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,以生成業(yè)務(wù)規(guī)則腳本。

進(jìn)一步地,所述業(yè)務(wù)規(guī)則腳本生成裝置還包括:

確定模塊,用于在接收到觸發(fā)事件時,確定是否預(yù)存有所述觸發(fā)事件對應(yīng)的觸發(fā)器;

創(chuàng)建模塊,用于若未預(yù)存有所述觸發(fā)事件對應(yīng)的觸發(fā)器,則根據(jù)接收到的所述觸發(fā)事件創(chuàng)建觸發(fā)器;

添加模塊,用于將創(chuàng)建的所述觸發(fā)器添加到所述規(guī)則配置界面中。

本實(shí)施例中,接收到的觸發(fā)事件,可以是用戶輸入的觸發(fā)事件,也可以是外界設(shè)備發(fā)送的觸發(fā)事件,如數(shù)據(jù)、告警、定時器等事件,在接收到的觸發(fā)事件時,確定模塊先確定是否預(yù)存有所述觸發(fā)事件對應(yīng)的觸發(fā)器,若未預(yù)存有所述觸發(fā)事件對應(yīng)的觸發(fā)器,則創(chuàng)建模塊創(chuàng)建相應(yīng)的觸發(fā)器,添加模塊將創(chuàng)建的所述觸發(fā)器添加到所述規(guī)則配置界面中。進(jìn)一步地,在創(chuàng)建觸發(fā)器之后,還會完成Rule Context(規(guī)則運(yùn)行上下文)中相關(guān)類實(shí)例的初始化,例如:接收到一個告警,會將設(shè)備(Device),監(jiān)控量(Mete)、告警(Alarm)等實(shí)例初始化到規(guī)則運(yùn)行上下文中,后續(xù),業(yè)務(wù)規(guī)則腳本可以通過命名空間來訪問這些相關(guān)的實(shí)例。相當(dāng)于是所述觸發(fā)器創(chuàng)建時,在預(yù)設(shè)的存儲空間中加載所述觸發(fā)器關(guān)聯(lián)的類實(shí)例;并將加載的類實(shí)例緩存到所述規(guī)則運(yùn)行上下文中。

在本實(shí)施例中,顯示模塊10顯示預(yù)設(shè)的規(guī)則配置界面,所述規(guī)則配置界面優(yōu)選包括觸發(fā)器類型選擇框,獲取模塊20在獲取到基于所述觸發(fā)器類型選擇框選擇的觸發(fā)器時,獲取所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板,然后獲取基于所述規(guī)則配置界面輸入的代碼段,再將基于所述規(guī)則配置界面輸入的代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,以供生成模塊30生成業(yè)務(wù)規(guī)則腳本。值得注意的是,所述業(yè)務(wù)規(guī)則腳本模板還可以不由觸發(fā)器獲取,而是由其它的狀態(tài)信息或者指令獲取。本實(shí)施例中,可以是用戶在顯示模塊10顯示的業(yè)務(wù)規(guī)則腳本模板中添加代碼段,還可以是系統(tǒng)中事先在業(yè)務(wù)規(guī)則腳本模板中預(yù)存有代碼段,后續(xù)生成模塊30可直接根據(jù)所述業(yè)務(wù)規(guī)則腳本模板預(yù)存的代碼段,生成業(yè)務(wù)規(guī)則腳本,當(dāng)然,用戶若想修改預(yù)存的代碼段,可也對預(yù)存的代碼段進(jìn)行修改,最終生成模塊30根據(jù)修改后的代碼段生成業(yè)務(wù)規(guī)則腳本。

進(jìn)一步地,為了提高業(yè)務(wù)規(guī)則腳本生成的準(zhǔn)確性,所述規(guī)則配置界面還包括觸發(fā)器名稱選擇框,規(guī)則類型選擇框,如圖2所示,此時,由于觸發(fā)器類型選擇的是定時器,因此所述觸發(fā)器名稱選擇框用定時器名稱選擇框表示。而所述規(guī)則類型包括:表達(dá)式規(guī)則:基于IF-THEN-ELSE的規(guī)則。狀態(tài)機(jī)規(guī)則:基于某個設(shè)備或監(jiān)控量狀態(tài)的規(guī)則,在不同的狀態(tài)下執(zhí)行不同的動作。定時器規(guī)則:定義一個定時器,調(diào)用一些規(guī)則腳本,實(shí)現(xiàn)一些定時任務(wù)。自定義規(guī)則:根據(jù)觸發(fā)器,實(shí)現(xiàn)一些自定義的業(yè)務(wù)。由于圖2中選擇的觸發(fā)器是定時器,規(guī)則類型選擇的是表達(dá)式規(guī)則,此時,在確定模塊確定觸發(fā)器以及表示式規(guī)則之后,顯示模塊10即可顯示詳細(xì)的業(yè)務(wù)規(guī)則模板,而業(yè)務(wù)規(guī)則腳本模塊具體包括IF、THEN和ELSE輸入框。因此,獲取模塊20獲取基于所述業(yè)務(wù)規(guī)則模板之后,生成模塊30將基于所述規(guī)則配置界面輸入的代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,即可生成業(yè)務(wù)規(guī)則腳本。從圖2中輸入的代碼段可知,創(chuàng)建的這個表達(dá)式規(guī)則,是關(guān)聯(lián)到一個10秒定時器,條件是系統(tǒng)中存在超過1小時(3600秒)未被確認(rèn)的告警,給管理員用戶發(fā)送郵件通知。

進(jìn)一步地,所述業(yè)務(wù)規(guī)則腳本生成裝置還包括:

加載編譯模塊,用于對所述業(yè)務(wù)規(guī)則腳本進(jìn)行動態(tài)加載并編譯;

存儲模塊,用于在所述業(yè)務(wù)規(guī)則腳本的編譯結(jié)果正常時,將所述業(yè)務(wù)規(guī)則腳本與所述觸發(fā)器關(guān)聯(lián)存儲,以在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器時,確定是否預(yù)存有所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本,若沒有則執(zhí)行獲取所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板的步驟,若有則獲取所述觸發(fā)器關(guān)聯(lián)的所述業(yè)務(wù)規(guī)則腳本。

在本實(shí)施例中,對所述業(yè)務(wù)規(guī)則腳本進(jìn)行動態(tài)加載并編譯,相當(dāng)于對生成的業(yè)務(wù)規(guī)則腳本進(jìn)行測試,在所述業(yè)務(wù)規(guī)則腳本的編譯結(jié)果正常時,說明測試成功,此時,將所述業(yè)務(wù)規(guī)則腳本與所述觸發(fā)器關(guān)聯(lián)存儲,便于后續(xù)再選擇該觸發(fā)器時,且代碼段不變的情況下,直接選擇該觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本。

本實(shí)施例提出的業(yè)務(wù)規(guī)則腳本生成裝置,在業(yè)務(wù)規(guī)則變化時,先顯示預(yù)設(shè)的規(guī)則配置界面,在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器時,獲取所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板,并將基于所述規(guī)則配置界面輸入的代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,以生成業(yè)務(wù)規(guī)則腳本,而不用在業(yè)務(wù)規(guī)則變化時,重新手動編寫代碼,或者是通過特定腳本語法,來編寫業(yè)務(wù)規(guī)則腳本,本發(fā)明直接根據(jù)觸發(fā)器獲取業(yè)務(wù)規(guī)則腳本模板,并將代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,生成業(yè)務(wù)規(guī)則腳本,降低了業(yè)務(wù)規(guī)則腳本開發(fā)的工作量,提高了開發(fā)效率。

進(jìn)一步地,為了提高業(yè)務(wù)規(guī)則腳本生成的靈活性,基于第一實(shí)施例提出本發(fā)明業(yè)務(wù)規(guī)則腳本生成裝置的第二實(shí)施例,在本實(shí)施例,所述業(yè)務(wù)規(guī)則腳本生成裝置還包括:

建立模塊,用于根據(jù)所述觸發(fā)器與預(yù)存的函數(shù)庫、動作庫以及規(guī)則運(yùn)行上下文中的函數(shù)、動作和類實(shí)例的關(guān)聯(lián)關(guān)系,建立所述業(yè)務(wù)規(guī)則腳本與所述函數(shù)、動作和類實(shí)例的關(guān)聯(lián)關(guān)系;

調(diào)用模塊,用于在接收到基于所述規(guī)則配置界面選擇的觸發(fā)器,并運(yùn)行所述觸發(fā)器關(guān)聯(lián)的所述業(yè)務(wù)規(guī)則腳本時,調(diào)用所述業(yè)務(wù)規(guī)則腳本關(guān)聯(lián)的函數(shù)、動作以及通過命名空間訪問類實(shí)例,以得到業(yè)務(wù)規(guī)則。

本實(shí)施例中,將業(yè)務(wù)規(guī)則劃分為幾個部分,觸發(fā)器、規(guī)則運(yùn)行上下文(RuleContext)即規(guī)則運(yùn)行上下文、動作(Action)、函數(shù)(Function)、規(guī)則腳本(RuleScript)。

其中,觸發(fā)器(Trigger):系統(tǒng)中的事件,可以是一數(shù)據(jù)上報、一個告警產(chǎn)生、設(shè)備上線、用戶登錄等,每個規(guī)則對應(yīng)于一種觸發(fā)器,即由某一種類型的觸發(fā)器觸發(fā),觸發(fā)器類型可擴(kuò)展,例如:Data為某個傳感器上報了一條數(shù)據(jù);Alarm為某個傳感器上報了一個告警(通過接入網(wǎng)關(guān)、或服務(wù)器),例如溫度過高;Alarm State Change為告警狀態(tài)發(fā)生了改變,告警被確認(rèn)或手動關(guān)閉;User Login為用戶登錄。

規(guī)則運(yùn)行上下文(RuleContext):包括多個和當(dāng)前觸發(fā)器以及規(guī)則相關(guān)的可訪問的類實(shí)例,每個類實(shí)例對應(yīng)一個命名空間,例如:Device名字空間中包括所有設(shè)備可訪問的屬性(例如:id,name等),不同觸發(fā)器觸發(fā)的規(guī)則,其上下文中的可訪問的名字空間也是不同的,如:Alarm命名空間只有在觸發(fā)器類型是告警相關(guān)的時候才能訪問。例如:Alarm:告警命名空間,用于訪問和當(dāng)前告警相關(guān)的屬性(例如:告警時間、告警級別);Device:設(shè)備命名空間,用于訪問和當(dāng)前設(shè)備相關(guān)的屬性;User:用戶命名空間,用于訪問和當(dāng)前用戶相關(guān)的屬性。

動作:包括規(guī)則腳本中可以執(zhí)行的動作,例如一個發(fā)送郵件的動作,

動作本身是一個可以調(diào)用的API(Application Programming Interface,應(yīng)用程序編程接口),但相對于函數(shù)(Function)也可以使用json/xml等描述,用于在UI界面中配置規(guī)則,例如:

[{"paramList":[{"name":"address","value":"test@mail.com"},{"name":"conte nt","value":"this is a test email"}],"id":"sendEmail",}]

函數(shù):一些常用的函數(shù),在規(guī)則腳本中可以直接調(diào)用。例如:Now()函數(shù)放回當(dāng)前的時間。

規(guī)則腳本:一段可執(zhí)行的Groovy(一種用于Java虛擬機(jī)的動態(tài)語言)腳本,規(guī)則腳本可以直接在線編寫,調(diào)試,保存生效。也可以通過UI(User Interface,用戶界面)界面來配置一個簡單的業(yè)務(wù)規(guī)則,后臺會根據(jù)配置自動生成一個規(guī)則腳本。

為更好理解本實(shí)施例,參照圖3,獲取模塊20首先獲取觸發(fā)器,然后根據(jù)觸發(fā)器獲取對應(yīng)的業(yè)務(wù)規(guī)則腳本模板,生成模塊30再將基于所述規(guī)則配置界面輸入的代碼段添加至所述觸發(fā)器關(guān)聯(lián)的業(yè)務(wù)規(guī)則腳本模板中,以生成規(guī)則腳本,并且,建立模塊建立通過所述觸發(fā)器在規(guī)則運(yùn)行上下文中緩存設(shè)備類實(shí)例與所述生成規(guī)則腳本的關(guān)聯(lián)關(guān)系,同時根據(jù)所述觸發(fā)器與預(yù)存的函數(shù)庫、動作庫中的函數(shù)及動作的關(guān)聯(lián)關(guān)系,建立所述業(yè)務(wù)規(guī)則腳本與所述函數(shù)庫、動作庫中的函數(shù)及動作的關(guān)聯(lián)關(guān)系,最終調(diào)用模塊在運(yùn)行所述規(guī)則腳本時,通過所述規(guī)則腳本命名空間在所述規(guī)則運(yùn)行上下文中提取所述業(yè)務(wù)規(guī)則腳本關(guān)聯(lián)的類實(shí)例,并且在動作庫和函數(shù)庫中調(diào)用關(guān)聯(lián)的動作和函數(shù),以實(shí)現(xiàn)業(yè)務(wù)規(guī)則腳本的運(yùn)行。

在本實(shí)施例中,將物聯(lián)網(wǎng)基于事件的業(yè)務(wù)規(guī)則劃分為:觸發(fā)器、動作、函數(shù)、規(guī)則運(yùn)行上下文、規(guī)則腳本,便于后續(xù)開發(fā)人員以及用戶可以方便的新增和定制新的業(yè)務(wù)規(guī)則,并且可以重用,提高業(yè)務(wù)規(guī)則編寫效率。同時,采用直接嵌入腳本語言的方式,支持規(guī)則動態(tài)增加、修改并實(shí)時生效,可快速滿足用戶需求。支持通過UI界面配置,無需開發(fā)人員參與,用戶也可增加和修改規(guī)則。

進(jìn)一步地,為了提高業(yè)務(wù)規(guī)則腳本生成的靈活性,基于第二實(shí)施例提出本發(fā)明業(yè)務(wù)規(guī)則腳本生成裝置的第三實(shí)施例,在本實(shí)施例,參照圖7,

所述獲取模塊20,用于在所述規(guī)則配置界面中中接收到代碼段的更新指令時,獲取更新后的代碼段;

所述業(yè)務(wù)規(guī)則腳本生成裝置還包括:

更新模塊40,用于根據(jù)更新后的代碼段,更新業(yè)務(wù)規(guī)則腳本。

在本實(shí)施例中,在所述規(guī)則配置界面中接收到代碼段的更新指令時,先確定模塊先確定待更新的代碼段,然后獲取模塊20獲取用戶輸入的代碼段,將輸入的代碼段作為更新后的代碼段替換待更新的代碼段,最終更新模塊40根據(jù)更新后的代碼段更新業(yè)務(wù)規(guī)則腳本,無須重新編寫代碼,只要更新代碼段即可,使得業(yè)務(wù)規(guī)則腳本可以實(shí)時快速更新,提高業(yè)務(wù)規(guī)則腳本的更新效率。

為更好理解本實(shí)施例,參照圖5,舉例應(yīng)用場景如下:

本實(shí)施例中,優(yōu)選在物聯(lián)網(wǎng)規(guī)則引擎系統(tǒng)生成業(yè)務(wù)規(guī)則腳本,所述物聯(lián)網(wǎng)規(guī)則引擎系統(tǒng)由規(guī)則由以下幾個模塊構(gòu)成:

規(guī)則編輯模塊:規(guī)則腳本編輯子模塊,提供用戶在線編寫腳本,測試、保存功能;一個規(guī)則配置UI界面,用戶選擇觸發(fā)器、規(guī)則類型,動作實(shí)現(xiàn)一個簡單的業(yè)務(wù)規(guī)則;規(guī)則腳本動態(tài)加載和編譯子模塊,對于保存的規(guī)則腳本,動態(tài)加載,編譯(使用Groovy腳本引擎實(shí)現(xiàn)腳本的動態(tài)加載和編譯)。

規(guī)則管理模塊:一個規(guī)則運(yùn)行上下文,用于保存所有編譯好的可執(zhí)行的規(guī)則類;動作和函數(shù)庫用于保存規(guī)則腳本可以調(diào)用的動作和函數(shù)。

規(guī)則執(zhí)行模塊:根據(jù)觸發(fā)器類型以及規(guī)則和設(shè)備的關(guān)聯(lián)關(guān)系,匹配需要觸發(fā)的規(guī)則腳本,并執(zhí)行規(guī)則腳本。

觸發(fā)模塊:根據(jù)接收的數(shù)據(jù)、告警、定時器等事件,創(chuàng)建相應(yīng)的觸發(fā)器,并完成Rule Context中相關(guān)實(shí)例的初始化,例如:接收到一個告警,會將設(shè)備(Device),監(jiān)控量(Mete)、告警(Alarm)等實(shí)例初始化到上下文中,在規(guī)則腳本可以通過命名空間來訪問這些相關(guān)的實(shí)例。

本領(lǐng)域技術(shù)人員可以理解的是,本發(fā)明主要提供一個面向物聯(lián)網(wǎng)應(yīng)用的ECA(Event-Condition-Action,事件一條件一活動)規(guī)則引擎,具有以下特性:

支持在線業(yè)務(wù)規(guī)則腳本編寫和實(shí)時修改,開發(fā)人員和一些高級用戶可以快速實(shí)現(xiàn)業(yè)務(wù)規(guī)則的定制和修改;

提供業(yè)務(wù)規(guī)則編寫和配置UI界面,對于簡單的業(yè)務(wù)規(guī)則普通用戶也可以直接在線動態(tài)編輯、修改,實(shí)時生效,快速完成業(yè)務(wù)定制,無需開發(fā)人員參與;

使用Groovy直接編寫業(yè)務(wù)規(guī)則代碼,會使用Java語言即可,無需學(xué)習(xí)特定的規(guī)則描述語言,如規(guī)則腳本定義語言,并實(shí)時生效;

將一個業(yè)務(wù)規(guī)則劃分為:觸發(fā)器、動作、函數(shù)、運(yùn)行時上下文,規(guī)則腳本,各部分可獨(dú)立擴(kuò)展,快速定制新的業(yè)務(wù)規(guī)則,提高規(guī)則編寫效率;

使用命名空間定義和訪問物聯(lián)網(wǎng)領(lǐng)域特定實(shí)體,易于用戶學(xué)習(xí)使用,例如:Device.id、Device.name,Device是一個命名空間,代表當(dāng)前設(shè)備,id和name(名稱屬性)為Device的ID和名稱屬性;

系統(tǒng)默認(rèn)提供了很多已實(shí)現(xiàn)的功能和函數(shù),方便業(yè)務(wù)規(guī)則的編寫。

實(shí)現(xiàn)了在線編寫業(yè)務(wù)規(guī)則->測試->保存的過程,便于開發(fā)人員和用戶定制業(yè)務(wù)需求快、易于學(xué)習(xí)、易于擴(kuò)展,使得業(yè)務(wù)規(guī)則定制效率快。

需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其它變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其它要素,或者是還包括為這種過程、方法、物品或者系統(tǒng)所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者系統(tǒng)中還存在另外的相同要素。

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

通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機(jī),計算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述的方法。

以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其它相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。

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