摘要:今天這批文章就帶大家了解一下規則引擎中比較操作符之一的。對象類代碼調用規則引擎代碼歡迎張三歡迎張三張三規則代碼,這里模擬了兩種場景的規則判斷規則觸發規則觸發執行結果規則觸發規則觸發
場景
規則引擎技術討論2群(715840230)有同學提出疑問,memberOf的使用過程中如果,memberOf之后的參數不是集合也不是數組,而是格式如“1,2,3,4”的字符串,那么Drools是否會講其轉換成數組?
其實很顯然,Drools規則引擎不會這么做,它也并不知道你定義的字符串的格式及分隔符是什么,不會像SpringMVC那樣約定好以json格式進行解析。
今天這批文章就帶大家了解一下drools規則引擎中比較操作符之一的memberOf。
使用方法官方文檔和網絡上的資料給出的解釋基本上都是:用來判斷某個 Fact對象的某個字段是否在一個集合(Collection/Array)當中) 。
其中,這忽略了它的一個功能,就是如果它后面緊跟的不是集合或數組,而是字符串的話,它判斷的標準就變為:該字符串是否包含Fact對象的字段內容了。當然這個過程并不會神奇的轉換成數組什么的,僅僅類似于Java中String提供的contains方法的比較。
下面以具體的代碼來展示基于集合和字符串的判斷示例。
Fact對象類member代碼:
public class Member { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
調用規則引擎代碼:
KieSession kieSession = getKieSession("memberOfSession"); String str = "歡迎張三!"; Listlist = new ArrayList<>(); list.add("歡迎"); list.add("張三"); list.add("!"); Member member = new Member(); member.setName("張三"); kieSession.insert(str); kieSession.insert(list); kieSession.insert(member); kieSession.fireAllRules();
規則代碼,這里模擬了兩種場景的規則判斷:
package com.memberof import com.secbro2.drools.entity.Member import java.util.List rule "memberofRule1" when $s:String(); $c:Member(name memberOf $s); then System.out.println("memberofRule規則觸發!"); end rule "memberofRule2" when $list:List(); $c:Member(name memberOf $list); then System.out.println("memberofRule2規則觸發!"); end
執行結果:
memberofRule規則觸發! memberofRule2規則觸發!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75397.html
摘要:規則引擎集合相關處理在實際生產過程中,有很多關于集合的處理場景,比如一個對象中包含有一個集合,而需要判斷該集合是否包含某個值。而規則引擎也提供了多種處理方式,比如通過等進行操作,比較。然后,通過關鍵字來遍歷中的值,獲得符合條件的。 規則引擎集合相關處理 在實際生產過程中,有很多關于集合的處理場景,比如一個Fact對象中包含有一個集合,而需要判斷該集合是否包含某個值。而Drools規則引...
摘要:問題場景在使用規則引擎時,有朋友會遇到這樣的問題,就是在部分判斷的兩個參數都是集合類型,比如兩個,此時要判斷一個集合是否包含另外一個集合的內容。 問題場景 在使用Drools規則引擎時,有朋友會遇到這樣的問題,就是在when部分判斷的兩個參數都是集合類型,比如兩個List,此時要判斷一個集合是否包含另外一個集合的內容。 拿一個具體的例子來說明,我的公眾號《程序新視界》接受商務合作有一定...
摘要:比如對一個企業進行信用評級,涉及三個維度企業年齡企業注冊資本與企業法人年齡。增加判斷如果是將三個業務的判斷放在一個規則當中,那么對對象為的情況就需要特殊處理了。 問題場景 在技術交流群(QQ:715840230)中有同學提出這樣的問題: 往kiesession里面傳入fact,如果不做輸入檢查fact里面有些字段可能是null值。但是如果在外面做輸入檢查,規則一改,fact所需要的字段...
摘要:比如我們的指標是最近分鐘的同一用戶的下單量,那么我們就需要實現一種類似的滑動窗口算法,以便任何時候都能拿到最近分鐘的數據。 此文已由作者肖凡授權網易云社區發布。 歡迎訪問網易云社區,了解更多網易技術產品運營經驗。 背景考拉安全部技術這塊目前主要負責兩塊業務:一個是內審,主要是通過敏感日志管理平臺搜集考拉所有后臺系統的操作日志,數據導入到es后,結合storm進行實時計算,主要有行為查詢...
閱讀 1598·2023-04-26 02:43
閱讀 2994·2021-11-11 16:54
閱讀 1344·2021-09-23 11:54
閱讀 1165·2021-09-23 11:22
閱讀 2359·2021-08-23 09:45
閱讀 845·2019-08-30 15:54
閱讀 3094·2019-08-30 15:53
閱讀 3184·2019-08-30 15:53