Drools 说订单和产品类型不匹配

Drools says order and product types are a mismatch

我有一个订单可以分别定义在 2 个产品类别中。订单的类别可能属于第一个产品类别或另一个产品子类别。无论哪种方式,两种产品都完整地描述了订单。订单是一种农产品,也是一种水果。订单属于这些情况,因为这是遗留应用程序。但是,当我编写 drl 文件时,它失败并显示类型不匹配的错误,这两个都是字符串字段。问题是产品是脱节的,因此很难匹配它们并触发规则。我希望两种产品都满足条件。如果我尝试使用一种产品进行匹配,但它会选择列表中我不想要的其他几种产品。订单必须符合 2 个条件,即使它们是不同的事实。

这是我的 drl 文件:

 rule "check Order in Produce and type is fruit"

 when
    $order : Order( $orderId: orderId , $category: category  )
    $prod2 : Product( this.type == 'FRUIT', this.orderId == $orderId, 
                                          $name1: name)
   $prod3 : Product( this.type == "PRODUCE", this.name != $name1, 
    this.category == $category)
 then 
    System.out.println("Found a binding type "+$order) ;

end

我的 class 文件是这样的,我放了一个产品的值,省略了另一个。我放置第一个产品的实际值。

class Product{
   String name;
   String type= "FRUIT";
   String orderId = "123";
  String category = "PRODUCE";

 }

顺序class如下图:

      class Order{
       String orderId;
       String category;
      }

如果有人能提供帮助,我将不胜感激

对象没有包含导入;一旦我放置它,它就起作用了