Je suis un débutant dans JESS, et modéré en Java.Comment écrire JESS defrule "si une valeur n'existe pas dans une liste, puis imprimer un avertissement"
je « clist » liste des produits spéciaux (y compris les produits « essentiels » et « régionaux »), et « ListeX » liste de tous les produits (y compris les produits « essentiels » et « non essentiels ») Je veux faire une règle: si 'x' de 'xList' avec le statut 'essential' n'existe pas dans 'cList', alors imprimez 'Missing essential essential' x '. " Pour être clair, le modèle de mon système est le même que celui de l'exemple de pricing_engine dans Jess71p2.
- clist en même que CatalogItems
- ListeX en même que OrderItems
Je déclare deftemplate des classes Java. voici le deftemplate;
(import com.aisy.entity.*)
(deftemplate oldList(declare (from-class oldList)))
(deftemplate xList (declare (from-class xList)))
(deftemplate cList (declare (from-class cList)))
Voici le xList.java
package com.aisy.entity;
import java.sql.Timestamp;
public class xList {
private Long id_commodity;
private String commodity;
private String essentiality;
private Timestamp update;
public xList() {
super();
}
public xList(Long id_commodity, String commodity, String essentiality, Timestamp update) {
super();
this.id_commodity = id_commodity;
this.commodity = commodity;
this.essentiality = essentiality;
this.update = update;
}
public Long getId_commodity() {
return this.id_commodity;
}
public void setId_Commodity(Long id_commodity) {
this.id_commodity = id_commodity;
}
public String getCommodity() {
return this.commoditty;
}
....getter and setter methods for the rest fields
}
Voici le cList.java;
public class cList {
private Long id_commodity;
private String commodity;
private String price;
private Double final_price;
public cList(Long id_commodity, String commodity, String price, Double final_price) {
super();
this.id_commodity = id_commodity;
this.commodity = commodity;
this.price = price;
this.final_price = final_price;
}
public cList() {
super();
}
...common getter and setter methods for all fields
Voici warning.java;
public class warning {
private final String description;
public warning(String aDescription) {
description = aDescription;
}
public String getDescription() {
return description;
}
}
Voici la defrule;
(defrule
(xList (commodity ?essential_commodity) (essentiality /essential/))
(not(cList (commodity ?essential_commodity)))
=> (add (new warning "Missing essential commodity" ?essential_commodity))
)
J'essaie de mettre des informations à la base de données pour ListeX et clist:
xList("100000", "PEANUT", "2.45");
xList("100003", "BREAD", "1.5");
cList("100000", "PEANUT", "ESSENTIAL");
cList("100002", "CAKE", "ESSENTIAL");
cList("100003", "BREAD", "NON ESSENTIAL");
De là, si je lance mon moteur de règle, le résultat devrait être
"Missing essential commodity 100002"
Mais mon le résultat actuel est:
"Missing essential commodity 100000"
"Missing essential commodity 100002"
Comment écrire résoudre ce problème?
modifié: 22/07/2016 ajouté xList.java et cList.java
Peut-être que vous faites une erreur lors de la création et de l'insertion des faits. Ne peut pas dire sans le code pour cela. – laune