Code Monkey home page Code Monkey logo

okdrools's Introduction

OkDrools

语义化drools工具,通过简单的文字语言公式生成drl文件。

drools的drl文件内容通常不利于非技术人员编写,特别是让业务人员编写非常不便,此工具可以通过让业务 人员编写通俗易懂的中文规则自动生成drl文件帮助计算。

关于此规则事项

  • 设定规则依赖参数映射表,即所有的公式中的中文必须对应业务中的ID,你可能需要建立如下表:
ID NAME
001 语文
002 数学
003 英语
004 总成绩
  • 公式支持基础四则运算(+、-、*、/),与运算(&&), 或运算(||), IF条件判断语句;
  • 基本计算公式 a = b + c;
  • 当a为如上表中维护的参数,并带有[]时,可以通过实现ExecRecorder类调用save方法获取到计算结果;
  • IF条件判断语句基本格式: IF 条件1 THEN 结果1,结果2 ELSE IF 条件2 THEN 结果3,结果4 ELSE IF ... THEN ... ELSE THEN 其他结果;
  • 中间变量说明:公式支持中文和英文变量,但推荐您使用英文;
  • 优先级:数值越小其优先级越高, 运算时会被先执行;
  • 未使用ROUND函数的计算结果一律保留两位小数;

创建规则文件例子

设定一套规则,计算学生的语文、数学、英语成绩总和,如下为计算名字为张三 在201908月份的成绩,其中规则为:

[总成绩]=[语文]+[数学]+[英语];

OkDroolsConfig info = new ExampleConfig();
String[] names = new String[] {"张三"};
OkDroolsCondition condition = new ExampleCondition(names);

// 1.公式转为对应参数ID
String formula = strToUUID(TEST_FORMULA, true);
// 2.创建规则文件
ExecBaseBody body = new ExecBaseBody();
body.put("period", "201908");
body.put("ruleId", "12345678");

BiMap paramIdMap = HashBiMap.create();
paramIdMap.put("001", "语文");
paramIdMap.put("002", "数学");
paramIdMap.put("003", "英语");
paramIdMap.put("004", "总成绩");
FormulaToDrlConverter converter = new FormulaToDrlConverter(paramIdMap);
converter.createDrl(info, condition, body, 0, formula);

执行规则文件例子

AbstractDroolsContext adc = new ExampleContext();
StatefulKnowledgeSession kSession = null;
try {
    OkDroolsConfig okDroolsConfig = new ExampleConfig();
    kSession = adc.buildDroolsEnvironment();
    kSession.setGlobal("book", "001");
    adc.execDrools(kSession, null);
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (kSession != null) {
        kSession.dispose();
    }
}

okdrools's People

Contributors

yangzy7513 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.