日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Drools規則引擎實戰

來源: 責編: 時間:2023-10-18 17:59:30 402觀看
導讀Part 1 規則引擎規則引擎:全稱為業務規則管理系統,英文名為BRMS。規則引擎的主要思想是將應用程序中的業務決策部分分離出來,并使用預定義的語義模塊編寫業務決策(業務規則),由用戶或 開發者在需要時進行配置、管理。需要注

ADH28資訊網——每日最新資訊28at.com

Part 1 規則引擎

規則引擎:全稱為業務規則管理系統,英文名為BRMS。規則引擎的主要思想是將應用程序中的業務決策部分分離出來,并使用預定義的語義模塊編寫業務決策(業務規則),由用戶或 開發者在需要時進行配置、管理。需要注意的是規則引擎并不是一個具體的技術框架,而是指的一類系統,即業務規則管理系統。ADH28資訊網——每日最新資訊28at.com

java開源的規則引擎有:Drools、Easy Rules、Mandarax、IBM ILOG。使用最為廣泛并且開源的是DroolsADH28資訊網——每日最新資訊28at.com

主要應用場景:對于一些存在比較復雜的業務規則并且業務規則會頻繁變換的系統比較適合使用規則引擎,如下:ADH28資訊網——每日最新資訊28at.com

風控決策系統-------風險貸款、風險評估ADH28資訊網——每日最新資訊28at.com

反欺詐項目-----銀行貸款、征信驗證、反洗錢ADH28資訊網——每日最新資訊28at.com

實時反欺詐平臺-----手機支付、信用卡消費ADH28資訊網——每日最新資訊28at.com

Drools規則引擎構成

drools規則引擎由以下幾部分構成:ADH28資訊網——每日最新資訊28at.com

  • Working Memory(工作內存)
  • Rules(規則庫)
  • Inference Engine(推理引擎)

◆Pattern Match(匹配器)具體匹配那一個規則,由它來完成ADH28資訊網——每日最新資訊28at.com

◆Agenda(議程)ADH28資訊網——每日最新資訊28at.com

◆Execution Engine(執行引擎)ADH28資訊網——每日最新資訊28at.com

Drools規則引擎概念

Working Memory:工作內存,drools規則引擎會從Working Memory中獲取數據并和規則文件中定義的規則進行模式匹配,所以我們開發的應用程序只需要將我們的數據插入到Working Memory中即可,例如本案例中我們調用kieSession.insert(order)就是將order對象插入到了工作內存中。ADH28資訊網——每日最新資訊28at.com

Fact:事實,是指在drools 規則應用當中,將一個普通的JavaBean插入到Working Memory后的對象就是Fact對象,例如本案例中的Order對象就屬于Fact對象。Fact對象是我們的應用和規則引擎進行數據交互的橋梁或通道。ADH28資訊網——每日最新資訊28at.com

Rules:規則庫,我們在規則文件中定義的規則都會被加載到規則庫中。ADH28資訊網——每日最新資訊28at.com

Pattern Matcher:匹配器,將Rule Base中的所有規則與Working Memory中的Fact對象進行模式匹配,匹配成功的規則將被激活并放入Agenda中。ADH28資訊網——每日最新資訊28at.com

Agenda:議程,用于存放通過匹配器進行模式匹配后被激活的規則。ADH28資訊網——每日最新資訊28at.com

Drools 基礎語法

規則文件構成ADH28資訊網——每日最新資訊28at.com

關鍵字ADH28資訊網——每日最新資訊28at.com

描述ADH28資訊網——每日最新資訊28at.com

package 包名ADH28資訊網——每日最新資訊28at.com

只限于邏輯上的管理,同一個包名下的查詢或者函數可以直接調用ADH28資訊網——每日最新資訊28at.com

importADH28資訊網——每日最新資訊28at.com

用于導入類或者靜態方法ADH28資訊網——每日最新資訊28at.com

globalADH28資訊網——每日最新資訊28at.com

全局變量ADH28資訊網——每日最新資訊28at.com

functionADH28資訊網——每日最新資訊28at.com

自定義函數ADH28資訊網——每日最新資訊28at.com

queryADH28資訊網——每日最新資訊28at.com

查詢ADH28資訊網——每日最新資訊28at.com

rule endADH28資訊網——每日最新資訊28at.com

規則體ADH28資訊網——每日最新資訊28at.com

一個規則通常包含三個部分:屬性部分(attribute)、條件部分(LHS)和結果部分(RHS)ADH28資訊網——每日最新資訊28at.com

語法結構體:ADH28資訊網——每日最新資訊28at.com

rule "ruleName"    attributes    when        LHS    then        RHSend

rule:關鍵字,表示規則開始,參數為規則的唯一名稱。ADH28資訊網——每日最新資訊28at.com

attributes:規則屬性,是rule與when之間的參數,為可選項。ADH28資訊網——每日最新資訊28at.com

when:關鍵字,后面跟規則的條件部分。ADH28資訊網——每日最新資訊28at.com

LHS(Left Hand Side):是規則的條件部分的通用名稱。它由零個或多個條件元素組成。如果LHS為空,則它將被視為始終為true的條件元素。ADH28資訊網——每日最新資訊28at.com

then:關鍵字,后面跟規則的結果部分。ADH28資訊網——每日最新資訊28at.com

RHS(Right Hand Side):是規則的后果或行動部分的通用名稱。ADH28資訊網——每日最新資訊28at.com

end:關鍵字,表示一個規則結束。ADH28資訊網——每日最新資訊28at.com

Part 2 規則比較操作符

符號ADH28資訊網——每日最新資訊28at.com

說明ADH28資訊網——每日最新資訊28at.com

>ADH28資訊網——每日最新資訊28at.com

大于ADH28資訊網——每日最新資訊28at.com

<ADH28資訊網——每日最新資訊28at.com

小于ADH28資訊網——每日最新資訊28at.com

>=ADH28資訊網——每日最新資訊28at.com

大于等于ADH28資訊網——每日最新資訊28at.com

<=ADH28資訊網——每日最新資訊28at.com

小于等于ADH28資訊網——每日最新資訊28at.com

==ADH28資訊網——每日最新資訊28at.com

等于ADH28資訊網——每日最新資訊28at.com

!=ADH28資訊網——每日最新資訊28at.com

不等于ADH28資訊網——每日最新資訊28at.com

containsADH28資訊網——每日最新資訊28at.com

檢查一個Fact對象的某個屬性值是否包含一個指定的對象值ADH28資訊網——每日最新資訊28at.com

not containsADH28資訊網——每日最新資訊28at.com

檢查一個Fact對象的某個屬性值是否不包含一個指定的對象值ADH28資訊網——每日最新資訊28at.com

memberOfADH28資訊網——每日最新資訊28at.com

判斷一個Fact對象的某個屬性是否在一個或多個集合中ADH28資訊網——每日最新資訊28at.com

not memberOfADH28資訊網——每日最新資訊28at.com

判斷一個Fact對象的某個屬性是否不在一個或多個集合中ADH28資訊網——每日最新資訊28at.com

matchesADH28資訊網——每日最新資訊28at.com

判斷一個Fact對象的屬性是否與提供的標準的Java正則表達式進行匹配ADH28資訊網——每日最新資訊28at.com

not matchesADH28資訊網——每日最新資訊28at.com

判斷一個Fact對象的屬性是否不與提供的標準的Java正則表達式進行匹配ADH28資訊網——每日最新資訊28at.com

Part 3 Drools 規則屬性 attributes

Drools中提供的屬性如下表(部分屬性)ADH28資訊網——每日最新資訊28at.com

屬性名ADH28資訊網——每日最新資訊28at.com

說明ADH28資訊網——每日最新資訊28at.com

salienceADH28資訊網——每日最新資訊28at.com

指定規則執行優先級ADH28資訊網——每日最新資訊28at.com

dialectADH28資訊網——每日最新資訊28at.com

指定規則使用的語言類型,取值為java和mvelADH28資訊網——每日最新資訊28at.com

enabledADH28資訊網——每日最新資訊28at.com

指定規則是否啟用ADH28資訊網——每日最新資訊28at.com

date-effectiveADH28資訊網——每日最新資訊28at.com

指定規則生效時間ADH28資訊網——每日最新資訊28at.com

date-expiresADH28資訊網——每日最新資訊28at.com

指定規則失效時間ADH28資訊網——每日最新資訊28at.com

activation-groupADH28資訊網——每日最新資訊28at.com

激活分組,具有相同分組名稱的規則只能有一個規則觸發ADH28資訊網——每日最新資訊28at.com

agenda-groupADH28資訊網——每日最新資訊28at.com

議程分組,只有獲取焦點的組中的規則才有可能觸發ADH28資訊網——每日最新資訊28at.com

timerADH28資訊網——每日最新資訊28at.com

定時器,指定規則觸發的時間ADH28資訊網——每日最新資訊28at.com

auto-focusADH28資訊網——每日最新資訊28at.com

自動獲取焦點,一般結合agenda-group一起使用ADH28資訊網——每日最新資訊28at.com

no-loopADH28資訊網——每日最新資訊28at.com

防止死循環,防止自己更新規則再次觸發ADH28資訊網——每日最新資訊28at.com

lock-on-activeADH28資訊網——每日最新資訊28at.com

no-loop增強版本。可防止別人更新規則再次出發ADH28資訊網——每日最新資訊28at.com

Part 4 項目應用

省機頂盒軟探針平臺為實現機頂盒用戶視頻使用質量的實時監控,采用實時大數據進行準實時的指標統計,指標結果推送kafka,由平臺新增的告警引擎實時消費kafka數據并通過預定制的專家規則實現實時的告警判定,最終告警結果實時通知反饋到告警平臺,實現告警到告警恢復的生命周期。ADH28資訊網——每日最新資訊28at.com

圖片ADH28資訊網——每日最新資訊28at.com

Part 5 規則示例

rule "播放成功率告警"no-loop truewhen    $fact:Fact()    eval($fact.getPlay() > 0.0)    eval($fact.getPlay() < MapUtils.getDoubleValue($fact, "playThreshold", 0.96))then    RuleResult fr = new RuleResult("播放成功率告警");    fr.setRuleCode(900001);    fr.setActualTime(MapUtils.getString($fact, "actualTime"));    fr.setAlarmTime(RuleUtil.getAlarmTime(MapUtils.getString($fact, "actualTime"), MapUtils.getString($fact, "900001")));    //說明當前是要告警的    fr.setAlarmStatus("1");    fr.setAlarmTitle("指標播放成功率異常");    fr.setLocateInfo("指標播放成功率異常");    fr.setAlarmText(RuleUtil.playAlarmText($fact, MapUtils.getDoubleValue($fact, "playThreshold", 0.96)));    insert(fr);endrule "播放成功率告警結束"no-loop truewhen    $fact:Fact()    eval($fact.getPlay() >= MapUtils.getDoubleValue($fact, "playThreshold", 0.96))    eval(MapUtils.getLongValue($fact, "900001") > 0)    eval(RuleUtil.checkAlarmTime($fact.getActualTime(), MapUtils.getLongValue($fact, "900001_time"), MapUtils.getLongValue($fact, "reThreshold", 900000)))then    RuleResult fr = new RuleResult("播放成功率告警恢復");    fr.setRuleCode(900001);    fr.setActualTime(MapUtils.getString($fact, "actualTime"));    fr.setAlarmTime(MapUtils.getString($fact, "900001"));    fr.setAlarmStatus("0");    fr.setMsg("告警恢復");    fr.setAlarmTitle("指標播放成功率異常");    fr.setLocateInfo("指標播放成功率異常");logger.info("播放告警恢復了{}", $fact);insert(fr);


ADH28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-14022-0.htmlDrools規則引擎實戰

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 增強現實改變營銷的三種方式

下一篇: 徹底搞懂hashMap底層原理

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 昆山市| 潍坊市| 肥乡县| 天气| 社会| 图片| 汝州市| 盱眙县| 泰来县| 宕昌县| 舞阳县| 昌平区| 荥经县| 西青区| 珲春市| 黔西县| 金塔县| 宜兴市| 孙吴县| 寿宁县| 富阳市| 昌邑市| 左云县| 邢台县| 尉氏县| 东阿县| 许昌市| 饶河县| 灵山县| 蓝山县| 新蔡县| 内丘县| 合阳县| 仁化县| 灵寿县| 宁都县| 和田市| 永春县| 察雅县| 玛沁县| 专栏|