在 spring MVC、Hibernate、Oracle 项目中实施规则引擎所需的设计指南
Design guidance needed on implementing rules engine in spring MVC , Hibernate , Oracle project
我正在尝试实现一个规则引擎,我的业务对象必须通过该引擎才能持久保存到数据库中。
规则将由用户通过用户界面创建。
你能给我建议实现这个的最佳方法吗?任何文档或现有工具都会有用。
我知道 Drools,但相信 drools 中的规则被编码到 .drl 文件中,不允许用户随时动态创建规则。
drools 中的规则被编码到 .drl 文件中,不允许用户随时动态创建规则。
Drools 特别适用于动态规则创建和集成,而无需实际接触应用程序代码。正确的方法是使用 Kie-workbench
进行规则创建和管理,并在您的应用程序中动态加载此规则。
规则将由用户通过用户界面创建。
对于需求,事实上,kie-workbench 效果最好,因为它甚至为您提供了指导 GUI 来创建和更新规则。
你能给我建议实现这个的最佳方法吗?任何文档或现有工具都会有用。
对于初学者,我建议您通过 this on how to deploy the workbench, this on how to create and manage rule in workbench and this 了解如何从 Java
中的 workbench 加载和执行规则
使用自定义界面进行规则管理
如果您想使用自己构建的用户界面创建规则,您可以将创建的规则部署到文件系统或 java 类路径中,甚至可以通过 url 公开它们。 Drools 提供了通过它集成上述所有场景的方法 API。您可以查看下面的示例以从文件系统访问、编译和执行规则。从类路径或外部加载规则也可以采取类似的方式加载url.
KieServices ks = KieServices.Factory.get();
KieRepository kr = ks.getRepository();
KieFileSystem kfs = ks.newKieFileSystem();
File file = new File("path/to/drl");
kfs.write(ks.getResources().newFileSystemResource(file)
.setResourceType(ResourceType.DRL));
KieBuilder kb = ks.newKieBuilder(kfs);
kb.buildAll();
if (kb.getResults().hasMessages(Level.ERROR)) {
throw new RuntimeException("Build Errors:\n" + kb.getResults().toString());
}
KieContainer kContainer = ks.newKieContainer(kr.getDefaultReleaseId());
KieSession kSession = kContainer.newKieSession();
kSession.insert(fact);
kSession.fireAllRules();
我正在尝试实现一个规则引擎,我的业务对象必须通过该引擎才能持久保存到数据库中。
规则将由用户通过用户界面创建。
你能给我建议实现这个的最佳方法吗?任何文档或现有工具都会有用。
我知道 Drools,但相信 drools 中的规则被编码到 .drl 文件中,不允许用户随时动态创建规则。
drools 中的规则被编码到 .drl 文件中,不允许用户随时动态创建规则。
Drools 特别适用于动态规则创建和集成,而无需实际接触应用程序代码。正确的方法是使用 Kie-workbench
进行规则创建和管理,并在您的应用程序中动态加载此规则。
规则将由用户通过用户界面创建。
对于需求,事实上,kie-workbench 效果最好,因为它甚至为您提供了指导 GUI 来创建和更新规则。
你能给我建议实现这个的最佳方法吗?任何文档或现有工具都会有用。
对于初学者,我建议您通过 this on how to deploy the workbench, this on how to create and manage rule in workbench and this 了解如何从 Java
中的 workbench 加载和执行规则使用自定义界面进行规则管理
如果您想使用自己构建的用户界面创建规则,您可以将创建的规则部署到文件系统或 java 类路径中,甚至可以通过 url 公开它们。 Drools 提供了通过它集成上述所有场景的方法 API。您可以查看下面的示例以从文件系统访问、编译和执行规则。从类路径或外部加载规则也可以采取类似的方式加载url.
KieServices ks = KieServices.Factory.get();
KieRepository kr = ks.getRepository();
KieFileSystem kfs = ks.newKieFileSystem();
File file = new File("path/to/drl");
kfs.write(ks.getResources().newFileSystemResource(file)
.setResourceType(ResourceType.DRL));
KieBuilder kb = ks.newKieBuilder(kfs);
kb.buildAll();
if (kb.getResults().hasMessages(Level.ERROR)) {
throw new RuntimeException("Build Errors:\n" + kb.getResults().toString());
}
KieContainer kContainer = ks.newKieContainer(kr.getDefaultReleaseId());
KieSession kSession = kContainer.newKieSession();
kSession.insert(fact);
kSession.fireAllRules();