美文网首页
Drools规则引擎-memberOf操作

Drools规则引擎-memberOf操作

作者: 程序新视界 | 来源:发表于2019-07-17 11:27 被阅读0次

场景

规则引擎技术讨论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 = "欢迎张三!";
List<String> list = 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规则触发!

相关文章

  • Drools规则引擎-memberOf操作

    场景 规则引擎技术讨论2群(715840230)有同学提出疑问,memberOf的使用过程中如果,memberOf...

  • Drools

    一. Drools规则引擎 Drools就是为了解决业务代码和业务规则分离的引擎。Drools 规则是在 Java...

  • Drools 规则动态编译运行

    背景 近期遇到一个规则引擎项目,甲方明确要求用Drools规则引擎,之前想象中Drools应该应用在风控、预警类场...

  • Drools介绍与使用

    Drools 是用 Java 语言编写的开放源码规则引擎,使用 Rete 算法对所编写的规则求值。Drools 允...

  • Drools集成SpringBootStarter

    1.说明 基于fast-drools-spring-boot-starter,能够方便的将规则引擎Drools集成...

  • Drools详解

    Drools规则引擎的结构示意图 Drools相关概念 事实(Fact):对象之间及对象属性之间的关系 规则(ru...

  • 规则引擎_Drools

    01、背景 技术产生的背景: 概念拆解:规则的引擎 规则,在怎样的情况(条件)下做什么事情(结论),转化为伪代码:...

  • drools的简单入门案例

    一、背景 最近在学习规则引擎drools,此处简单记录一下drools的入门案例。 二、为什么要学习drools ...

  • 关于规则引擎--easy rules

    一、常用规则引擎 Drools、easyRule、QlExpress、Aviator、Vincio按照GitHu...

  • SpringBoot入门建站全系列(三十四)使用Drools规则

    SpringBoot入门建站全系列(三十四)使用Drools规则引擎做排班系统 一、概述 Drools 是用 Ja...

网友评论

      本文标题:Drools规则引擎-memberOf操作

      本文链接:https://www.haomeiwen.com/subject/hzqqlctx.html