Drools全局变量初始化和扩展性能

时间:2017-01-09 00:30:11

标签: drools rule-engine kie kie-workbench kie-server

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

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

Scenario-1的可能解决方案:'静态状态值列表'可以设置为全局变量,规则可以在执行检查时访问全局变量。

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

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

1 个答案:

答案 0 :(得分:0)

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

访问数据库没有任何开箱即用的功能。

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