说说流程编排

(如有胡扯,欢迎拍砖)

1、什么是流程编排?

流程编排即可以通过对规范化的组件进行灵活组装,快速得到一个目标流程。

流程编排的归类大致可以分为

业务流程编排(也可以叫工作流编排),代表产品有JBPM
微服务编排,代表产品Conductor
服务内组件流程编排,代表产品有Camel(Camel同样可以用于服务编排)
接下来我会重点描述第三种服务内组件流程编排,下文的“流程编排”也特指此项。

2、流程编排发展的实际意义和必然性

流程编排的意义在于提升复杂业务场景下的开发效率。

这里同时限定了流程编排的应用范围,即复杂业务场景。在简单场景下,如果仍然放在编排框架下来做有可能会因为编排框架的种种约束导致开发成本变高,也就是我们通常说的过度设计。而常见的复杂场景如计费场景,需要灵活的组装计算各个计费项,以及用户的费用相关的权益,得出最终想要的结果;中台场景,中台系统往往需要处理多个业务场景,甚至多条业务线的逻辑,如果到处都充斥着面条代码和if else分支,必然让整个代码结构十分混乱,维护的人也是苦不堪言。

近几年对中台的提倡和发展,也是促使流程编排的技术方案得到越来越多重视的重要原因。对于提升公司内多业务场景的开发效率,中台是必不可少的一个抓手,也是必然的发展方向。中台发展的必然性同时也催生流程编排技术发展的必然性。关于中台发展的必然性,下面发表一点私人的推理,熟悉科幻的同学可能知道这三条“公理”的灵感源头_

-业务或者集团在发展过程中必然会有越来越多的场景需要实现
-项目和个人要想获得更大的发展,必须让系统具有更强大、更广泛的能力输出
-对于业务发展,用最小的成本实现功能,永远是最优选择

3、到底要怎么做流程编排?

流程编排的含义是很广泛的,我们利用一些成熟框架,如Camel,进行完全规范化的编码或配置算是流程编排。我们平时利用的一些规则引擎,状态机等是流程编排,甚至我们写的一些责任链、策略模式等都属于流程编排。而流程编排的能力是建立在流程编排引擎的基础之上。

这里说一下我想要的流程编排引擎的能力

1.可以根据不同输入灵活路由
2.可以通过可视化界面或xml文件进行流程的组装
3.各个组件具备通用性,可以被最大限度的复用
4.可以灵活配置流程引擎入参且根据不同场景解析个性化出参(灵活解析出参的能力往往是难点)

我认为这样一个流程编排引擎需要具备的核心功能是
1.路由引擎,流程编排的灵魂
2.组件化规范,统一规范的组件是流程可被编排的基础
3.参数解析器,要做到通用性,对于入参和出参强大的解析能力必不可少

4、重复造轮子还是使用通用引擎的框架?

流程编排引擎包含的范围很广,但是我们通常都会建设一套贴近业务场景,在一定领域或者某些领域内使用的引擎,使之更具备易用性且学习成本更低。这也是大多数项目都在独立建设流引擎,并且Camel等产品没有彻底流行起来的原因。尽管如此我认为对于相近的业务场景,完全有可能建设一套公共的流程引擎框架,所有业务都可使用,而非各自为政,轮子满天飞。

你可能感兴趣的:(说说流程编排)