У меня есть класс Java, в котором есть поле даты создания пользователя.
public class PersonPer
public Date getCreationDate() {
return creationDate == null ? null : new
Date(creationDate.getTime());
}
public void setCreationDate(Date creationDate) {
this.creationDate = creationDate == null ? null : new
Date(creationDate.getTime());
}
Мне нужно сравнить эту дату создания, которая должна быть меньше, чем сокращение X месяцев от текущей даты (я хочу передать значение X месяцев,скажем 3 месяца, из файла конфигурации / файла Java) в Drools.т.е. текущая дата - 10 июня 2018 года, X месяц (3 месяца) - 10 апреля 2018 года, дата создания должна быть до 10 апреля 2018 года.
Но это не работает.
1) Как передать значение dyanmic (из Java) в 'function in drools'?
JAVA (пока Junit) ->
`int RepresentativeAppointmentMonth=3
session.insert(personPer);
session.insert(RepresentativeAppointmentMonth);`
DRL ->
declare Facts
...
repMonth:RepMonth
..
end
declare RepMonth
month: int
end
function Date workWithDates(int m)
{
..
return NewDateWithMmonthsubtractedFromCurrentDate;
}
rule "Date check"
when
RepMonth(m : month)` //<- But if I add this line, the next line doesn't trigger, if I comment this line, it works, with static value of Months(hardcoding 3 months-> which I dont want.
PersonPer(CreationDate > workWithDates(m))
then
System.out.println("Rep");
end
2) Есть еще какие-нибудь предложения, чтобы справиться с этим?Я перепробовал много способов, но чего-то не хватает.Я новичок в Drools.