Drools规则引擎-如果判断某个对象中的集合是否包含指定的值

2019-07-31  本文已影响0人  程序新视界

规则引擎集合相关处理

在实际生产过程中,有很多关于集合的处理场景,比如一个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();
        Set<Scope> scopes = 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 Set<Scope> scopes;

}
@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中使用方法:

相关技术视频

CSDN学院:《Drools7规则引擎进阶教程》

CSDN学院:《Drools7规则引擎入门教程》

CSDN学院:《Drools7系列优惠套餐》

原文链接:http://www.choupangxia.com/2019/07/31/drools%e8%a7%84%e5%88%99%e5%bc%95%e6%93%8e-%e5%a6%82%e6%9e%9c%e5%88%a4%e6%96%ad%e6%9f%90%e4%b8%aa%e5%af%b9%e8%b1%a1%e4%b8%ad%e7%9a%84%e9%9b%86%e5%90%88%e6%98%af%e5%90%a6%e5%8c%85%e5%90%ab%e6%8c%87/

上一篇下一篇

猜你喜欢

热点阅读