📎普通组件
普通组件节点需要继承NodeComponent
,可用于THEN
和WHEN
关键字中。
需要实现process
方法
@LiteflowComponent("a")
public class ACmp extends NodeComponent {
@Override
public void process() {
System.out.println("ACmp executed!");
}
}
提示
@LiteflowComponent
继承自@Component
,如果你在spring体系的环境里,组件里可以任意注入spring的bean进行使用。
@LiteflowComponent
的参数a,就是你在写EL规则时需要用到组件ID。
# 可以覆盖的方法
对于组件来说,可以覆盖超类中的以下方法。
# isAccess
推荐实现isAccess
方法,表示是否进入该节点,可以用于业务参数的预先判断
# isContinueOnError
表示出错是否继续往下执行下一个组件,默认为false
# isEnd
如果覆盖后,返回true,则表示在这个组件执行完之后立马终止整个流程。对于这种方式,由于是用户主动结束的流程,属于正常结束,所以最终的isSuccess是为true的。
提示
需要注意的是,如果isContinueOnError
为true的情况下,调用了this.setIsEnd(true)
,那么依旧会终止。response里的isSuccess
还是true。
# beforeProcess和afterProcess
流程的前置和后置处理器,其中前置处理器,在isAccess
之后执行。
用于执行一些前置和后置处理,但是一般这个用不上。如果是统一做组件前置和后置,推荐用切面去完成。关于切面可以参考组件切面;
# onSuccess和onError
流程的成功失败事件回调,详情请参考组件事件回调。
# rollback
流程失败后的回滚方法,详情请参考组件回滚。
# This关键字可以调用的方法
# 获取上下文
在组件节点里,随时可以通过方法this.getContextBean(clazz)
获取当前你自己定义的上下文,从而可以获取任何数据。
# getNodeId
获取组件ID。
# getName
获取组件别名。
# getChainName
获取当前执行的流程名称。
# getRequestData
获取流程的初始参数。
# setIsEnd
表示是否立即结束整个流程 ,用法为this.setIsEnd(true)
。对于这种方式,由于是用户主动结束的流程,属于正常结束,所以最终的isSuccess是为true的。
提示
需要注意的是,如果isContinueOnError
为true的情况下,调用了this.setIsEnd(true)
,那么依旧会终止。response里的isSuccess
还是true。
# getTag
获取这个组件的标签信息,关于标签的定义和使用,请参照组件标签。
# invoke和invoke2Response
调用隐式流程,关于隐式流程的说明和用法,请参考隐式子流程。
# @LiteflowComponent
@LiteflowComponent
注解是继承于Spring的@Component
标签的,所以从作用上来说,和@Component
标签并没有什么区别,但是@LiteflowComponent
新增加了name
属性,用于给组件起别名,在打印调用链的时候会体现。具体请查看打印信息详解章节,新版本开始,推荐大家使用@LiteflowComponent
,当然@Component
也同样可以继续沿用。