Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bamboo-engine 信号设计方案 #164

Open
hanshuaikang opened this issue Jul 12, 2023 · 0 comments
Open

Bamboo-engine 信号设计方案 #164

hanshuaikang opened this issue Jul 12, 2023 · 0 comments

Comments

@hanshuaikang
Copy link
Collaborator

hanshuaikang commented Jul 12, 2023

目前梳理出的信号

任务级别

  • 任务启动
  • 任务结束
  • 任务撤销
  • 任务暂停
  • 任务继续

节点级别

网关:

  • 进入网关
  • 离开网关
  • 重试网关
  • 跳过网关

节点:

  • 进入节点
  • 离开节点
  • 重试节点
  • 强制失败
  • 回调节点
  • 跳过节点
  • 节点失败

子流程:

  • 进入子流程
  • 离开子流程

实现思路:

bamboo-engine interface 提供了 hooks 实现。但是目前的 hooks 是比较少的。通过扩充interface层所支持的hooks的类型,在engine调度的过程中调用这些钩子即可。

目前pipeline接口可提供定义的钩子为:

任务

  • 任务启动
  • 任务暂停
  • 任务撤销
  • 任务继续

节点:

  • 重试节点
  • 跳过节点
  • 强制失败
  • 回调节点

我们需要新增:

任务

  • 进入节点
  • 离开节点

网关

  • 进入网关
  • 离开网关
  • 跳过网关

子流程:

  • 进入子流程
  • 离开子流程

信号的实现使用django signal信号,但是如此多的信号可能会给上层的使用方带来实现管理上的麻烦,于是讲所有的信号事件收敛为一个信号: bamboo_engine_events

bamboo_engine_events 的协议如下:

{
    "type": "pipeline_access_node",
    "data": {
        "pipeline_id": "",
        "node_id": ""
    }
}

由上层的业务根据不同的type来去消费不同的事件数据。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant