java Drools 5日期比较
我试图将Java类函数日期与当前日期进行比较。我需要验证Java类日期(CreationDate函数)是否比当前日期早[3个月]
爪哇-
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());
}
。。。。 Junit用于测试-
PersonPer personPer=new PersonPer();
String personCdate="15/12/1998";
Date personCreationDate = null;
try {
personCreationDate=new SimpleDateFormat("dd/MM/yyy").parse(personCdate);
System.out.println("Junit Test personCreationDate : "+ personCreationDate);
} catch (ParseException e) {
System.err.println("Date parsing exception");
e.printStackTrace();
}
personPer.setCreationDate(personCreationDate);
session.insert(personPer);
DRL- 规则“人员检查”
pp: PersonPer(pCreationDate:CreationDate)
....
when:
...
(
...
Date($now : time) from Calendar.getInstance().getTime()
pp: PersonPer(pCreationDate:CreationDate after[90] $now) <--- This doesn't work
Then:
System.out.println("Person date : " + pCreationDate);
drools.addError(...);
END
12:32:55 ERROR Error: [ERR 102] Line 141:5 mismatched input 'pp' in rule "Representative Checks"
12:32:55 ERROR Error: Parser returned a null Package
1)人员创建日期和当前日期之间的比较无效。请告知。 2) 此外,任何关于如何使用微服务进行90天(可配置)的建议,以便可以通过业务/配置文件进行传递
# 1 楼答案
我通过创建用于日期计算的drool文件函数解决了这个问题。将月份值作为参数传递给函数,该参数是一个事实变量,作为状态(ful)会话中插入的对象从Java程序传递