LiteFlow LiteFlow
💒首页
  • v2.13.2(当前版本)
  • What's New

    • 🌈What' s New In LiteFlow v2.13.2?
  • 历史版本

    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 🌈2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
👑LF CLUB社区
  • 常见问题
  • 专题解释

    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念,在框架中起到什么样的作用?
💖赞助
🧩插件
🔥PPT
  • 项目介绍
  • 项目成员
  • 更新记录
  • 参与开发
👥加入群聊
🧤谁在使用
  • Gitee (opens new window)
  • GitCode (opens new window)
  • Github (opens new window)

广告采用随机轮播方式显示 ❤️成为赞助商
💒首页
  • v2.13.2(当前版本)
  • What's New

    • 🌈What' s New In LiteFlow v2.13.2?
  • 历史版本

    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 🌈2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
👑LF CLUB社区
  • 常见问题
  • 专题解释

    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念,在框架中起到什么样的作用?
💖赞助
🧩插件
🔥PPT
  • 项目介绍
  • 项目成员
  • 更新记录
  • 参与开发
👥加入群聊
🧤谁在使用
  • Gitee (opens new window)
  • GitCode (opens new window)
  • Github (opens new window)
  • LiteFlow简介
  • 项目特性
  • 快速开始(Hello world)

  • 配置项

  • 规则文件

  • 用代码动态构造规则

  • 使用详细指南

    • 开启和关闭
    • 规则文件路径
    • 同步异步编排
    • 执行器
    • 数据上下文
    • Response对象
    • 普通组件
    • 条件组件
    • 脚本组件
    • 声明式组件
    • 前置后置组件
    • 组件别名
    • 组件标签
    • 组件事件回调
    • 子流程
    • 隐式子流程
    • 私有投递
    • 组件重试
    • 平滑热刷新
    • 组件切面
    • 步骤信息
    • 打印信息详解
    • 不同格式规则加载
    • When异步线程池
    • 自定义组件执行器
      • 全局组件执行器
      • 单个组件配置特殊的执行器
      • 优先级
      • 自定义执行器对于重试功能的影响
    • 简单监控
  • 示例工程

  • 性能表现
  • v2.7.X文档
  • 使用详细指南
铂赛东
2022-06-01
目录

自定义组件执行器

LiteFlow从2.6.10起开始允许用户定义自定义组件执行器,通过这个可以在执行组件时,加入自定义代码,重写重试策略。当然其他方式也可以达到相同的目的,比如说组件切面功能。

如果你没有非常明确这个功能是干什么的,建议还是用默认的方式。(其实就是不用看此章节的意思)

# 全局组件执行器

对于自定义组件执行器,你可以在全局上进行替换。默认的组件执行器为:com.yomahub.liteflow.entity.executor.DefaultNodeExecutor

你可以通过以下方式替换全局默认组件执行器:

liteflow.node-executor-class=com.yomahub.liteflow.test.nodeExecutor.CustomerDefaultNodeExecutor

自定义组件执行器需要继承com.yomahub.liteflow.entity.executor.NodeExecutor。

public class CustomerDefaultNodeExecutor extends NodeExecutor {
    @Override
    public void execute(NodeComponent instance) throws Exception {
        LOG.info("使用customerDefaultNodeExecutor进行执行");
        super.execute(instance);
      
      	//在这里你可以加入自己的代码,包括上面的代码都可以去掉
      	//但是要确保至少要调用instance.execute(),否组件就真的无法被正确执行了
    }
}

# 单个组件配置特殊的执行器

除了全局执行器,单个组件也支持配置自定义执行器。

你需要在定义组件的时候,实现getNodeExecutorClass 方法:

@LiteflowComponent("d")
public class DCmp extends NodeComponent {

    @Override
    public void process() {
        System.out.println("DCmp executed!");
    }

    @Override
    public Class<? extends NodeExecutor> getNodeExecutorClass() {
        return CustomerNodeExecutorAndCustomRetry.class;
    }
}

# 优先级

如果全局和单个组件都配置自定义执行器的情况下,优先使用单个组件上配置的执行器。

# 自定义执行器对于重试功能的影响

因为重试的逻辑是在默认执行器里面实现的。所以如果你自己配置了自定义执行器,那么重试的功能需要你自己去实现。并且全局重试参数配置还有@LiteflowRetry功能标签将失效。

当然你自己实现的自定义执行器,还是可以拿到重试参数,自己写特殊的重试策略的。只不过这一切都需要自己去完成。这点要注意下。

帮助我们改善此文档 (opens new window)
上次更新: 2022/10/07, 00:22:18
When异步线程池
简单监控

← When异步线程池 简单监控→

Theme by Vdoing | Copyright © 2020-2025 铂赛东 | MIT License
沪ICP备18012955号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式