BPMN+工作流引擎+规则引擎

        后端要重新计算最佳线路、里程,防止有人用Postman发送虚拟数据。

        前端发送创建订单请求 -> BFF -> 地图子系统 重新计算里程和时间 -> 规则子系统 预估订单金额 -> 地图子系统 搜索适合接单的司机 -> 消息子系统 发送订单给司机 -> 结束。

        对于不经常变化的业务,我们通常是硬编码到程序中。但是经常变化的业务我们就得把业务流程从代码中剥离出来。于是就出现了 BPMN 流程,我们通过让程序加载不同的 BPMN 文件,就可以执行各种业务流程。

        BPMN 就是一种 XML 文件,在里面描述“流程的开始”“第一个任务是什么”“任务审批结束后怎么流转这个任务”等。

        工作流引擎执行这个XML文件。

        如果是算法,我们怎么从程序中剥离出去?写到TXT文档中么?不管你把算法代码写到什么文件中,最终读到Java程序里面都是字符串,你觉得Java程序能执行字符串中的语句么?

        规则引擎可以做到把算法剥离出程序,你可以保存到TXT文件或者数据库里面,用的时候再加载回程序。虽然加载回来的算法是字符串,但是规则引擎有办法这行这些字符串。例如遇到雨雪天气,代驾费用就得上调一些。如果是业务淡季,代驾费用可以下调一点。既然代驾费的算法经常要变动,我们肯定不能把算法写死到程序里面。我们要把算法从程序中抽离,保存到MySQL里面。将来我们要改动计费算法,直接添加一个新纪录就行了,原有记录不需要删改,华夏代驾的程序默认使用最新的计费方式。

        选用的规则引擎是带有阿里血统的QLExpress,作为一个嵌入式规则引擎在业务系统中使用,让业务规则定义简便而不失灵活。QLExpress支持标准的JAVA语法,还可以支持自定义操作符号、操作符号重载、 函数定义、宏定义、数据延迟加载、复杂表达式、条件判断、循环语句等。至于其他的规则引擎,由于都不支持复杂语法,所以我们只能用QLExpress了。

java -jar hxds-rule.jar --spring.config.location=application-common.yml,application.yml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chengbo_eva

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值