java - 流口水时比较工作内存中的对象(事实)

标签 java drools rules drools-flow

我正在通过DRT(规则模板)读取Excel表,然后通过Java类中的静态方法将其转换为类的对象。并将其插入到工作内存中。这样,工作内存就会被 Excel 表格中的所有事实填满。

现在,我通过 session 在 INSERT() 中通过 Java 类发送事实。 我需要匹配两个相似的对象并从工作内存中返回匹配的对象。 举例来说:

从 Excel 中读取并插入到工作内存中。

Person(name == "Kumar", Age == 60, status == true);

现在在 Java 类中,通过 session 我插入以下对象:

Person(name == "Kumar", Age == 60 );

然后我需要通过比较两个对象来设置Status = true

我需要编写比较两个对象的规则。

请建议一些方法。

谢谢 绍拉夫

最佳答案

如果我们必须假设可能存在三个或更多“相似”事实,那么最好这样做:

rule "find same name and age"
when
    $p1: Person( $name: name, $age: age, status == false )
    $p2: Person( name == name, age == $age, status == false, this != $p1 )
    accumulate( $p: Person( name == name, age == $age, status == false );
                $list: collectList( $p ) )
then
    for( int i = 0; i < $list.size(); i++ ){
        Person p = (Person)$list.get(i);
        update( p ){ setStatus( true ) }
    }
end

关于java - 流口水时比较工作内存中的对象(事实),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25845051/

相关文章:

xml - ruleML-优点/缺点?

haskell - 对 Haskell 的布局工具如何处理此代码感到困惑

parsing - 在 ANTLR 中,是否有表示一组规则的所有排列的交替的快捷符号?

java - libGDX 在静态类中处理纹理

performance - 如何提高流口水的性能?

java - 在http :outbound endpoint in Mule中指定多个查询参数

java - 分析 native 方法上的卡住线程

drools - 如何通过 REST 公开 Drools 规则

java - 在 Windows XP 上运行的开源 OCR 库

java - 限制生成的线程数量