也是最近目前公司的一个物流系统费用项多种多样,各种规则疲于应付,初版程序各种规则基本都是用程序代码硬编码的方式,每次更改规则需要重新测试,系统重新打包发布,在疲于应付之间,开始寻求其他解决方案,因此根据系统现实的问题总结出三个要求
1、系统具备良好的可拓展性
计费系统需要应对于多种计费模型,由于相关物流费如零担费用,费用项是以公式来计算,因此系统提供费用项相关信息录入,提供费用计算公式,在此我采用Aviator框架,通过录入计算公式以及输入相应的参数计算出相应的费用
2、系统应具备良好的用户界面,最好是将匹配规则放到客户端,由业务人员自行编辑规则,系统根据规则自动触发条件表达式进行费用计算,要求规则匹配能否方便的为业务人员所理解,学习成本低,因此采用Drools规则引擎
3、业务和规则解耦
最好系统能独立出计费模块,尽量不要让业务代码侵入到里面,将业务和规则分离
初步规划如下
涉及组件
1、字典管理:管理各种规则字段描述信息,基础资料,元数据信息
2、费用项管理:费用项以EXCEL方式导入系统,并提供管理界面,这里主要是配置费用项计算公式
3、规则管理:提供规则管理界面,根据字典数据和费用项数据可配置计费规则
4、物流提货单:提供界面供业务人员录入真实的物流数据用于费用计算
5、规则引擎:根据提货单条件触发规则引擎并调用计费框架实现费用自动计算
6、计费框架:根据匹配后的条件执行具体的计算任务
主要流程如下
物流费用项管理