业务逻辑配置化的可选技术方案

问题

在不少业务应用中,每每有不少文案及按钮的业务逻辑,很容易由于产品的策略变动而变化,或由于来了新业务而新增条件判断,或由于不一样业务的差别性而有所不一样。若是经过代码来实现,一般要写一串if-elseif-elseif-else语句,且后续修改扩展比较容易出错,须要从新发布,灵活性差。 可采用配置化的方法来实现按钮逻辑,从而在须要修改的时候只要变动配置便可。业务逻辑的代码形式通常是:html

public Boolean getIsAllowBuyAgain() {
  if (ConditionA) {
    return BoolA;
  }
  if (ConditionB) {
    return BoolB;
  }
 
  if (CondtionC && !CondtionD && (ConditionE not in [v1,v2])) {
    return BoolC;
  }
  return BoolD;
}

本文讨论了三种可选方案: 重量级的Groovy脚本方案、轻量级的规则引擎方案、超轻量级的条件匹配表达式方案。

java

方案

Groovy脚本

须要在界面上进行编辑和及时刷新到应用中的代码,可使用 Groovy 脚原本替代。缓存

可参阅:“使用yaml+groovy实现Java代码可配置化”性能


规则引擎

多样化可变的业务逻辑和规则集合很是类似,能够考虑采用一款轻量级的规则引擎。经过配置平台来管理规则集合。code

使用规则引擎的示例可参阅: “Java Drools5.1 规则流基础【示例】(上)”htm

可选用一款轻量级的Java开源规则引擎做为起点。

blog

条件表达式

对于轻量级判断逻辑,采用条件表达匹配。条件表达匹配,实质是规则引擎的超轻量级实现。get

条件表达式方案可参阅:“详情文案的轻量级表达式配置方案”

产品

选择

三种方案的对好比下:it

方案 灵活性 性能 易懂性
Groovy 脚本 极高,凡是代码解决都能用Groovy脚本解决 须要缓存,几十到几百毫秒 业务人员不易读懂
规则引擎 较高 几十毫秒 适合业务人员读懂
条件表达式 特定 几到几十毫秒 适合业务人员读懂
相关文章
相关标签/搜索