首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在spring、Hibernate、Oracle项目中实现规则引擎所需的设计指导

在spring、Hibernate、Oracle项目中实现规则引擎所需的设计指导
EN

Stack Overflow用户
提问于 2016-08-18 17:44:47
回答 1查看 1.1K关注 0票数 0

我正在尝试实现一个规则引擎,在持久化到数据库之前,我的业务对象必须经过这个引擎。

规则将由用户通过用户界面创建。

你能给我建议一下最好的方法来实现这一点吗?任何文档或现有工具都将是有用的。

我知道Drools,但相信drools中的规则被编码到.drl文件中,这不允许用户在任何时候动态创建规则。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-18 19:08:06

drools中的规则被编码成.drl文件,不允许用户随时动态创建规则。

Drools特别用于动态规则创建和集成,而不实际接触应用程序代码。正确的方法是使用Kie-workbench进行规则创建和管理,并在应用程序中动态加载这些规则。

规则将由用户通过用户界面创建。

实际上,对于需求,kie-workbench的工作效果最好,因为它甚至为您提供了创建和更新规则的指导GUI。

能给我建议一下实现这一点的最佳方法吗?任何文档或现有工具都将是有用的。

首先,我建议您了解一下中如何部署工作台,如何在工作台中创建和管理规则,以及如何在Java中从工作台加载和执行规则的

使用自定义的规则管理接口

如果希望使用自己构建的用户界面创建规则,可以在文件系统或java类路径中部署创建的规则,甚至可以通过url公开它们。Drools提供了通过it API集成所有上述场景的方法。您可以检查下面的示例以从文件系统访问、编译和执行规则。对于从类路径或外部url加载规则,也可以采用类似的方法。

代码语言:javascript
复制
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();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39024468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档