1.template
drools6开始提供模板的概念;
模板能为我们提供简单的规则替换;做到简单的规则动态加载;
本例子的demo基于最新稳定版drools6.4
2.项目结构
3.pom依赖
<!--drools--> <dependency> <groupId>org.drools</groupId> <artifactId>drools-core</artifactId> <version>6.4.0.Final</version> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-decisiontables</artifactId> <version>6.4.0.Final</version> </dependency>
4.代码
Message.java
package com.caicongyang.drools.templates; import java.io.Serializable; /** * @author caicongyang1 * @version id: Message, v 0.1 16/9/29 下午3:06 caicongyang1 Exp $$ */ public class Message implements Serializable { private static final long serialVersionUID = -3168739008574463191L; public static final int HELLO = 0; public static final int GOODBYE = 1; private String message; private int status; public String getMessage() { return this.message; } public void setMessage(String message) { this.message = message; } public int getStatus() { return this.status; } public void setStatus(int status) { this.status = status; } }
MyDataProvider.java
package com.caicongyang.drools.templates; import java.util.Iterator; import java.util.List; import org.drools.template.DataProvider; /** * @author caicongyang1 * @version id: Message, v 0.1 16/9/29 下午3:06 caicongyang1 Exp $$ */ public class MyDataProvider implements DataProvider { private Iterator<String[]> iterator; public MyDataProvider(List<String[]> rows) { this.iterator = rows.iterator(); } public boolean hasNext() { return iterator.hasNext(); } public String[] next() { return iterator.next(); } }
DataProviderCompilerTest.java
package com.caicongyang.drools.templates; import java.util.ArrayList; import org.drools.template.DataProviderCompiler; import org.kie.api.KieServices; import org.kie.api.builder.KieBuilder; import org.kie.api.builder.KieFileSystem; import org.kie.api.builder.Message.Level; import org.kie.api.builder.model.KieBaseModel; import org.kie.api.builder.model.KieModuleModel; import org.kie.api.io.KieResources; import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; /** * * Drools模板实例应用 * * @author caicongyang1 * @version id: Message, v 0.1 16/9/29 下午3:06 caicongyang1 Exp $$ */ public class DataProviderCompilerTest { public static void main(String[] args) { ArrayList<String[]> rows = new ArrayList<String[]>(); rows.add(new String[] { "1", "status == 0" }); MyDataProvider tdp = new MyDataProvider(rows); DataProviderCompiler converter = new DataProviderCompiler(); String drl = converter.compile(tdp, "/rules/rule_template_1.drl"); System.out.println(drl); KieServices kieServices = KieServices.Factory.get(); KieResources resources = kieServices.getResources(); KieModuleModel kieModuleModel = kieServices.newKieModuleModel();//1 KieBaseModel baseModel = kieModuleModel.newKieBaseModel("FileSystemKBase").addPackage("rules");//2 baseModel.newKieSessionModel("FileSystemKSession");//3 KieFileSystem fileSystem = kieServices.newKieFileSystem(); String xml = kieModuleModel.toXML(); System.out.println(xml);//4 fileSystem.writeKModuleXML(xml);//5 String path = DataProviderCompilerTest.class.getClass().getResource("/").getPath(); fileSystem.write("src/main/resources/rules/rule1.drl", drl); KieBuilder kb = kieServices.newKieBuilder(fileSystem); kb.buildAll();//7 if (kb.getResults().hasMessages(Level.ERROR)) { throw new RuntimeException("Build Errors:\n" + kb.getResults().toString()); } KieContainer kContainer = kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId()); KieSession kSession = kContainer.newKieSession("FileSystemKSession"); Message message = new Message(); message.setMessage("Hello World"); message.setStatus(Message.HELLO); kSession.insert(message); kSession.fireAllRules(); kSession.dispose(); } }
rule_template_1.dl
template header RULE_ID RULE_KEY1 package com.caicongyang.drools.templates; import com.caicongyang.drools.templates.Message; template "RULE" rule "RULE_@{RULE_ID}" when m: Message(@{RULE_KEY1}) then System.out.println(m.getMessage()); end end template
更多精彩内容请继续关注我的博客:http://blog.csdn.net/caicongyang
记录与分享,你我共成长 -fromcaicongyang
相关推荐
### Drools从字符串中动态加载规则 在使用Drools规则引擎时,...综上所述,通过从字符串中动态加载规则的方式,我们可以更加灵活高效地管理和使用Drools规则引擎,这对于需要快速迭代业务逻辑的应用场景来说尤为重要。
kie drools 6.4是Red Hat公司的业务规则管理系统(BRMS)的一部分,它提供了一个强大的规则引擎,用于处理和执行基于规则的应用程序。在这个配置过程中,我们将关注如何在Windows 10环境下设置kie drools的web应用,...
drools6.4+spring集成是一项将业务规则引擎Drools与Spring框架相结合的技术实践,旨在利用Drools的强大规则处理能力,结合Spring的灵活应用管理,构建高效、可维护的业务系统。在这个项目实例中,我们将深入探讨如何...
当我们谈论"springboot集成drools实现重新加载规则"时,这意味着我们要在Spring Boot应用中嵌入Drools,并且能够动态地更新和加载业务规则,而不必重启应用。这对于业务规则频繁变更的场景非常有用,因为这样可以...
drools动态生成规则文件是基于Java的业务规则管理系统,它允许开发者在运行时创建、修改和执行业务规则。 Drools是Red Hat JBoss BRMS(Business Rules Management System)的一部分,它提供了一种强大的规则引擎,...
Drools是一款强大的业务规则管理系统(BRMS),它提供了核心的业务规则引擎(BRE)、Web作者和规则管理应用程序(Drools Workbench)以及用于核心开发的Eclipse IDE插件。Drools能够帮助开发者快速地构建灵活、可...
通过结合这两者,我们可以构建一个灵活且可扩展的业务规则应用,其中规则可以从数据库(如MySQL)中动态加载,以实现业务逻辑的实时更新。 首先,我们需要理解Drools的核心概念。Drools提供了一个基于规则的推理...
drools5提供了一种解决方案,允许我们在运行时动态地加载和应用新的或修改过的规则,极大地提高了灵活性。 动态加载规则的核心概念是Drools的KieSession,它是规则引擎的执行环境。通过创建一个KieSession实例,...
标签“drools 动态模板”暗示了这个示例关注的是如何利用Drools进行动态规则管理,以及如何在SpringBoot环境中实现这一功能。通过这种方式,开发者可以快速响应业务变化,提高系统的可维护性和灵活性。 至于文件名`...
Drools是一款强大的、开源的Java规则引擎,它允许开发者在运行时动态地修改业务规则,从而实现灵活的业务逻辑管理。Drools 7.9版本是其稳定的一个版本,提供了更高效的执行效率和丰富的API。本文将深入探讨如何利用...
例如,银行可能会根据市场条件实时调整贷款审批规则,而这些规则可以通过DROOLS与数据库的结合动态加载,而不需要重新部署整个应用。 为了实现动态规则,开发者需要设计一个系统,该系统能够从数据库中读取规则,...
如果对drools还不是特别熟悉的,可以看下 《规则引擎Drools 之 初识drools》这篇文章; 本文源码,github 传送门:https://github.com/vincent9309/drools: 系统架构如下: 二、项目目录结构 三、...
drools整合apollo实现动态规则引擎,可以在不停服的情况下动态调整规则。无需数据库等存储,自动推送
Drools是一款强大的规则引擎,由Red ...通过这个"Drools规则引擎使用demo",你可以学习如何配置、加载规则,以及如何在Java应用程序中使用Drools进行规则的执行和事实的管理。这将为你构建智能决策系统提供坚实的基础。
Drools 规则引擎文档教程 Drools 规则引擎是一种基于 Java 的开源规则引擎,主要用来解决...Drools 规则引擎是一个非常有用的工具,可以帮助我们解决复杂的业务逻辑问题,使得应用程序变得更加灵活、高效和可维护。
Drools 是一个开源的业务规则管理系统(BRMS),它基于Java平台,提供了强大的规则引擎和规则流(Workflow)功能。这篇文章将深入探讨Drools如何实现规则流,以及如何在实际项目中有效应用。 ### 一、Drools 概述 ...
Drools是一款强大的业务规则管理系统,源自Java社区,以其灵活、高效和可扩展的特性而广受赞誉。它允许开发者将业务逻辑以规则的形式编写,使得业务规则可以独立于应用程序代码进行管理和更新,提高了软件的可维护性...
Drools WorkBench是一个Web应用,用于创建、测试和管理规则。它支持规则的编辑、测试、版本控制和部署。 8. **Drools决策表** - **入门**:学习如何创建和使用决策表来定义规则。 - **加强**:了解如何构建更...
标题 "Drools 规则执行顺序" 涉及的是一个业务规则引擎——Drools 的核心概念。Drools 是一个开源的Java决策管理平台,它允许开发者使用规则语言来编写业务逻辑,这些规则可以按特定顺序执行,以处理复杂的业务场景...