业务开发中的业务编排是如何设计的?

599 阅读2分钟

【场景】

对于一些业务玩法相对复杂的系统,例如订单交易,电商促销等场景,如果单靠我们程序猿发挥个人才能来写代码,由于人员变动和技术水平不一,代码增量较大,我们很容易在会形成一些十分臃肿的方法、类,比如一个方法里面涵盖好几种,甚至上10种场景的流转,对于后续的维护代码的成本指数上升。

所以引入业务编排的设计思想有很大的好处,在我看来,如果有一个可视化的关系调用链路,以组件(类)的维度来编排一个业务流程,复用性也增强很多,也可以做到高度自定义。

同样,如果业务代码量十分巨大,且业务十分复杂,哪怕我们使用业务编排来设计,我们阅读代码的时候也同样需要投入一定的时间。尤其是设计业务编排需要一套“轮子”框架,如果我们对这个框架的全局没有掌握,我们是很难去阅读代码的。相反,当我们把这个业务编排的框架入门了以后,我们就很轻易地知道每个调用链是怎样串联起来的,如果还有可视化工具,那我们就更容易地阅读和熟悉这个代码。

【业务编排设计】

这里先说下我目前接触过的开源业务编排工具,LiteFlow。

官方介绍:轻量,快速,稳定可编排的组件式规则引擎。

这里我借一个简单的Demo,说明一下这个编排工具的使用思路。

  1. 期望的逻辑结构,每个节点都是一个component。

  2. xml直接配置,简单的语法,使用component组件名进行组织。

  3. 某个组件的写法。

图片

  1. 启动类

图片

结论:LiteFlow就那么简单使用,要做的莫过于调研其功能是否满足当前需求,且是否有必要引入这类业务编排引擎,造成过度设计。

【思考点】

  1. 有一些很重量的流程审批和流程编排的工具,比如Activiti,这些经常用于OA系统上,做一些更接近场景的系统。我理解,如果单纯想满足业务编排,一些轻量级的工具是首选,比如上面说的LiteFlow

  2. 我也见过一些公司内部自研的业务编排,类似使用链表节点的思想来实现,在编码上使用LinkedHashMap来初始化各个场景的编排。

图片

3. 业务编排工具,一般会考虑一些要点,例如事务问题,节点回滚问题、扩展点SPI问题、业务编排可视化等

【总结】

简简单单思考,掌握落地要领,思路很重要。

欢迎关注公众号:程序员的思考与落地