提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、组件事件回调
通常我们定义一个组件或者节点,该节点如果执行失败,那么我们就得在代码里添加相关的异常处理或者其他的措施。
组件事件回调就给我提供了这么一个便利,我们可以将正常逻辑、异常逻辑分离开来。
举一个例子:
A系统请求B系统的接口,如果B系统返回成功,则执行m逻辑,如果B系统返回失败,则执行n逻辑
我们可以将A调B包装成node1,成功之后的逻辑包到成功事件中,失败之后的逻辑包到失败事件中,各模块划分得更细,更容易维护,也容易修改。每块关注的逻辑就比较独立。
二、使用步骤
来看一段代码示例:
@LiteflowComponent("a")
public class ACmp extends NodeComponent {
@Override
public void process() {
DefaultContext context = this.getContextBean(DefaultContext.class);
//do your biz
}
@Override
public void onSuccess() throws Exception {
DefaultContext context = this.getContextBean(DefaultContext.class);
//do your biz
}
@Override
public void onError(Exception e) throws Exception {
DefaultContext context = this.getContextBean(DefaultContext.class);
//do your biz
}
}
有如下注意点:
1、onError
方法执行后,因为主方法抛出异常,所以整个流程依旧是失败状态。response对象里依旧是主方法抛出的错
2、如果onError
方法本身抛错,那么最终抛到最外面的错,是主方法里的错,而onError
方法所产生的异常会被打出堆栈,但不会抛出
3、onError
方法执行后,afterProcess
方法还会执行
这个特性,对于拆分复杂逻辑,非常好用。
总结
每天进步一点点!