Drools入門-實(shí)現(xiàn)評(píng)分專家系統(tǒng)

1.什么是Drools

Drools是一個(gè)規(guī)則引擎,可以通過自定義規(guī)則實(shí)現(xiàn)不同的專家語境,而不需要修改源代碼,規(guī)則引擎會(huì)自動(dòng)加載對(duì)應(yīng)的規(guī)則去適應(yīng)不同的場合。

2. 安裝配置Drools環(huán)境

Drools官方下載地址

進(jìn)入網(wǎng)址下載這兩個(gè)壓縮包


下載

解壓放置在一個(gè)文件夾中


解壓完畢

打開Eclipse->Help->install new software->Add->Local->droolsjbpm-tools-distribution-xxx->/binaries/org.drools.updatesite
隨便起一個(gè)名字就可以開始安裝了
安裝

你不要以為點(diǎn)了next就安裝好了!!?。。。。?!
注意看你的eclipse進(jìn)度條,他還在安裝!不要關(guān)?。?!
等他安裝完會(huì)彈出提示的??!
那時(shí)候再重啟eclipse?。?!
(血淚史-0-)

安裝成功過后打開window->perferences看到Drools就說明配置成功了。


image.png

安裝好了之后,點(diǎn)擊windows->perferences
屏幕快照 2018-10-08 18.33.34.png

點(diǎn)擊add,然后browse路徑為剛剛安裝的路徑下的binaries
binaries

然后就加載完成

3.創(chuàng)建一個(gè)Drools項(xiàng)目

New->project->Drools project

選第二個(gè)

這里選擇第二個(gè),因?yàn)榈诙€(gè)有例子!有例子!有例子!

Drools基本規(guī)則可以參考Drools語法規(guī)則
挺全的,但是我用不到那么多。這次的任務(wù)只是通過輸入的分?jǐn)?shù)的多少來評(píng)級(jí)
主函數(shù)實(shí)現(xiàn):

package com.sample;

import java.util.Scanner;

import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;

/**
 * This is a sample class to launch a rule.
 */
public class DroolsTest {

    public static final void main(String[] args) {
        try {
            // load up the knowledge base
            KieServices ks = KieServices.Factory.get();
            KieContainer kContainer = ks.getKieClasspathContainer();
            KieSession kSession = kContainer.newKieSession("ksession-rules");

            // go !
            Scanner in = new Scanner(System.in);
            System.out.println("請(qǐng)輸入需要評(píng)級(jí)的分?jǐn)?shù):(輸入0退出循環(huán))");
            int data = in.nextInt();
            while(data!=0) {
                Score s = new Score(data);
                kSession.insert(s);
                kSession.fireAllRules();
                System.out.println("請(qǐng)輸入需要評(píng)級(jí)的分?jǐn)?shù):(輸入0退出循環(huán))");
                data = in.nextInt();
            }
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }
    public static class Score{
        public int score;
        Score(int Score){
            score = Score;
        }
        public int getScore() {
            return score;
        }
    }

}
規(guī)則文件的編寫
package com.sample
 
import com.sample.DroolsTest.Score;
rule "ScoreA"
    when 
        Score(score > 90)
        
    then
        System.out.println("A");
end
rule "ScoreB+"
    when 
        Score(score >=87&&score<=89)
        
    then
        System.out.println("B+");
end
rule "ScoreB"
    when 
        Score(score >=80&&score<=86)
        
    then
        System.out.println("B");
end
rule "ScoreC+"
    when 
        Score(score >=77&&score<=79)
        
    then
        System.out.println("C+");
end
rule "ScoreC"
    when 
        Score(score >=70&&score<=76)
        
    then
        System.out.println("C");
end
rule "ScoreD+"
    when 
        Score(score >=67&&score<=69)
        
    then
        System.out.println("D+");
end
rule "ScoreD"
    when 
        Score(score >=60&&score<=66)
        
    then
        System.out.println("D");
end
rule "ScoreF"
    when 
        Score(score < 60)
        
    then
        System.out.println("F");
end
當(dāng)我們運(yùn)行時(shí),輸入1-100的數(shù)值,可以輸出對(duì)應(yīng)的評(píng)級(jí)
效果
結(jié)語:雖然看起來這個(gè)例子好像很傻的樣子,但是在實(shí)際的應(yīng)用過程中,如果我們要實(shí)現(xiàn)評(píng)級(jí),不需要像往常一樣,修改什么case 啊之類的源碼,我們僅僅需要修改規(guī)則,就可以實(shí)現(xiàn)一樣的效果,這是很有用的,很利于我們維護(hù)代碼

友情鏈接:
Drols入門環(huán)境配置
Drools應(yīng)用場景-小明的煩惱<---------很有趣可以看看

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,697評(píng)論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,351評(píng)論 25 708
  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,236評(píng)論 3 119
  • 曾經(jīng)問過幾位懷孕的媽媽,問她們?cè)性缙诔陨抖枷胪抡嬲巢桓饰兜臅r(shí)候最想吃的是什么。得到的回答都是小時(shí)候或以前吃的某樣...
    瑪莉隨心記閱讀 534評(píng)論 4 4
  • 冬季巨龍沉睡,冰凌、冰錐掛滿十里肢軀,天空也變得寂靜。 立春,春回大地,萬物復(fù)蘇山水醒。沉睡了一個(gè)冬季的巨龍開始復(fù)...
    時(shí)間的記憶_閱讀 703評(píng)論 0 0

友情鏈接更多精彩內(nèi)容