系统设计 | 处理业务公式
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
TechLead 少个分号
扫码关注公众号
扫码阅读
手机扫码阅读
文章摘要
本文探讨了在复杂的财务结算模块中,如何通过使用公式和规则引擎来处理业务规则。讨论了表达式类型、技术选型、模型设计,以及在必要时实现自己的表达式求值库的方法。
表达式类型
文章首先对表达式类型进行分类,包括布尔表达式、数学表达式、自定义函数的计算和条件表达式。指出这些类型在执行时如果混合,就与图灵完备的通用计算机语言相似,但后者具有更好的性能和功能。
技术选型
作者分享了对几种表达式引擎的调研经验。Spring EL适合技术规则配置,MVEL强大但难找到合适场景,JDK JS引擎适合将JS作为DSL使用但性能差,而QLExpress适合业务规则和表达式配置。作者建议根据业务需求选择合适的引擎。
模型设计
模型设计通常包括数学计算公式、条件匹配规则、公式变量和公式修改历史四个部分。在必要时,还可增加公式执行的事务或执行记录。
实现自己的表达式求值库
在现有框架和工具无法满足特殊场景需求时,可以考虑自行实现表达式求值库。文章讨论了编译原理相关知识,包括逆波兰表达式和栈的概念,并介绍了将中缀表达式转换为后缀表达式的过程,以简化表达式求值的复杂性。
结论
文章总结指出,处理财务结算模块的计算规则需求时,应根据具体业务场景选择合适的技术解决方案。无论是选择现成的表达式引擎还是开发定制的求值库,都要确保能够满足业务的计算透明化、规则版本化和计算条件的准入要求。
TechLead 少个分号
TechLead 少个分号
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
TechLead 少个分号的其他文章
系统设计 | 应用、微服务、流程、规则编排
分析常见需要编排的场景,辨析应用、微服务、流程、规则编排。
研发自测之路:从"救火"到自测
哪有什么测试,自己点两下没报错就行了,反正上线后用户就是公司的测试。“互联网公司不需要测试人员,用户就是测试”这是老板的原话。
为什么学了 DDD 不会写代码了?
谈谈 DDD 的局限性、原则和如何合理的应用 DDD。
多对多关系解耦的数学原理
在面向对象设计中,多对多关系都是非常麻烦的问题。在现实中,我一般会根据经验让团队避免使用多对多关系。怎么从数学上看待这个问题呢?
技术管理|“写完了不代表完成”——交付视角的认知陷阱
写完了不代表完成,上线了也不代表交付,只有当用户用上且没出问题,才叫真正完成。
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线