在平常开发的过程中,我们有时候会碰到一堆比较繁琐的业务逻辑判断。这种情况下我们通常有两种选择:
| 开发方式 | 优点 | 缺点 |
|---|---|---|
| 业务代码中定制开发 | 开发快,能够满足各种恶心的业务逻辑判断,快速上线 | 后续迭代非常麻烦,每次修改都需要改代码,代码各种配合业务的恶心判断 |
| 完全采用规则引擎配置 | 配置很灵活,每次修改规则直接快速修改配置即可,不需要修改代码,有可能可以让业务同学自己负责(实践来看也需要研发辅助) | 设计会比较复杂些,设置可能需要引入其他框架,第一次上线慢后续迭代非常麻烦 |
因此,本文提出一种基于分类树的规则引擎,采用go进行对应demo的实现。
即我们将所有的判断逻辑抽象成一棵树,可以自定义几个类型的节点,同时用这几个节点组成一棵树。从根节点开始,一直向下,根据输入的数据一直走到叶子节点,则获得最终的判断结果。
一、 需求描述
现在有几种不同类型的任务,每种任务的流程有所不同,设计一个方案,对于输入的任意种类的任务,都能输出起待办的下一个节点任务
二、设计方案
我们自定义几种节点,分别是:
1、开始节点:表示一棵树的开始