0

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

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

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

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

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

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

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

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

请提出一些方法。

谢谢肖拉夫

4

1 回答 1

1

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

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
于 2014-09-15T12:16:00.763 回答