摘要:規則引擎集合相關處理在實際生產過程中,有很多關于集合的處理場景,比如一個對象中包含有一個集合,而需要判斷該集合是否包含某個值。而規則引擎也提供了多種處理方式,比如通過等進行操作,比較。然后,通過關鍵字來遍歷中的值,獲得符合條件的。
規則引擎集合相關處理
在實際生產過程中,有很多關于集合的處理場景,比如一個Fact對象中包含有一個集合,而需要判斷該集合是否包含某個值。而Drools規則引擎也提供了多種處理方式,比如通過from、contains、exists等進行操作,比較。
當然也可以通過function函數來做相應的比較,在個在其他章節講到過,就不在此贅述。下面重點以幾個實例才進行講解,在具體實踐中根據具體情況來進行運用。
實例省略掉基本的配置,直接看調用代碼和規則代碼。
測試調用代碼:
public class ContainsDemo extends BaseDemo { public static void main(String[] args) { KieSession kieSession = getKieSession("containsVar"); Corporation corporation = new Corporation(); Setscopes = new HashSet<>(); scopes.add(new Scope("P2P")); scopes.add(new Scope("金融")); scopes.add(new Scope("區塊鏈")); corporation.setScopes(scopes); Scope scope = new Scope("區塊鏈"); kieSession.insert(corporation); kieSession.insert(scope); kieSession.fireAllRules(); } }
相關實體類:
@Data public class Corporation { private Setscopes; }
@Data public class Scope { public Scope(String scope){ this.scope = scope; } private String scope; }
然后看一下規則處理:
package com.containsVar import com.secbro2.drools.entity.Corporation import com.secbro2.drools.entity.Scope import java.util.List rule "containsVar1" when $c: Corporation($scopes:scopes); $s: Scope(scope == "P2P") from $scopes; then System.out.println("containsVar1行業類型為:P2P"); end rule "containsVar2" when $c: Corporation($scopes:scopes); exists (Scope(scope == "P2P") from $scopes); then System.out.println("containsVar2行業類型為:P2P"); end rule "containsVar3" when $s: Scope(scope == "區塊鏈") $c: Corporation(scopes contains $s); then System.out.println("containsVar3行業類型為:區塊鏈"); end rule "containsVar4" when $s: Scope(scope == "區塊鏈") exists (Corporation(scopes contains $s)); then System.out.println("containsVar4行業類型為:區塊鏈"); end
在上述實例中列舉了4中使用方法:
第一種,首先獲取Fact對象Corporation,并重新定義了它的屬性$scopes。然后,通過from關鍵字來遍歷$scopes中的值,獲得符合條件的。此時并不需要傳入Scope對應的fact對象。
第二種,前半部分同第一種方式,是不過沒有獲取篩選的結果,直接用exists來判斷是否存在。
第三種,先獲得滿足條件的Scope的Fact對象,然后再利用此fact對Corporation的fact對象進行篩選,只有滿足條件才可以繼續。
第四種,與第三種效果相同,原理同第二種方式的exists使用。
相關技術視頻CSDN學院:《Drools7規則引擎進階教程》
CSDN學院:《Drools7規則引擎入門教程》
CSDN學院:《Drools7系列優惠套餐》
原文鏈接:http://www.choupangxia.com/20...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75718.html
摘要:今天這批文章就帶大家了解一下規則引擎中比較操作符之一的。對象類代碼調用規則引擎代碼歡迎張三歡迎張三張三規則代碼,這里模擬了兩種場景的規則判斷規則觸發規則觸發執行結果規則觸發規則觸發 場景 規則引擎技術討論2群(715840230)有同學提出疑問,memberOf的使用過程中如果,memberOf之后的參數不是集合也不是數組,而是格式如1,2,3,4的字符串,那么Drools是否會講其轉...
摘要:問題場景在使用規則引擎時,有朋友會遇到這樣的問題,就是在部分判斷的兩個參數都是集合類型,比如兩個,此時要判斷一個集合是否包含另外一個集合的內容。 問題場景 在使用Drools規則引擎時,有朋友會遇到這樣的問題,就是在when部分判斷的兩個參數都是集合類型,比如兩個List,此時要判斷一個集合是否包含另外一個集合的內容。 拿一個具體的例子來說明,我的公眾號《程序新視界》接受商務合作有一定...
摘要:比如我們的指標是最近分鐘的同一用戶的下單量,那么我們就需要實現一種類似的滑動窗口算法,以便任何時候都能拿到最近分鐘的數據。 此文已由作者肖凡授權網易云社區發布。 歡迎訪問網易云社區,了解更多網易技術產品運營經驗。 背景考拉安全部技術這塊目前主要負責兩塊業務:一個是內審,主要是通過敏感日志管理平臺搜集考拉所有后臺系統的操作日志,數據導入到es后,結合storm進行實時計算,主要有行為查詢...
摘要:比如對一個企業進行信用評級,涉及三個維度企業年齡企業注冊資本與企業法人年齡。增加判斷如果是將三個業務的判斷放在一個規則當中,那么對對象為的情況就需要特殊處理了。 問題場景 在技術交流群(QQ:715840230)中有同學提出這樣的問題: 往kiesession里面傳入fact,如果不做輸入檢查fact里面有些字段可能是null值。但是如果在外面做輸入檢查,規則一改,fact所需要的字段...
閱讀 2632·2021-11-18 10:07
閱讀 1086·2021-08-03 14:04
閱讀 730·2019-08-30 13:08
閱讀 2583·2019-08-29 15:33
閱讀 1096·2019-08-29 14:07
閱讀 2992·2019-08-29 14:04
閱讀 1443·2019-08-29 11:19
閱讀 1150·2019-08-29 10:59