系统设计 | 处理业务公式
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
TechLead 少个分号
扫码关注公众号
扫码阅读
手机扫码阅读
文章摘要
本文探讨了在复杂的财务结算模块中,如何通过使用公式和规则引擎来处理业务规则。讨论了表达式类型、技术选型、模型设计,以及在必要时实现自己的表达式求值库的方法。
表达式类型
文章首先对表达式类型进行分类,包括布尔表达式、数学表达式、自定义函数的计算和条件表达式。指出这些类型在执行时如果混合,就与图灵完备的通用计算机语言相似,但后者具有更好的性能和功能。
技术选型
作者分享了对几种表达式引擎的调研经验。Spring EL适合技术规则配置,MVEL强大但难找到合适场景,JDK JS引擎适合将JS作为DSL使用但性能差,而QLExpress适合业务规则和表达式配置。作者建议根据业务需求选择合适的引擎。
模型设计
模型设计通常包括数学计算公式、条件匹配规则、公式变量和公式修改历史四个部分。在必要时,还可增加公式执行的事务或执行记录。
实现自己的表达式求值库
在现有框架和工具无法满足特殊场景需求时,可以考虑自行实现表达式求值库。文章讨论了编译原理相关知识,包括逆波兰表达式和栈的概念,并介绍了将中缀表达式转换为后缀表达式的过程,以简化表达式求值的复杂性。
结论
文章总结指出,处理财务结算模块的计算规则需求时,应根据具体业务场景选择合适的技术解决方案。无论是选择现成的表达式引擎还是开发定制的求值库,都要确保能够满足业务的计算透明化、规则版本化和计算条件的准入要求。
TechLead 少个分号
TechLead 少个分号
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
TechLead 少个分号的其他文章
系统设计 | 设计和解析 DSL
设计一个 DSL 并对齐解析和转换为想要的目标代码。
技术管理 | 如何同上级有效沟通?使用受众的思维
无效沟通,用自己的语言和立场去沟通;有效沟通,用受众中的语言和立场沟通。同理,用自己的语言做宣传,关键词吸引的全是同行;用受众的语言和立场,关键词吸引的全是客户。
咨询思维:PAST-DR 问题解决框架
这里根据同事的一些经验,我使用了一根线将一些方法论串起来整合成一个轻量级的咨询基线框架,为咨询的过程提供了一个一般模式。对于非咨询师来说,可以用咨询的思维扮演一个咨询师的角色解决工作中的各类问题。
技术管理 | 人的特点和心理学效应
其实很多敏捷实践有一些心理学上的小心思。
技术管理 | 从架构师到管理者:我踩过的 5 个坑
技术能力,是门票,不是通行证。
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线