決策表的編輯有2個(gè)步驟,即規(guī)則包編輯、規(guī)則數(shù)據(jù)設(shè)置和發(fā)布。
雙擊CKBoot.exe
打開(kāi)CKRule規(guī)則引擎編輯界面。點(diǎn)新建,在左側(cè)的工程窗口中,就會(huì)出現(xiàn)一個(gè)新的規(guī)則包。點(diǎn)擊根結(jié)點(diǎn)
,可以修改規(guī)則包的名稱。
雙擊對(duì)象庫(kù)-傳入傳出參數(shù),打開(kāi)編輯界面,把通用格式的字段填寫到界面中。
名稱列所填寫的內(nèi)容必須符合.Net的字段命名規(guī)范,如-,空格,@等字符都不能使用,首字母不能為數(shù)字。

傳入傳出參數(shù)和自定義類型的定義,會(huì)影響到后面的所有編碼。
與外部進(jìn)行json通訊時(shí),使用的屬性名稱是映射名稱,如果映射名稱為空時(shí)才使用名稱。
打開(kāi)規(guī)則庫(kù)-決策表定義界面。
所謂決策表,就是用表格的形式保存規(guī)則數(shù)據(jù),以便于一下子處理大量的規(guī)則。
其執(zhí)行的核心處理邏輯就是掃描每一行,檢查相關(guān)單元格的值,當(dāng)達(dá)到某種條件時(shí),就執(zhí)行相應(yīng)的動(dòng)作。

如設(shè)置停車場(chǎng)決策表時(shí),要填寫這個(gè)表的各列信息,包含標(biāo)題,數(shù)據(jù)庫(kù)字段,數(shù)據(jù)類型,邏輯類型,精度,規(guī)則等內(nèi)容。其中
標(biāo)題就是決策表最終顯示在前端時(shí)的列標(biāo)題。
數(shù)據(jù)庫(kù)字段就是綁定到管理平臺(tái)或其他數(shù)據(jù)庫(kù)的字段。當(dāng)前是綁定到管理平臺(tái)上面的RoolTbl表的,該表的數(shù)據(jù)如下:

數(shù)據(jù)類型用于控制輸入時(shí)使用的類型,以減少輸入的差錯(cuò)。
邏輯類型是指條件、結(jié)論或無(wú)。設(shè)置時(shí),條件和結(jié)論都必須存在,可以存在多個(gè)。如果存在多個(gè)條件,意思就是多個(gè)條件都成立時(shí),就執(zhí)行一個(gè)或多個(gè)結(jié)論。當(dāng)代碼比較復(fù)雜,不太適合這種定義時(shí),可以直接使用結(jié)論列,填寫相關(guān)的代碼,而條件列則填寫1==1;即可,意思為就像編輯中的if(1==1){}。
規(guī)則編寫
選擇結(jié)論列的腳本,點(diǎn)設(shè)置后彈出如下界面。

這個(gè)界面可以設(shè)置遍歷時(shí)使用的腳本。
如需要獲取當(dāng)前行的對(duì)象時(shí),使用Row屬性,Row.Cells[“PRop1”].Value意思就是獲取當(dāng)前行,并且數(shù)據(jù)庫(kù)名稱為Prop1的單元格的值,這個(gè)值的類型為string。通過(guò)這個(gè)Row屬性就可以獲取所有單元格的值。
CDouble是系統(tǒng)內(nèi)置的方法,點(diǎn)擊界面左邊的類別—擴(kuò)展(15),就可以查看不同函數(shù)的用法。同時(shí),該界面也可以直接使用.Net自身的所有API。
上面的代碼的意思是,找出各個(gè)單元格的值,并轉(zhuǎn)換為正確的類型,遍歷傳入的所有點(diǎn)位數(shù)據(jù),如果點(diǎn)位值在區(qū)間之中,且類型為“信息”,就將信息設(shè)置為其中一個(gè)單元格的內(nèi)容。
本功能用于調(diào)用客戶端編寫的規(guī)則。
上面2個(gè)步驟,用于定義決策表,而主規(guī)則界面可以調(diào)用決策表邏輯。雙擊規(guī)則庫(kù)-主規(guī)則,新增一個(gè)規(guī)則集。

在規(guī)則集中添加如下代碼:

詳細(xì)代碼如下:

代碼的作用是,讀取規(guī)則管理平臺(tái)中的RuleTbl的數(shù)據(jù),初始化決策表,然后執(zhí)行決策表。
編輯規(guī)則數(shù)據(jù)和發(fā)布規(guī)則等功能都在規(guī)則管理平臺(tái)中進(jìn)行的。
登錄規(guī)則管理平臺(tái),打開(kāi)規(guī)則包管理界面,找到相應(yīng)的分類,右鍵新增規(guī)則。

點(diǎn)擊瀏覽,找到剛才生成的ckp文件,系統(tǒng)自動(dòng)加載規(guī)則包名稱,填寫到編碼,名稱上面。而字段就會(huì)拉出規(guī)則的輸入輸出信息。在編輯類型中,選擇決策表。
打開(kāi)規(guī)則發(fā)布界面

找到未發(fā)布的規(guī)則包,雙擊行記錄。
在界面下部會(huì)顯示該規(guī)則的相關(guān)的信息,如當(dāng)前規(guī)則、服務(wù)開(kāi)始時(shí)間、服務(wù)結(jié)束時(shí)間和服務(wù)類型。服務(wù)開(kāi)始時(shí)間必須小于當(dāng)前時(shí)間,服務(wù)結(jié)束時(shí)間必須大于當(dāng)前時(shí)間,服務(wù)類型選擇Json即可。然后點(diǎn)擊發(fā)布。
打開(kāi)規(guī)則數(shù)據(jù)設(shè)置界面,該界面顯示所有已經(jīng)發(fā)布的記錄。

找到對(duì)應(yīng)的規(guī)則,點(diǎn)擊用決策表設(shè)置。彈出決策表編輯界面。

上圖中,運(yùn)行時(shí)機(jī)和描述都是由規(guī)則包編輯時(shí)設(shè)置的,而表格中的各列,都是決策表設(shè)置的各列。數(shù)據(jù)保存后,會(huì)按數(shù)據(jù)庫(kù)字段對(duì)應(yīng)的內(nèi)容,保存到RoolTbl表中。
至此,一個(gè)決策表編輯完畢。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注