【发布时间】:2015-02-03 09:25:36
【问题描述】:
我有事件驱动的架构。说大约 1000 个事件类型,每个事件类型可以有多个侦听器。平均每个事件大约 2 个。提供 2000 个处理程序。 对于每个事件处理程序,我都有进一步评估的规则,以查看是否需要该事件处理。
handle(MyEvent xxx){
kisession.execute( xxx.getPayload());
// Here I want the rules that are named/identified againt my Event alone to be fired
}
我可以将 MyEvent 添加为特定规则的 LHS 的一部分。
但我希望在触发事件后对匹配进行预处理以节省处理时间。 有没有更好的方法来仅触发特定规则,而不是让底层引擎评估所有 2000 条规则以找出适用于 Payload 事实的规则?
我可以在设计时确定特定事件处理程序的规则,并希望利用这一优势获得更好的性能。
【问题讨论】:
-
AFAIK,底层的 Rete 算法应该解决这个问题。它将事实库中的对象与规则中的条件相匹配,以便仅评估可能受某些事实库更新影响的规则。