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)
的操作,但这会使您的规则变得非常脆弱。