【发布时间】:2020-03-26 09:29:39
【问题描述】:
假设我有一个代表事件的类(流模式下流口水),我像这样设置该事件的到期时间:
@Role(Role.Type.EVENT)
@Expires("1m")
public class EventWithShortExpiration {}
效果很好。插入此事件 1 分钟后,它会自动从工作记忆中收回。 现在假设我有另一个类(继承自上面的类):
@Role(Role.Type.EVENT)
@Expires("10m")
public class EventWithLongExpiration extends EventWithShortExpiration {}
所以我预计 EventWithLongExpiration 事件会在 10m 后收回。或者,我也可以使用一个解决方案,其中子类根本没有到期,或者超类根本没有到期,所有组合都经过测试并且不起作用。
实际发生的是超级@expires 定义总是优先于子类@expires 定义。如果超类根本没有过期时间,而只有子类有过期时间,那么任何一个类都没有过期时间,并且对象永远不会收回。
有没有什么办法可以让这个工作和子类有 2 种不同的过期策略?
明确地说,我只想在 DRL 查询中查询超类型,并在同一语句中获取超类和子类的实例,但我希望它们在不同的持续时间后被收回。
【问题讨论】:
标签: java jboss drools rules kie