问题

在很多业务应用中,往往有很多文案及按钮的业务逻辑,很容易因为产品的策略变更而变化,或因为来了新业务而新增条件判断,或因为不同业务的差异性而有所不同。如果通过代码来实现,通常要写一串if-elseif-elseif-else语句,且后续修改扩展比较容易出错,需要重新发布,灵活性差。 可采用配置化的方法来实现按钮逻辑,从而在需要修改的时候只要变更配置即可。业务逻辑的代码形式一般是:

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

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

方案

Groovy脚本

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

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

规则引擎

多样化可变的业务逻辑和规则集合非常相似,可以考虑采用一款轻量级的规则引擎。通过配置平台来管理规则集合。

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

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

条件表达式

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

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

选择

三种方案的对比如下:

方案 灵活性 性能 易懂性 适用场景
Groovy 脚本 极高,凡是代码解决都能用Groovy脚本解决 需要缓存,几十到几百毫秒 业务人员不易读懂 代码配置化,方便技术人员使用
规则引擎 较高 几十毫秒 适合业务人员读懂 大量规则和推理,规则之间有关联
条件表达式 特定 几到几十毫秒 适合业务人员读懂 少量复合条件,相互独立

转载于:https://www.cnblogs.com/lovesqcc/p/9568899.html

业务逻辑配置化的可选技术方案相关推荐

  1. 深入理解Nginx:java业务逻辑层都用什么技术

    前言 蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力.培训.出国.大公司的经历,还有很多很好的朋友.但再仔细一想,这十年中我至少浪费了五年时间,这五年可以足够让自己成长为一个优秀的程序员 ...

  2. 业务逻辑组件化android,AppJoint 极简 Android 组件化方案

    AppJoint 极简 Android 组件化方案.仅包含 3 个注解加 1 个 API,超低学习成本,支持渐进式组件化. 开始接入 在项目根目录的 build.gradle 文件中添加 AppJoi ...

  3. 百度代码配置化实践:配置化是业务架构三化之一

    按:业务架构有三化--配置化.产品化.自动化,配置化解决业务系统灵活性.动态可变的问题,产品化解决工具复用提效的问题,自动化让机器工作.解决人力成本问题.本文来自百度刘志伟.韩炳涛两位同学对百万行配置 ...

  4. 【Android 插件化】Hook 插件化框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  5. 滴滴青桔单车跨端技术方案和业务技术架构,及框架设计和性能提升实践

    导读:经过将近两年的发展,小程序已经深入用户的日常生活,小程序应用数量超过了百万量级,覆盖众多细分行业,日活用户达到两个亿.青桔单车是日活相对较高的小程序,这也要求我们对小程序的性能.稳定性及安全有较 ...

  6. 统一门户与业务系统的sso整合技术方案(单点登录)

    一.单点登录(SSO,Single Sign On)整合 目前计划接入统一门户的所有业务系统均为基于JavaEE技术的B/S架构系统.由于统一门户的单点登录技术选用的是JA-SIG组织开发的Cas S ...

  7. 门禁系统服务器功能配置,多功能门禁系统控制器技术方案

    [技术实现步骤摘要] 本技术涉及门禁监控领域,特别是多功能门禁系统控制器. 技术介绍 门禁系统主要供企业内部使用,规范和管理规范管理务工人员上下班.现在市面上的一种常见的门禁系统主要安装在企业门口,企 ...

  8. ad导入pcd后网络标号消失_如何将后端BaaS化:业务逻辑的拆与合

    BaaS 化的核心其实就是把我们的后端应用封装成 RESTful API,然后对外提供服务,而为了后端应用更容易维护,我们需要将后端应用拆解成免运维的微服务 微服务的拆解和合并,都有一个度需要把握,因 ...

  9. 【第一章:技术面试通用必备技能】第2节:业务逻辑面试和HR面试

    大家好,很高兴我们可以一起交流学习.在上一节中,我们介绍了如何制作以及投递简历,相信聪明的你已经可以制作一个比较优秀的简历了.有了通关文牒,就可以进入与面试官的PK环节了.本节中,我们就来介绍下与面试 ...

  10. 插件化Activity: 技术方案分享

    改不完的 Bug,写不完的矫情.公众号 杨正友 现在专注移动基础开发 ,涵盖音视频和 APM,信息安全等各个知识领域:只做全网最 Geek 的公众号,欢迎您的关注! 前言 插件化技术从 2015 年就 ...

最新文章

  1. PCA(2):PCA算法实现的两种方式
  2. Drive.ai轰然倒下:曾估值两亿,吴恩达夫妇站台,苹果将接盘部分可用技术人才...
  3. Android SDK版本号 与 API Level 对应关系
  4. ML-1 逻辑回归和梯度下降
  5. Java-Frame
  6. objective-c 编程总结(第六篇)运行时操作 - 方法交换
  7. 解决 web.xml is missing and failOnMissingWebXml is set to true 报错
  8. 计算机文档我的文档丢失,恢复我的电脑窗口中共享文档与我的文档不见了的方法...
  9. 首发骁龙665 小米CC9e 4+128G版到手价1199元
  10. C语言decompose函数,R语言使用decompose函数进行时间序列的波动趋势分解
  11. 《小米网抢购系统开发实践》读后感
  12. 高仿快递100--实战之RadioGroup和RadioButton应用
  13. 在线课程培训系统源码 在线授课 在线教育源码 网课小程序源码
  14. 快解析结合绿盾文档加密软件
  15. 禁用 SQL 游标,告诉你外面听不到的原因【内含福利】
  16. USB(九)2022-03-01
  17. 1G,2G,3G,4G,5G的发展和通讯原理
  18. python万年历函数输入某一年某一月_Python自定义函数计算给定日期是该年第几天的方法示例...
  19. DXO 评测华为p20pro说的halo effect是什么
  20. 软件设计的基本原理和流程

热门文章

  1. RabbitMQ提升消息传输可靠性方法总结
  2. Java集合Collection之实现原理解读(Map)
  3. Spring Cloud Hystrix服务容错 (学习总结)
  4. SpringBoot项目获取Spring容器中的bean
  5. python3+selenium入门03-操作谷歌浏览器
  6. 飞行器比赛制作过程中的资料搜集(2018.5~6月)
  7. 多表无关联查询(范围查询):查询某个人属于哪个工资区间
  8. 如何避免循环中丑陋的break和continue
  9. matplotlib绘制李萨如图(四) 利用交互模式动态3D李萨如图
  10. [2018.11.05 T2] 买牛奶