自定义组件执行器
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 {
Slot slot = DataBus.getSlot(instance.getSlotIndex());
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