Drools比较两个对象的属性

Drools比较两个对象的属性,drools,Drools,我有一个要求,即决定将员工分配到哪个培训 假设我有两列火车,其性质如下: Train 1 Train 2 trainID=1 trainID=2 passengerCount=100 passengerCount=150 numberOfBoxes=12 numberOfBoxes=7 如果我把这两个物体都传给Drools然后像这样检查 $train1 : TrainPr

我有一个要求,即决定将员工分配到哪个培训

假设我有两列火车,其性质如下:

Train 1                      Train 2
trainID=1                    trainID=2
passengerCount=100           passengerCount=150
numberOfBoxes=12             numberOfBoxes=7
如果我把这两个物体都传给Drools然后像这样检查

$train1 : TrainProperties($pasCnt : passengerCount) 
    $train2 : TrainProperties($pasCnt2 : passengerCount > $pasCnt)  
then    
    Sysout("Train 2 is more important")
end
现在我必须根据NumberOfBox添加更多条件。如何操作?

如中所述,您可以使用
在模式内创建多个
条件。您还可以使用
|
创建

所以,在你的情况下,你可以这样做:

when
    $train1 : TrainProperties($pasCnt : passengerCount, $boxes: numberOfBoxes) 
    $train2 : TrainProperties($pasCnt2 : passengerCount > $pasCnt, numberOfBoxes > $boxes )  
then    
    Sysout("Train 2 is more important")
end

希望有帮助,

谢谢Esteban。。。我想我没有写完整。谢谢埃斯特班。。。我想我没有写完整。发生的事情是:当我将train1和train对象作为事实发送时:当我在drool文件中检索这些对象时,顺序似乎不一样。。如果我先发送了Train1,我会在drool文件中获取Train2数据。。这是不一致的,在规则1中,首先是列车2,在另一个规则中,其他一些列车数据首先出现。有没有办法在drool文件中保持我作为事实发送的相同顺序。。我希望我已经把我面临的问题说清楚了不,没有。你应该以这样一种方式来写你的规则:事实进入会话的顺序不会影响它们。如果顺序在您的案例中非常重要,那么您可能需要问问自己Drools(或任何生产规则引擎)是否最适合您。当然,您可以执行类似于
$train1:Train(id==1)$train2:Train(id==2)
的操作,但这会使您的规则变得非常脆弱。