Hi,
I came across in my view strange behaviour of rules defined with 
activation-group and salience. I use this combination to set the 
priority of exclusively fired rules "Democracy City Tiles Production" 
and "Basic City Tiles Production".
Their definitions:
rule "Democracy City Tiles Production"
     dialect "mvel"
     ruleflow-group "manageProductions"
     activation-group "cityProduction"
     salience 5
     when
         PlayerDTO($owner:id, government=="democracy")
         $city:CityDTO(
             owner==$owner
             ,$cityId:id
             ,$managedTiles:managedTiles
         )
         accumulate(
                     TileDTO (
                             id memberOf $managedTiles
                             ,$foodProd:foodProduction
                             ,$resourcesProd:resourcesProduction
                             ,$tradeProd:tradeProduction
                     ) 
@watch(foodProduction,resourcesProduction,tradeProduction)
                     ,$sumFood : sum($foodProd)
                     ,$sumResources : sum($resourcesProd)
                     ,$sumTrade : 
sum(($tradeProd<1)?$tradeProd:($tradeProd+1))
         )
         UpdateCityProduction(cityId==$cityId)
     then
         modify($city){
             setFoodProduction($sumFood)
             ,setResourcesProduction($sumResources)
             ,setTradeProduction($sumTrade)
         }
end

and

rule "Basic City Tiles Production"
     dialect "mvel"
     ruleflow-group "manageProductions"
     activation-group "cityProduction"
     when
         PlayerDTO($owner:id)
         $city:CityDTO(
             owner==$owner
             ,$cityId:id
             ,$managedTiles:managedTiles
         )
         accumulate(
                     TileDTO (
                             id memberOf $managedTiles
                             ,$foodProd:foodProduction
                             ,$resourcesProd:resourcesProduction
                             ,$tradeProd:tradeProduction
                     ) 
@watch(foodProduction,resourcesProduction,tradeProduction)
                     ,$sumFood : sum($foodProd)
                     ,$sumResources : sum($resourcesProd)
                     ,$sumTrade : sum($tradeProd)
         )
         UpdateCityProduction(cityId==$cityId)
     then
         modify($city){
             setFoodProduction($sumFood)
             ,setResourcesProduction($sumResources)
             ,setTradeProduction($sumTrade)
         }
end

But problem occurs when two CityDTO objects are in the session. I would 
like to fire one rule for each CityDTO, but the activation-group cancels 
all the activations after first is fired. So only one activation in 
place of two fires. Here is the log:

==>[BeforeActivationFiredEvent:  getActivation()=[[ Democracy City Tiles 
Production active=false ] [ [fact 
0:12:36803987:36803987:12:DEFAULT:NON_TRAIT:UpdateCityProduction( 
cityId=5 )]
[fact 
0:16:2083264739:2083264739:16:null:NON_TRAIT:[Ljava.lang.Object;@7c2c18e3]
[fact 0:11:792938926:966:11:DEFAULT:NON_TRAIT:CityDTO [id=5, 
name=marefy, cityCentre=null, owner=1, improvements=[], 
currentImprovement=null, enabledImprovements=[], homeUnits=[], 
currentUnit=null, enabledUnitTypes=[], tradeRoutes=[], managedTiles=[1, 
2], size=5, weLoveDay=false, disorder=false, foodProduction=0, 
foodConsumption=0, foodSurplus=0, foodStock=0, resourcesProduction=0, 
resourcesConsumption=0, resourcesSurplus=null, tradeProduction=0, 
corruption=0, luxuriesAmount=0, luxuriesSpent=0, taxesAmount=0, 
researchAmount=0, peopleHappy=2, peopleUnhappy=1, peopleContent=1, 
peopleEntertainers=0, peopleTaxmen=1, peopleScientists=0, 
pollutionChance=0, improvementsUpkeep=0, unitsSupport=0]]
[fact 0:9:1762763035:99463566:9:DEFAULT:NON_TRAIT:PlayerDTO [id=1, 
name=honza, government=democracy, enabledGovernments=null, 
currentAdvance=null, advances=null, enabledAdvances=null, treasury=0, 
research=0, researchSpent=null, turnsAvailable=null, luxuriesRatio=0, 
taxesRatio=0, researchRatio=0]] ] ], 
getKnowledgeRuntime()=org.drools.core.impl.StatefulKnowledgeSessionImpl@6a5b07f2]
==>[ActivationCancelledEvent: getCause()=CLEAR, getActivation()=[[ Basic 
City Tiles Production active=false ] [ [fact 
0:15:807492131:807492131:15:null:NON_TRAIT:[Ljava.lang.Object;@30215a23]
[fact 0:11:792938926:966:11:DEFAULT:NON_TRAIT:CityDTO [id=5, 
name=marefy, cityCentre=null, owner=1, improvements=[], 
currentImprovement=null, enabledImprovements=[], homeUnits=[], 
currentUnit=null, enabledUnitTypes=[], tradeRoutes=[], managedTiles=[1, 
2], size=5, weLoveDay=false, disorder=false, foodProduction=0, 
foodConsumption=0, foodSurplus=0, foodStock=0, resourcesProduction=0, 
resourcesConsumption=0, resourcesSurplus=null, tradeProduction=0, 
corruption=0, luxuriesAmount=0, luxuriesSpent=0, taxesAmount=0, 
researchAmount=0, peopleHappy=2, peopleUnhappy=1, peopleContent=1, 
peopleEntertainers=0, peopleTaxmen=1, peopleScientists=0, 
pollutionChance=0, improvementsUpkeep=0, unitsSupport=0]]
[fact 0:12:36803987:36803987:12:DEFAULT:NON_TRAIT:UpdateCityProduction( 
cityId=5 )] ] ], 
getKnowledgeRuntime()=org.drools.core.impl.StatefulKnowledgeSessionImpl@6a5b07f2]
==>[ActivationCancelledEvent: getCause()=CLEAR, getActivation()=[[ Basic 
City Tiles Production active=false ] [ [fact 
0:23:833001332:833001332:23:null:NON_TRAIT:[Ljava.lang.Object;@31a69774]
[fact 0:18:1816369501:968:18:DEFAULT:NON_TRAIT:CityDTO [id=7, name=Brno, 
cityCentre=null, owner=1, improvements=[], currentImprovement=null, 
enabledImprovements=[], homeUnits=[], currentUnit=null, 
enabledUnitTypes=[], tradeRoutes=[], managedTiles=[3, 4], size=1, 
weLoveDay=false, disorder=false, foodProduction=0, foodConsumption=0, 
foodSurplus=0, foodStock=0, resourcesProduction=0, 
resourcesConsumption=0, resourcesSurplus=null, tradeProduction=0, 
corruption=0, luxuriesAmount=0, luxuriesSpent=0, taxesAmount=0, 
researchAmount=0, peopleHappy=0, peopleUnhappy=0, peopleContent=1, 
peopleEntertainers=0, peopleTaxmen=0, peopleScientists=0, 
pollutionChance=0, improvementsUpkeep=0, unitsSupport=0]]
[fact 
0:20:1314789527:1314789527:20:DEFAULT:NON_TRAIT:UpdateCityProduction( 
cityId=7 )] ] ], 
getKnowledgeRuntime()=org.drools.core.impl.StatefulKnowledgeSessionImpl@6a5b07f2]
==>[ActivationCancelledEvent: getCause()=CLEAR, getActivation()=[[ 
Democracy City Tiles Production active=false ] [ [fact 
0:20:1314789527:1314789527:20:DEFAULT:NON_TRAIT:UpdateCityProduction( 
cityId=7 )]
[fact 
0:19:1857434733:1857434733:19:null:NON_TRAIT:[Ljava.lang.Object;@6eb6346d]
[fact 0:18:1816369501:968:18:DEFAULT:NON_TRAIT:CityDTO [id=7, name=Brno, 
cityCentre=null, owner=1, improvements=[], currentImprovement=null, 
enabledImprovements=[], homeUnits=[], currentUnit=null, 
enabledUnitTypes=[], tradeRoutes=[], managedTiles=[3, 4], size=1, 
weLoveDay=false, disorder=false, foodProduction=0, foodConsumption=0, 
foodSurplus=0, foodStock=0, resourcesProduction=0, 
resourcesConsumption=0, resourcesSurplus=null, tradeProduction=0, 
corruption=0, luxuriesAmount=0, luxuriesSpent=0, taxesAmount=0, 
researchAmount=0, peopleHappy=0, peopleUnhappy=0, peopleContent=1, 
peopleEntertainers=0, peopleTaxmen=0, peopleScientists=0, 
pollutionChance=0, improvementsUpkeep=0, unitsSupport=0]]
[fact 0:9:1762763035:99463566:9:DEFAULT:NON_TRAIT:PlayerDTO [id=1, 
name=honza, government=democracy, enabledGovernments=null, 
currentAdvance=null, advances=null, enabledAdvances=null, treasury=0, 
research=0, researchSpent=null, turnsAvailable=null, luxuriesRatio=0, 
taxesRatio=0, researchRatio=0]] ] ], 
getKnowledgeRuntime()=org.drools.core.impl.StatefulKnowledgeSessionImpl@6a5b07f2]


Is it a bug?
Thanks
Jan
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to