2016-08-10 2 views
1

Je suis à la recherche de certains articles sur internet, googling, mais jusqu'à présent, je n'ai rien trouvé de trop explicite au sujet de mon besoin.Drools règle la mise en œuvre avec des faits multiples

Je veux faire un - pour ma perception - pas si simple d'évaluation d'un cas.

rule "Send email E-mail based on rule evaluation" 
/* 
If 
    kind is equal 1 or 2 AND 
    code is equal 1 or 341 AND 
    payment is equal S 
    I do whatever I need to do 
*/ 
when 
    $item : Item((kind == 1 || kind == 2),(code == 1 || code == 341),payment = S); 
then 
    //do whatever I need to do 
end 

La difficulté est d'ajouter une nouvelle condition d'évaluation qui fonctionne comme une date limite (le dernier jour ouvrable et il est donc pas statique) et doit être fourni par mon code pour alimenter la règle (en utilisant kSession.insert?) puis comparez si un numéro d'émission d'un article est plus petit (date avant le dernier jour ouvrable fourni) pour faire ce que je dois faire.

Est-ce possible? Comment?

Répondre

0

Cela dépend de la façon dont la fonction issueDate est représentée. Disons qu'il est représenté par un entier yyyyddd, où aaaa est l'année et ddd le jour dans l'année, alors vous créez une autre classe Limite avec un jour de champ (même type et format), insérez un objet approprié et écrivez votre règle

rule "issue Date" 
when 
    Limit($day: day) 
    Item(kind == 1 || == 2, code == 1 || == 341 , payment == 123, 
      issueDate < day) 
then 
    // ... 
end 

Bien sûr, de nombreuses autres représentations d'une date fonctionneraient aussi bien.