优雅地实现流程编排,我提供一个思路。
哈喽,大家好,我是怎书,今天介绍一款流程编排框架。github.com/howwrite/ji… (锦绣路)
1. 流程编排业务中遇到的挑战
在日常需要流程编排的场景中,有以下一些痛点:
- 每个节点的执行依赖上下文,在不同的流程中上下文不可以复用,导致节点的复用性变差。
- 通常节点的入参和出参有一定约束,例如必须单参,不能有返回值等限制。
- 在编写node时不够纯粹,要考虑每一个node的在上下文取的值从哪里来的,又到哪里去,在三方项目修改流程的时候带来麻烦。。有时从上下文获取的参数不知道是哪里写进去的。
2. 锦绣路都做了什么
锦绣路依然是通过管道(pipeline)->执行节点(node)的结构定义不同的需要流程编排的场景,
但是在每一个执行节点编写时只需要考虑本node节点所实现功能需要的入参以及产生的返回值。至于入参和返回值是怎么获取,则是框架在构建pipeline的时候,通过参数类型向前寻找node返回值或者入参来匹配获取,在运行时直接将该值填充至当前node的对应入参,不影响运行时性能。
例如在一个主页接口,需要获取用户信息、获取任务信息、获取天气信息等节点,那么不同节点只需要生命需要什么参数,框架会自动向前寻找可匹配的参数并注入。
优点
- 编写node时无需构建上下文,上下文是框架根据前后入参自动构建并注入参数。可实现node在多条pipeline中的复用。
- 在编写node是无需考虑上下文参数,只需要将本节点需要的入参在方法声明,将返回值返回即可。
- 提供可选实现,可以实现没有依赖关系的node并行执行,提升系统执行效率。
如何使用
参考项目readme中的快速开始。
转载自:https://juejin.cn/post/7377963940897079322