J'utilise drools 6.5.0.Final pour créer mon projet de drools. J'essaie d'utiliser les tables de décision guidées (.gdst) dans le plan de travail. Je veux utiliser un code java dans WHEN et alors partie des règles, comme je suis autorisé dans les .drl fichiers, comme ci-dessous:Comment utiliser le code java dans les règles créées dans drools workbench
rule "filter rule"
when
//conditions
$Cp : CpClass(name == "Tom",
Math.abs(score) > 10
&&
// How do I use functions like below?
($Cp.parseTime(CurrTime).getTime() -
$Cp.parseTime(PrevTime).getTime())/1000 > 120
)
then
//actions
System.out.println("Rule passed for : "+ $Cp.toString());
$Cp.isGoodCp = true;
end
L'objet utilisé dans l'exemple ci-dessus:
public class CpClass {
public String name;
public String currTime;
public String prevTime;
public boolean isGoodCp = false;
// Function to parse string to date
public Date parseTime(String time) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Date parsedDate = null;
try {
if(time != null)
parsedDate = sdf.parse(time.substring(11));
else
parsedDate = sdf.parse("00:00:00");
} catch (Exception e) {
System.out.println("Error parsing:"+e);
}
return parsedDate;
}
}
Existe-t-il un moyen d'utiliser les fonctions java définies par l'utilisateur/intégrées comme je l'ai ici dans une table de décision guidée?
C'est plutôt sommaire: Quels sont '$ tickCp',' 'CurrTime' et PrevTime'? Laquelle des valeurs voulez-vous varier dans les lignes de votre table de décision? Avez-vous pensé à cacher les "fonctions Java" comme méthodes de classe 'CpClass'? – laune
Désolé, le tickCp était une faute de frappe. 'CurrTime' et' PrevTime' sont des membres de la classe définie par l'utilisateur 'CpClass', et' Cp' est un objet de la même classe. Si je fais les fonctions une méthode de la classe, comme 'parseTime()' sera-je capable de l'utiliser dans une table guidée? – ar7