Ho aggiunto un oggetto da una classe definita dall'utente in una HashMap. Quando inserito nel codice Drools, posso scorrere la HashMap e ottenere la coppia chiave e valore. Ma non posso accedere agli attributi all'interno della classe utente che è la sezione del valore di HashMap.Danneggia l'oggetto di accesso all'interno di HashMap durante l'iterazione
Questo è il file POJO utilizzato per contenere i dati. Questo POJO verrà inserito in LinkedHashMap con una chiave separata. Attualmente, questa chiave viene appena generata utilizzando un ciclo for semplice.
package com.sample.pojos;
import java.util.Date;
public class DateSet {
public DateSet() {
// TODO Auto-generated constructor stub
super();
}
public DateSet(String trainingType, Date completedDate, Date expirationDate) {
super();
this.trainingType = trainingType;
this.completedDate = completedDate;
this.expirationDate = expirationDate;
}
private String trainingType;
private Date completedDate;
private Date expirationDate;
public String getTrainingType() {
return trainingType;
}
public void setTrainingType(String trainingType) {
this.trainingType = trainingType;
}
public Date getCompletedDate() {
return completedDate;
}
public void setCompletedDate(Date completedDate) {
this.completedDate = completedDate;
}
public Date getExpirationDate() {
return expirationDate;
}
public void setExpirationDate(Date expirationDate) {
this.expirationDate = expirationDate;
}
}
Questo è il codice Java utilizzato per aggiungere valori a LinkedHashMap. Ho usato LinkedHashMap perché ho bisogno di accedere agli articoli nell'ordine corretto. La chiave di HashMap è int mentre il valore sarà un oggetto DateSet.
outHash.put(incrementedId, new DateSet(training.getTrainingType(), training.getCompletionDate(),
training.getExpirationDate()));
Questa è la regola Drools che sto utilizzando per gestire la HashMap. La parte commentata nel codice è come vorrei utilizzare l'oggetto all'interno di Drools. "entry.getValue()" stampa l'oggetto DateSet ma non posso accedere agli attributi al suo interno.
rule "Validate test"
agenda-group "validate_init"
when
someClass: SomeClass($tMap : outHash)
entry : Entry($valueV : value) from $tMap.entrySet()
//Boolean(booleanValue == true) from ($valueV.getTrainingType() == "NEW")
then
//System.out.println($valueV.getTrainingType());
System.out.println(entry.getKey() + "-" + entry.getValue());
end
Sono in grado di stampare l'oggetto DateSet utilizzando $ valueV. Ma non riesco ancora ad accedere agli attributi ... –