规则引擎课后作业 | 青训营笔记

77 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第六天,在今天的学习中,主要了解了规则引擎的原理以及应用场景等。在课后作业中,要求我们结合前面学过的知识来完善给出的规则引擎,下面我们来试着分析完成它。

作业过程

项目地址:github.com/qimengxingy…

首先我们部署好本地环境及其项目,简单浏览一遍代码后可以发现,项目的接口仅实现了第一个,也就是简单的直接表达式执行。而剩下的四个接口则需要我们自己去完善,简单概括接口功能如下:

接口接口类型功能
/api/engine/exp/newPOST新增表达式到数据库中,并返回id
/api/engine/exp/listGET列出数据库中所有表达式
/api/engine/exp/:idDELETE删除数据库中指定id的表达式
/api/engine/exp/runPOST给出程序与指定表达式id,返回执行结果

然后接下来的问题就是数据库内容未知,我们继续浏览代码可以看到如下sql文件以及配套好的四个函数:

image.png

image.png

实际上看到这里也能发现,需求的功能大部分都已经帮我们实现好了,包括数据库的处理以及HTTP服务路由的搭建等,我们仅需实现的就是合理地调用函数返回结果即可。

由于本人码风较丑,下面仅提出一些注意的点,具体代码不作展示:

1、由于文档中示例错误码全为-1,与代码中定义的常量不同,这里考虑使用代码中的常量以便区分。

2、删除操作需要先调用按ID查询的函数再调用删除函数,否则删完不返回数据

3、执行表达式的操作直接利用写好的HandleRunRule函数,注意搞清楚对应的参数即可

4、未完成的点:返回的信息是Unicode码,暂时没有较好的方法统一转换

作业成果:

1、新增表达式接口:

image.png

image.png

2、查询表达式接口:

image.png

3、删除表达式接口:

image.png

image.png

4、执行表达式接口:

image.png

image.png