🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 「任务流」的核心逻辑是什么? 一个任务流定义为是一个DAG,一个DAG下可以添加多个组件任务(数据任务、远程命令执行任务、延时器) ### * **DAG状态**:一个DAG会有两个状态:关闭、开启。 #### 关闭状态: * DAG「关闭」状态下,所有组件任务都是停止的,组件任务是没有状态。 * 「关闭」状态下允许修改DAG逻辑,也允许删除整个DAG。 * 「关闭」状态下允许添加或删除组件任务。 * 「关闭」状态下允许编辑组件任务内容。 * 数据任务组件,可以修改任务设置和配置规则。 * 远程命令执行组件,可以修改组件配置内容。 * 延时器组件,可以修改延时器策略。 * 用户「关闭」DAG,所有组件任务都会停止执行,组件状态变为「无状态」。 * 「进行中」的组件任务 * 数据任务:会停止读取新数据,但已经读取的数据会继续往目的地写入。 * 远程命令执行:会立即终止本次脚本的执行。 #### 开启状态: * DAG「开启」状态下,会根据DAG的设置和实际情况,每个组件任务会有自己的状态。 * 点击「开启」:不管是第一次开启,还是曾经开启过,「开启」DAG后要求从第一个组件任务开始执行。 * 「开启」状态下,不允许修改DAG逻辑。 * 「开启」状态下,不允许添加或删除组件任务。 * 如果是数据任务组件,则会继续执行,已经同步过的不会读取。 * 如果是远程命令执行组件,每次都是重新开始执行脚本。 * 延时器组件,每次按照新的延时策略执行。 * DAG「开启」状态下,该任务流的调度时间(或API外部调用)满足条件,要求所有组件任务状态改为「等待中」,按照DAG逻辑从头开始执行。 * 例1:该任务流正常运行,所有组件任务状态为「结束-成功」。当满足用户设置的调度时间(每天0点)时,所有组件任务状态改为「等待中」,按照DAG逻辑从头开始一个个执行。 * 例2:该任务流正常运行,部分组件任务状态为「进行中」(或者「结束-失败」)。当满足用户设置的调度时间(每天0点)时: * 不会终止正在执行中的组件任务,系统会定时检查当前该任务流下的所有组件状态: * 如果有「进行中」的组件,不会启动新一轮的调度。 * 如果全部组件状态为「结束-成功」,立即启动下一轮调度 * 如果发现有一个组件状态为「结束-失败」,立即启动下一轮调度 * DAG无论是开启还是关闭,权限设置均允许修改,执行记录中均允许查看之前的执行情况以及具体的日志信息。 <br/> ### * **组件任务状态**:无状态、等待中、进行中、结束-失败、结束-成功。 * 组件任务状态:无状态 * 定义:当DAG处于「关闭」状态时,所有组件任务的状态为无状态,状态栏为空。 * 「无状态」允许编辑组件任务内容。 * 「无状态」组件任务,无法执行任务或「开始」、「停止」等按钮。 * 组件任务状态:等待中 * 定义:一个新的调度开始时,所有的组件任务状态为「等待中」,当上游组件任务「成功」事件后,会把该组件任务状态改为「进行中」。 * 「等待中」允许编辑组件任务内容。 * 「等待中」组件任务,提供「开始」按钮。 * 组件任务状态:进行中 * 定义:当上游组件任务标记为「结束-成功」时,下游的组件任务的状态会由「等待中」改为「进行中」,并执行该组件任务。 * 「进行中」不允许编辑组件任务内容。 * 「进行中」提供「停止」按钮,点击「停止」按钮后状态改为「结束-失败」。 * 组件任务状态:结束-失败 * 定义:一个「进行中」组件任务被系统停止执行,或者超时、或点击该组件任务下的「停止」按钮后,该组件任务状态改为「结束-失败」,并且执行记录里会记录该组件的结果。 * 「结束-失败」允许编辑该组件任务内容。 * 数据任务允许修改任务设置和配置规则,修改逻辑与当前数据同步任务暂停状态下的逻辑一致 * 脚本任务允许修改所有的配置信息。 * 「结束-失败」提供「开始」按钮,状态会改为「进行中」 * 组件任务是「数据任务」时,会继续执行当前任务。 * 组件任务是「远程命令执行」时,会重新开始执行。 * 组件任务状态:结束-成功 * 定义:一个「进行中」的组件任务完成任务后状态会改为「结束-成功」,并且在执行记录里记录该组件的结果。 * 「结束-成功」允许编辑该组件的内容。 * 「结束-成功」提供「开始」按钮,状态会改为「进行中」 * 组件任务是「数据任务」时,会继续执行当前任务。 * 组件任务是「远程命令执行」时,会重新开始执行。 <br/> <br/><br/>