Scala的代码只能用Java着色。
gist 链接如下: https://gist.github.com/2574987
class DrlGeneratorFromDsl {
private val logger = LoggerFactory.getLogger(getClass)
private var dslFiles = List.empty[DSLTokenizedMappingFile]
def addDsl(resource: Resource) {
val file = new DSLTokenizedMappingFile
if (!file.parseAndLoad(resource.getReader)) {
file.getErrors.asScala.foreach(e => logger.error(e.asInstanceOf[ParserError].getMessage))
}
dslFiles :+= file
}
// this is dslr type rule
def generate(rules: Iterable[RuleData]): String = {
val dslr = rules.map(_.toDslr).mkString("\n")
val expander = getDslExpander
val drl = expander.expand(dslr)
if (expander.hasErrors) {
expander.getErrors.asScala.foreach(e => logger.error(e.getMessage))
}
return drlHeader + drl
}
private val drlHeader = """package logistics.settlement.drools.drl.gen
import logistics.settlement.drools.OrderData;
import logistics.settlement.drools.UnitPrice;
"""
/**
* Returns an expander for DSLs (only if there is a DSL configured for this
* package).
*/
private def getDslExpander: DefaultExpander = {
var expander: DefaultExpander = new DefaultExpander
for (file <- this.dslFiles) {
expander.addDSLMapping(file.getMapping)
}
return expander
}
}
分享到:
相关推荐
在 IDEA 中编写完 DRL 文件后,你需要创建一个 Drools 工程,将 DRL 文件添加进去。接着,通过 Java API 与 Drools 引擎交互,加载规则,插入事实,然后触发规则执行。 例如: ```java KieServices kieServices = ...
在这个名为“drools-insurance.rar”的压缩包中,我们看到与Drools相关的多个元素,包括“drool”,“drools”,“dslr_drools”以及“java_drools”标签,这表明它可能包含一个使用Drools规则引擎处理保险评估案例...
尽管此应用程序可以将任何格式正确的Excel电子表格转换为Drools DRL文件,但它主要用于为Kuali OLE(开放图书馆环境)应用程序生成Drools规则文件。 要求 Java 1.7 Gradle2.6 构建/设置 安装所需的软件 克隆此存储...
DROOLS规则语言(DRL)是一种基于Java的领域特定语言(DSL),用于编写业务规则。本文档将详细介绍DROOLS的基本语法结构及其各个组成部分。 #### 二、DROOLS基本语法结构 DROOLS的基本语法结构由以下几个关键部分...
本篇文章将深入探讨如何在Spring Boot项目中集成Drools并实现规则的动态重载。 首先,我们需要在Spring Boot项目中添加Drools的依赖。这通常通过在`pom.xml`文件中引入Maven依赖完成,确保包含Drools的核心库和相关...
- Compiler:将DRL源码编译为内部的中间表示,便于引擎高效执行。 - Engine:核心规则引擎,负责执行规则。 - Knowledge Base:存储和管理所有规则的地方。 - Working Memory:保存运行时的数据对象和规则实例。 在...
规则可以通过DRL(Drools Rule Language)编写,也可以在Workbench中直接编辑。 ### 六、运行与执行 1. **KieContainer**:在运行时,我们需要创建`KieContainer`实例来加载规则和规则流。 2. **KieSession**:...
本文将深入探讨drools如何实现动态生成规则文件以及其相关知识点。 一、drools简介 Drools是一款开源的规则引擎,它基于Rete算法,能够高效地处理大量的规则。drools提供了灵活的API和规则语言DRL(Drools Rule ...
而动态加载规则则是通过将规则文本转化为字符串,再将该字符串转换为Drools能够识别的资源格式(Resource)。 具体步骤如下: 1. **构建规则字符串**:根据实际业务需求,动态生成包含规则定义的字符串。 2. **创建...
总结来说,Drools规则引擎是一个强大的工具,它能够帮助企业和开发者将复杂的业务逻辑转化为易于管理的规则,通过灵活的规则执行和流程控制,提升业务系统的智能化水平。通过深入学习和实践,我们可以充分利用Drools...
通过Drools,企业可以将业务专家的知识转化为可执行的代码,从而实现智能化决策,提高运营效率。 在实际开发中,Drools的使用通常包括以下几个步骤: 1. 规则定义:使用DRL或图形化的规则编辑器(如Guvnor)编写...
在Drools中,规则语言DRL(Drools Rule Language)是编写规则的主要工具。DRL允许开发者以类似自然语言的形式定义规则,例如“如果一个订单金额超过1000元,则给予客户优惠”。这种声明式的编程方式让规则的编写更加...
本篇文章将围绕"droolsdroolsdrools"这一主题,通过深入剖析提供的实例代码,带领读者走进Drools的世界。 一、Drools基础概念 1. 规则引擎:Drools的核心是规则引擎,它负责执行存储在知识库中的规则。规则由条件...
通过使用Drools,开发者可以将复杂的业务规则转化为清晰、独立的规则集,从而提高系统的可扩展性和可维护性。 为了更好地理解和应用Drools,你可以阅读“规则引擎Drools在J2EE项目开发中的应用.pdf”这份文档,它将...
在部署这个实例时,我们需要将规则文件(通常以.drl为扩展名)加载到drools系统中。然后,我们创建一个drools session,向工作内存中插入申请人的事实,如`ksession.insert(new Applicant(age, income, ...
KIE Server则是Drools的服务器端实现,它负责运行在Workbench中定义的规则,并为其他应用程序提供服务。KIE Server可以集成到各种Java应用中,如Spring Boot或Java EE应用,提供业务逻辑的执行服务。文档将详细解释...
1. **Drools概述**:这部分将介绍Drools的基本概念,包括什么是规则引擎,为什么需要规则引擎,以及Drools在业务流程中的作用。它会阐述Drools如何帮助开发者将业务逻辑从核心应用程序中分离出来,实现灵活的、可...
在本文中,我们将深入探讨如何将Drools规则引擎转换为OSGi插件,以便在OSGi环境中更好地管理和部署。Drools是一个强大的业务规则管理系统,它允许开发人员以声明式方式编写规则,以实现复杂的业务逻辑。而OSGi则是一...
drools使用的jar包,运行官方drools-distribution-7.7.0.Final drools使用的jar包,运行官方drools-distribution-7.7.0.Final drools使用的jar包,运行官方drools-distribution-7.7.0.Final drools使用的jar包,运行...
- **加载规则**:Drools通过KieServices读取.drl文件(规则定义文件)并将规则加载到KieContainer中。 - **创建KieSession**:从KieContainer创建一个KieSession实例,它是规则执行的上下文。 - **插入事实**:将...