用于创建规则引擎的最佳设计模式

时间:2012-02-16 10:02:07

标签: java design-patterns rule-engine stream-processing

假设我必须设计一个规则引擎,根据静态配置规则,责任链在运行时会发生变化。实现此问题的最佳设计模式是什么?

e,g。根据一些配置,流中的一组事件可以(1)过滤,(2)分区为子集(3)修改

对于每个流,客户可以选择三个中的一个或三个中的一个,或者三个中没有一个。

因此,我的程序集管道应该在运行时根据每个流的配置进行配置。

实现这一目标的最佳设计模式是什么?

1 个答案:

答案 0 :(得分:4)

我不确定我是否理解您的用例,但有些开源项目似乎完全符合您的需求。

首先,你有Apache Camel,它允许你配置路由(静态和/或动态)。这样,您可以根据配置的路由将事件流路由到管道的每个组件。

作为Camel的替代或补充,Drools FusionEsper是两个执行复杂事件处理(即事件过滤,关联,隔离等)的开源项目。它们都支持动态添加/删除规则/查询。因此,您可以使用单个路径进入Drools / Esper会话,而不是更改路径,而只需根据配置添加/删除规则/查询,以便执行您所需的操作。

在我看来,您不需要创建“规则引擎”。你可以使用那里的东西。