Dodałem obiekt z klasy zdefiniowanej przez użytkownika do HashMap. Po wprowadzeniu do kodu Drools, mogę wykonać iterację poprzez HashMap i uzyskać parę klucz i wartość. Ale nie mam dostępu do atrybutów wewnątrz klasy użytkownika, która jest sekcją wartości w HashMap.Obiekt dostępu do obiektów Drools wewnątrz HashMap podczas iterowania
To jest plik POJO służący do przechowywania danych. To POJO zostanie wstawione do LinkedHashMap za pomocą oddzielnego klucza. Obecnie ten klucz jest właśnie generowany za pomocą prostej pętli for.
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;
}
}
To jest kod Java używany do dodawania wartości do LinkedHashMap. Użyłem LinkedHashMap, ponieważ muszę uzyskać dostęp do elementów we właściwej kolejności. Kluczem HashMap jest int, natomiast wartością będzie obiekt DateSet.
outHash.put(incrementedId, new DateSet(training.getTrainingType(), training.getCompletionDate(),
training.getExpirationDate()));
To jest zasada Drools, której używam do obsługi HashMap. Skomentowaną częścią kodu jest to, jak chciałbym użyć obiektu wewnątrz Drools. "entry.getValue()" drukuje obiekt DateSet, ale nie mogę uzyskać dostępu do jego atrybutów.
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
Jestem w stanie wydrukować obiekt DateSet również za pomocą wartości $ valueV. Ale nie mogę uzyskać dostępu do atrybutów nadal ... –