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 天 - 可配置 - 以便它可以通过业务/配置文件传递 - 使用微服务。
解决方案
我通过为日期计算创建一个流口水文件函数来解决这个问题。将月份值作为参数传递给函数,该参数是从 Java 程序作为插入 state(ful) 会话的对象传递的事实变量。
推荐阅读
- react-spring - (React Spring)如何在父组件转换完成后链接子组件中的动画?
- javascript - 我们可以在 django 频道中创建私人聊天室并发送通知吗
- javascript - 如何使用 CSS 自定义属性和变换每 3 秒将 4 个孩子在一个圆圈内旋转 90 度?
- javascript - 使用 useState() 钩子从数组中更新对象的单个属性
- javascript - 为什么 foreach 循环会生成重复值?
- typescript - React-TypeScript:“{}”类型中缺少属性“geo”,但在“IMapProps”类型中是必需的
- java - 使用 finally 关闭流
- python - 使用浮点数进行计算时出现 Python ZeroDivisionError
- python - 如何将两个数据框列值作为键传递给一个值字典的 2 键并将结果放入另一列?
- python - 我无法安装任何 python 包