扫码阅读
手机扫码阅读
系统设计 | 处理业务公式
125 2024-08-27
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
查看原文:系统设计 | 处理业务公式
文章来源:
TechLead 少个分号
扫码关注公众号
文章摘要
本文探讨了在复杂的财务结算模块中,如何通过使用公式和规则引擎来处理业务规则。讨论了表达式类型、技术选型、模型设计,以及在必要时实现自己的表达式求值库的方法。
表达式类型
文章首先对表达式类型进行分类,包括布尔表达式、数学表达式、自定义函数的计算和条件表达式。指出这些类型在执行时如果混合,就与图灵完备的通用计算机语言相似,但后者具有更好的性能和功能。
技术选型
作者分享了对几种表达式引擎的调研经验。Spring EL适合技术规则配置,MVEL强大但难找到合适场景,JDK JS引擎适合将JS作为DSL使用但性能差,而QLExpress适合业务规则和表达式配置。作者建议根据业务需求选择合适的引擎。
模型设计
模型设计通常包括数学计算公式、条件匹配规则、公式变量和公式修改历史四个部分。在必要时,还可增加公式执行的事务或执行记录。
实现自己的表达式求值库
在现有框架和工具无法满足特殊场景需求时,可以考虑自行实现表达式求值库。文章讨论了编译原理相关知识,包括逆波兰表达式和栈的概念,并介绍了将中缀表达式转换为后缀表达式的过程,以简化表达式求值的复杂性。
结论
文章总结指出,处理财务结算模块的计算规则需求时,应根据具体业务场景选择合适的技术解决方案。无论是选择现成的表达式引擎还是开发定制的求值库,都要确保能够满足业务的计算透明化、规则版本化和计算条件的准入要求。
想要了解更多内容?
查看原文:系统设计 | 处理业务公式
文章来源:
TechLead 少个分号
扫码关注公众号
TechLead 少个分号的其他文章
一个团队多少个微服务合适?
微服务太多我扛不住。
为什么 DDD 又火了起来?
比如在分布式系统当中,我们必须要考虑到事务的问题、性能的问题,还有数据查询等等各种各样在单体世界里面不需要考虑的问题,因此对我们的模型创建又提出了更高的要求和挑战。人们选择了 DDD 来 “一本正经” 的建模,而不敢再 “拍脑袋”。
系统设计 | UUID 和 自增 ID 怎么选?
两种方案的权衡利弊。
系统设计 | 数字化营销技术(MarTech)
数字化营销技术是一种新的营销理论,通过把数字化和营销结合的方式,整体全面地提高营销效果。
技术管理 | 为什么事情推不动?
我有一个绝妙的主意,但是就是推不动怎么办?
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线