🍡步骤信息
LiteFlow为执行的过程提供了详细的步骤信息。
# 基本应用
获取一条流程执行的步骤信息是通过LiteflowResponse
对象来获取的:
LiteflowResponse response = flowExecutor.execute2Resp("chain1", "初始参数", CustomContext.class);
Map<String, CmpStep> stepMap = response.getExecuteSteps();
//或者你也可以通过以下的语句来获得一个步骤队列
Queue<CmpStep> stepQueue = response.getExecuteStepQueue();
以上这2个方法的区别是:
提示
获得Map
返回值的那个方法,如果有多个相同的组件,那么以上这个方法获得的Map
中这个组件id的value是最终的那个步骤信息。
而获得Queue<CmpStep>
这个返回值的方法,返回值里包含了所有的步骤信息,相同的组件在规则里定义n次,那么这里也有n个步骤。
在CmpStep
这个对象里,你可以通过以下方法获得你要的数据:
isSuccess
:此组件是否执行成功getNodeId
:获得组件IdgetNodeName
:获得组件名称getTag
:获得组件标签值getTimeSpent
:获得组件的耗时,单位为毫秒getStepData
:获得自定义step信息(从v2.13.0开始支持)getThreadName
:获得运行threadName信息(从v2.13.0开始支持)getStartTime
:获取组件开始执行的时间,为Date对象(从v2.11.4开始支持)getEndTime
:获取组件结束执行的时间,为Date对象(从v2.11.4开始支持)getException
:获取此组件抛出的异常,如果isSuccess为false的话。但是这里要注意下:有exception,success一定为false,但是success为false,不一定有exception,因为有可能没执行到,或者没执行结束(any的情况)。
提示
如果你的某一个组件抛出了异常,在默认配置情况下,流程会中断。那么response.getCause()
和相应组件步骤里的exception都是一致的。且没执行的组件不会有相应步骤信息。
# 设置自定义步骤信息v2.13.0+
你可以在组件里设置自定义步骤信息:
@LiteflowComponent("a")
public class ACmp extends NodeComponent {
@Override
public void process() {
this.setStepData("step_a");
}
}
这样你就可以在LiteflowResponse
对象中拿到每个step对象中拿到stepData
信息:
response.getExecuteStepQueue().forEach(
cmpStep -> System.out.println(cmpStep.getStepData())
);
这个特性的意义在于,你可以监控上下文中的某一个数据在经过每个组件时的变化数据。比如上下文中一个count属性,每经过一个组件+1。
那么你最终拿到的step队列中,你可以清楚的看到当时这个step中的count属性数据是多少。
帮助我们改善此文档 (opens new window)
上次更新: 2025/02/22, 13:47:36