如何将来自外部 Java 应用程序的数据提供给 Drools BRMS 并取回数据?
How to feed data from an external Java Application into a Drools BRMS and get data back?
基本上我首先在 Eclipse 中创建了一个 Drools 项目并设计了一个基本的规则应用程序,它将一个对象放入工作内存并触发所有规则(使用 ksession),它工作正常。
我想知道如何从不同的 Java 应用程序(不同的 eclipse 项目)调用这个规则应用程序,将输入对象变量提供给它并将计算的变量(从触发规则)返回到新的 Java 应用程序,有效地将规则处理与用户界面隔离开来。
目前还没有找到关于如何实现这一点的好例子。我是业务规则管理系统的新手。
您可以创建一个实用程序来创建静态 kSession。然后创建一个方法来获取您的输入并触发您的规则,如下所示(未经测试的代码)。想用的时候可以打电话。
DroolsTest.getInstance().fire(输入);
public class DroolsTest {
private static KieSession kSession;
private DroolsTest instance;
private DroolsTest(){
if(null == instance){
// load up the knowledge base
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
kSession = kContainer.newKieSession("ksession-rules");
}
}
public static DroolsTest getInstance(){
if(null = instance){
instance = new DroolsTest();
}
}
public static void fire(Object input) {
kSession.insert(input);
kSession.fireAllRules();
}
}
基本上我首先在 Eclipse 中创建了一个 Drools 项目并设计了一个基本的规则应用程序,它将一个对象放入工作内存并触发所有规则(使用 ksession),它工作正常。 我想知道如何从不同的 Java 应用程序(不同的 eclipse 项目)调用这个规则应用程序,将输入对象变量提供给它并将计算的变量(从触发规则)返回到新的 Java 应用程序,有效地将规则处理与用户界面隔离开来。 目前还没有找到关于如何实现这一点的好例子。我是业务规则管理系统的新手。
您可以创建一个实用程序来创建静态 kSession。然后创建一个方法来获取您的输入并触发您的规则,如下所示(未经测试的代码)。想用的时候可以打电话。
DroolsTest.getInstance().fire(输入);
public class DroolsTest {
private static KieSession kSession;
private DroolsTest instance;
private DroolsTest(){
if(null == instance){
// load up the knowledge base
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
kSession = kContainer.newKieSession("ksession-rules");
}
}
public static DroolsTest getInstance(){
if(null = instance){
instance = new DroolsTest();
}
}
public static void fire(Object input) {
kSession.insert(input);
kSession.fireAllRules();
}
}