美文网首页
编程编译规则文件

编程编译规则文件

作者: 金刚_30bf | 来源:发表于2018-09-03 18:34 被阅读0次

当通过编译编译规则文件时, 目录必须是 src/main/resources/ , 否则会报WARN ,无法检测到错误:

WARN "No files found for KieBase defaultKieBase"

编程编译文件如下:

    /**
     * 尝试编译单条规则  
     */
    @Override
    public RuleManagerResponse tryCompileSingleRules(RuleManagerRequest req) {
        logger.info("开始试编译规则 :" + req.getContent());
        RuleManagerResponse response = new RuleManagerResponse();
        
        String baseName = TRY_COMPILE_BASE + req.getPackageName();
        String sessionName = TRY_COMPILE_SESSION + req.getFileName();
        
        KieServices ks = KieServices.Factory.get();
        
        KieModuleModel kmodulemodel = ks.newKieModuleModel();

        KieBaseModel kmodel = kmodulemodel.newKieBaseModel(baseName);
        
        kmodel.addPackage(baseName);
        kmodel.newKieSessionModel(sessionName);
        
        KieFileSystem kf = ks.newKieFileSystem();
        kf.write(TRY_COMPILE_PATH + baseName + "/" + sessionName, req.getContent());
        
        String xml = kmodulemodel.toXML();

        kf.writeKModuleXML(xml);
        
        logger.debug(xml);
        
        KieBuilder kb = ks.newKieBuilder(kf);
        
        kb.buildAll();
        
        if (kb.getResults().hasMessages(Message.Level.ERROR)) {
            
            logger.info("试编译出现错误信息:" + kb.getResults().toString());
            
            response.setError(kb.getResults().toString());
            return response;
        }
        
        logger.info("试编译成功, 删除之。。。"); 
        
        kmodulemodel.removeKieBaseModel(baseName);
        xml = kmodulemodel.toXML();
        kf.writeKModuleXML(xml);
        kf.delete(TRY_COMPILE_PATH + baseName + "/" + sessionName);
        KieBuilder kieBuilder = ks.newKieBuilder(kf);
        kieBuilder.buildAll();
        
        if (kieBuilder.getResults().hasMessages(Message.Level.ERROR)) {
            
            logger.info("试编译成功后删除时 出现错误信息:" + kieBuilder.getResults().toString());

        }
        
        logger.info("试编译成功完成!");
        
        return response;
        
    }

相关文章

  • 编程编译规则文件

    当通过编译编译规则文件时, 目录必须是 src/main/resources/ , 否则会报WARN ,无法检测到...

  • C语言编译器为什么能够用C语言编写?

    所谓C语言编译器,就是把编程得到的文件,比如.c,.h的文件,进行读取,并对内容进行分析,按照C语言的规则,将其转...

  • 001-概述

    makefile 定义了一系列的规则来指定,哪些文件需要 先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于...

  • Makefile

    makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至可以在...

  • Makefile学习

    makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译, 甚至进行更...

  • makefile

    makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行...

  • Makefile使用指南

    什么是Makefile Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件...

  • meke 工具简介

    make是一个命令工具,它解释Makefile中的规则,Makefile描述了整个工程文件的编译规则和编译顺序。 ...

  • 使用automake等命令自动生成Makefile文件

    Linux下编程时,为了方便编译,往往使用Makefile文件自动完成编译,但是Makefile文件本身的书写十分...

  • note_6.2_shell脚本编程

    编程语言的分类:根据运行方式 编译运行:源代码 --> 编译器 (编译)--> 程序文件; 解释运行:源代码 --...

网友评论

      本文标题:编程编译规则文件

      本文链接:https://www.haomeiwen.com/subject/gdqbwftx.html