0

提前致谢。我们正在尝试在我们的企业中采用 drools 作为规则引擎。在评估了 POC 模式下的基本功能之后,我们正在进一步探索。我们面临以下挑战,我正在尝试验证我们正在考虑的一些选项。任何帮助是极大的赞赏。

场景 1:假设您在事实字段中获得美国州(TX、CA、CO 等)。现在,您希望规则检查“事实的状态值”是否存在于预先确定的状态值静态列表中(例如该列表包含三个值 TX、TN、MN)。

场景 1 的可能解决方案:“状态值的静态列表”可以设置为全局变量,并且规则可以在执行检查时访问全局变量。

关于场景 1 的问题:“场景 1 的可能解决方案”是标准做法吗?如果是这样,是否可以在规则引擎(KIE 服务器)启动期间从数据库中加载此全局变量的值?如果是,您能否告诉我使我们能够从数据库加载全局变量的 drools 功能?客户端应用程序(调用 kie-server 的客户端应用程序)是否应该初始化全局变量?


场景 2:我们想要横向扩展规则执行服务器。假设我们有一个规则引擎服务器(kie-server)暴露 rest-api。我们可以在负载均衡器后面运行多个实例以使其水平扩展吗?有没有其他方法可以实现可扩展性?


4

1 回答 1

0

Q1:这取决于。对于仅在单个规则中使用的小型、很少(如果有的话)更改集,通常的解决方案是使用in运算符将​​其放入规则中。如果您认为您可能必须更改它或经常使用它,全局将是实现此目的的一种方法,但您必须确保在插入任何事实之前初始化全局。

访问数据库没有开箱即用的东西。

Q2:运行 Drools 会话的服务器只是另一个 Java 服务器程序,因此适用于此类程序的任何负载平衡也应该适用于 Drools 应用程序。你在害怕什么?

于 2017-01-09T06:23:40.197 回答