扫码阅读
手机扫码阅读

系统设计 | 处理业务公式

53 2024-08-27

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:系统设计 | 处理业务公式
文章来源:
TechLead 少个分号
扫码关注公众号

文章摘要

本文探讨了在复杂的财务结算模块中,如何通过使用公式和规则引擎来处理业务规则。讨论了表达式类型、技术选型、模型设计,以及在必要时实现自己的表达式求值库的方法。

表达式类型

文章首先对表达式类型进行分类,包括布尔表达式、数学表达式、自定义函数的计算和条件表达式。指出这些类型在执行时如果混合,就与图灵完备的通用计算机语言相似,但后者具有更好的性能和功能。

技术选型

作者分享了对几种表达式引擎的调研经验。Spring EL适合技术规则配置,MVEL强大但难找到合适场景,JDK JS引擎适合将JS作为DSL使用但性能差,而QLExpress适合业务规则和表达式配置。作者建议根据业务需求选择合适的引擎。

模型设计

模型设计通常包括数学计算公式、条件匹配规则、公式变量和公式修改历史四个部分。在必要时,还可增加公式执行的事务或执行记录。

实现自己的表达式求值库

在现有框架和工具无法满足特殊场景需求时,可以考虑自行实现表达式求值库。文章讨论了编译原理相关知识,包括逆波兰表达式和栈的概念,并介绍了将中缀表达式转换为后缀表达式的过程,以简化表达式求值的复杂性。

结论

文章总结指出,处理财务结算模块的计算规则需求时,应根据具体业务场景选择合适的技术解决方案。无论是选择现成的表达式引擎还是开发定制的求值库,都要确保能够满足业务的计算透明化、规则版本化和计算条件的准入要求。

想要了解更多内容?

查看原文:系统设计 | 处理业务公式
文章来源:
TechLead 少个分号
扫码关注公众号

一线开发 TechLead,讨论系统设计技术方案和技术管理,原名《DDD和微服务》。

109 篇文章
浏览 5939
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设 白皮书上线