首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Drools 将DSLR转化作DRL

2012-07-01 
Drools 将DSLR转化为DRLScala的代码只能用Java着色。gist 链接如下: https://gist.github.com/2574987class

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.genimport 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    }}


热点排行