我是Drools的新手,所以如果我正在做的事情是正确的,请告诉我。所以这就是我想要做的。根据用户传递的一些输入参数,我需要运行不同的规则文件。这是我获取规则文件并执行规则的代码:
kieService = KieServices.Factory.get();
kContainer = kieService.getKieClasspathContainer();
kSession = kContainer.newStatelessKieSession(userInput); // This is the string the user passes as a parameter
kSession.execute(myObject);
kmodule.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="Kbase1" packages="com.mypackage1.rules">
<ksession name="abc" type="stateless"/>
</kbase>
</kmodule>
因此,如果用户输入是&#34; abc&#34;,那么我获取Kbase1。问题是,获取适当的ksession需要很长时间(约1.3秒)。现在,我的kmodule.xml中只有1个kbase。但这将会大大增加。我认为如果xml文件增长,它将花费更长的时间。而且,我将获得大量用户请求。所以1.3秒是不可接受的。
我在这里做错了吗?是否有更好的方法根据用户输入执行不同的规则?