`
wangyb7
  • 浏览: 1301 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Drools 将DSLR转化为DRL

阅读更多
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开发drools的设置文件

    在 IDEA 中编写完 DRL 文件后,你需要创建一个 Drools 工程,将 DRL 文件添加进去。接着,通过 Java API 与 Drools 引擎交互,加载规则,插入事实,然后触发规则执行。 例如: ```java KieServices kieServices = ...

    drools-insurance.rar_drool_drools_dslr drools_insurance_java dro

    在这个名为“drools-insurance.rar”的压缩包中,我们看到与Drools相关的多个元素,包括“drool”,“drools”,“dslr_drools”以及“java_drools”标签,这表明它可能包含一个使用Drools规则引擎处理保险评估案例...

    ole-drools-xls2drl:用于将Excel电子表格转换为Drools DRL文件的简单Java应用程序

    尽管此应用程序可以将任何格式正确的Excel电子表格转换为Drools DRL文件,但它主要用于为Kuali OLE(开放图书馆环境)应用程序生成Drools规则文件。 要求 Java 1.7 Gradle2.6 构建/设置 安装所需的软件 克隆此存储...

    DROOLS语法详解

    DROOLS规则语言(DRL)是一种基于Java的领域特定语言(DSL),用于编写业务规则。本文档将详细介绍DROOLS的基本语法结构及其各个组成部分。 #### 二、DROOLS基本语法结构 DROOLS的基本语法结构由以下几个关键部分...

    springboot集成drools实现重新加载规则

    本篇文章将深入探讨如何在Spring Boot项目中集成Drools并实现规则的动态重载。 首先,我们需要在Spring Boot项目中添加Drools的依赖。这通常通过在`pom.xml`文件中引入Maven依赖完成,确保包含Drools的核心库和相关...

    drools drools drools drools drools

    - Compiler:将DRL源码编译为内部的中间表示,便于引擎高效执行。 - Engine:核心规则引擎,负责执行规则。 - Knowledge Base:存储和管理所有规则的地方。 - Working Memory:保存运行时的数据对象和规则实例。 在...

    Drools 规则流的使用介绍

    规则可以通过DRL(Drools Rule Language)编写,也可以在Workbench中直接编辑。 ### 六、运行与执行 1. **KieContainer**:在运行时,我们需要创建`KieContainer`实例来加载规则和规则流。 2. **KieSession**:...

    drools动态生成规则文件

    本文将深入探讨drools如何实现动态生成规则文件以及其相关知识点。 一、drools简介 Drools是一款开源的规则引擎,它基于Rete算法,能够高效地处理大量的规则。drools提供了灵活的API和规则语言DRL(Drools Rule ...

    drools从字符串中动态加载规则

    而动态加载规则则是通过将规则文本转化为字符串,再将该字符串转换为Drools能够识别的资源格式(Resource)。 具体步骤如下: 1. **构建规则字符串**:根据实际业务需求,动态生成包含规则定义的字符串。 2. **创建...

    Drools规则引擎介绍

    总结来说,Drools规则引擎是一个强大的工具,它能够帮助企业和开发者将复杂的业务逻辑转化为易于管理的规则,通过灵活的规则执行和流程控制,提升业务系统的智能化水平。通过深入学习和实践,我们可以充分利用Drools...

    Drools

    通过Drools,企业可以将业务专家的知识转化为可执行的代码,从而实现智能化决策,提高运营效率。 在实际开发中,Drools的使用通常包括以下几个步骤: 1. 规则定义:使用DRL或图形化的规则编辑器(如Guvnor)编写...

    Drools开发最全中文版技术指南

    在Drools中,规则语言DRL(Drools Rule Language)是编写规则的主要工具。DRL允许开发者以类似自然语言的形式定义规则,例如“如果一个订单金额超过1000元,则给予客户优惠”。这种声明式的编程方式让规则的编写更加...

    droolsdroolsdrools

    本篇文章将围绕"droolsdroolsdrools"这一主题,通过深入剖析提供的实例代码,带领读者走进Drools的世界。 一、Drools基础概念 1. 规则引擎:Drools的核心是规则引擎,它负责执行存储在知识库中的规则。规则由条件...

    规则引擎Drools在J2EE项目开发中的应用

    通过使用Drools,开发者可以将复杂的业务规则转化为清晰、独立的规则集,从而提高系统的可扩展性和可维护性。 为了更好地理解和应用Drools,你可以阅读“规则引擎Drools在J2EE项目开发中的应用.pdf”这份文档,它将...

    drools规则引擎开发实例

    在部署这个实例时,我们需要将规则文件(通常以.drl为扩展名)加载到drools系统中。然后,我们创建一个drools session,向工作内存中插入申请人的事实,如`ksession.insert(new Applicant(age, income, ...

    Drools7.25中文文档.7z

    KIE Server则是Drools的服务器端实现,它负责运行在Workbench中定义的规则,并为其他应用程序提供服务。KIE Server可以集成到各种Java应用中,如Spring Boot或Java EE应用,提供业务逻辑的执行服务。文档将详细解释...

    drools7.25中文文档+drools技术指南.zip

    1. **Drools概述**:这部分将介绍Drools的基本概念,包括什么是规则引擎,为什么需要规则引擎,以及Drools在业务流程中的作用。它会阐述Drools如何帮助开发者将业务逻辑从核心应用程序中分离出来,实现灵活的、可...

    将Drools转化为OSGi Plugin的方法研究

    在本文中,我们将深入探讨如何将Drools规则引擎转换为OSGi插件,以便在OSGi环境中更好地管理和部署。Drools是一个强大的业务规则管理系统,它允许开发人员以声明式方式编写规则,以实现复杂的业务逻辑。而OSGi则是一...

    drools使用的jar包

    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规则引擎使用demo

    - **加载规则**:Drools通过KieServices读取.drl文件(规则定义文件)并将规则加载到KieContainer中。 - **创建KieSession**:从KieContainer创建一个KieSession实例,它是规则执行的上下文。 - **插入事实**:将...

Global site tag (gtag.js) - Google Analytics