likes
comments
collection
share

优雅地实现流程编排,我提供一个思路。

作者站长头像
站长
· 阅读数 30

哈喽,大家好,我是怎书,今天介绍一款流程编排框架。github.com/howwrite/ji… (锦绣路)

1. 流程编排业务中遇到的挑战

在日常需要流程编排的场景中,有以下一些痛点:

  1. 每个节点的执行依赖上下文,在不同的流程中上下文不可以复用,导致节点的复用性变差。
  2. 通常节点的入参和出参有一定约束,例如必须单参,不能有返回值等限制。
  3. 在编写node时不够纯粹,要考虑每一个node的在上下文取的值从哪里来的,又到哪里去,在三方项目修改流程的时候带来麻烦。。有时从上下文获取的参数不知道是哪里写进去的。

2. 锦绣路都做了什么

锦绣路依然是通过管道(pipeline)->执行节点(node)的结构定义不同的需要流程编排的场景,

但是在每一个执行节点编写时只需要考虑本node节点所实现功能需要的入参以及产生的返回值。至于入参和返回值是怎么获取,则是框架在构建pipeline的时候,通过参数类型向前寻找node返回值或者入参来匹配获取,在运行时直接将该值填充至当前node的对应入参,不影响运行时性能。

例如在一个主页接口,需要获取用户信息、获取任务信息、获取天气信息等节点,那么不同节点只需要生命需要什么参数,框架会自动向前寻找可匹配的参数并注入。 优雅地实现流程编排,我提供一个思路。

优点

  1. 编写node时无需构建上下文,上下文是框架根据前后入参自动构建并注入参数。可实现node在多条pipeline中的复用。
  2. 在编写node是无需考虑上下文参数,只需要将本节点需要的入参在方法声明,将返回值返回即可。
  3. 提供可选实现,可以实现没有依赖关系的node并行执行,提升系统执行效率。

优雅地实现流程编排,我提供一个思路。

如何使用

参考项目readme中的快速开始。

转载自:https://juejin.cn/post/7377963940897079322
评论
请登录