2017-07-10 5 views
1

J'utilise des modèles Drools pour générer des règles à partir d'une feuille de calcul. J'ai quelques problèmes avec la cellule vide. Est-ce que quelqu'un sait comment vérifier si une cellule ou la variable est vide? Ce est le modèle:Comment vérifier si la variable est vide dans les modèles Drools

template header 
pid 
department 
maxAmount 
storeId 

package X.X.X 

declare MaxAmountStore 
    amount : Integer  
    storeId : String 
end 

template "FOO" 
rule "[email protected]{row.rowNumber}" 
     when 
      Product(pid == "@{pid}") 
      Product(departmentId == "@{department}") 
     then 
      System.out.println("New MaxAmountStore: @{maxAmount} (store: @{storeId})"); 
      insert(new MaxAmountStore(@{maxAmount}, "@{storeId}")); 
    end 
end 

Est-il possible d'avoir un storeId vide?

+0

Votre règle n'a pas de sens. La conséquence ne dépend pas de quoi que ce soit correspondant à la condition. La condition peut correspondre pour deux objets Product différents, mais également pour les mêmes. Le remplacement du paramètre '@ {storeId}' par une chaîne vide est bien sûr possible, mais cela aurait même moins de sens. – laune

+0

Ok, je l'espère maintenant il devient plus clair: quand produit (pid == "@ {pid}" ou departmentId == "@ {département}") puis insert (nouveau MaxAmountStore (@ {} MaxAmount, « @ {storeId} "," @ {pid} ")); La question est de savoir si la colonne du département est vide? – RoddyRott

Répondre

0

Je pense que vous avez besoin de ceci: s'il n'y a rien dans la cellule, vous ne vous souciez pas de la valeur departmentId et vous voulez déclencher la règle basée uniquement sur pid.

template "FOO" 
rule "[email protected]{row.rowNumber}" 
when 
    Product(pid == "@{pid}"&& 
      ("" == "@{department}" || departmentId == "@{department}")) 
then 
    ... 
end