LiteFlow高级特性:前置PRE、后置FINALLY

本文介绍了在LiteFlow中,THEN表达式的PRE和FINALLY特性,它们分别用于在节点执行前后添加额外操作,包括分布式锁管理、异常处理后的后续步骤以及任务完成后的行为。这些特性有助于增强流程控制的灵活性和可靠性。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

一、前置PRE

二、后置FINALLY

总结


提示:以下是本篇文章正文内容,下面案例可供参考

一、前置PRE

这个特性,是在THEN表达式内生效。

可以支持如下场景:在所在层级的THEN表达式中所有的节点之前执行

举例说明:

<flow name="myFlow">
	<chain id="chainabc">
		THEN(nodeA, PRE(nodeB), nodeB, FINALLY(nodeC))
	</chain>
</flow>

执行结果示例:

2024-02-23 16:01:05.443|INFO|main|127.0.0.1|4777375b32ac43f9b7585ac7e007c144|1.0|com.yomahub.liteflow.core.FlowExecutor.info[193]|[5453b693cac34eb6a09a0d11c11500c2]:slot[0] offered
2024-02-23 16:01:05.443|INFO|main|127.0.0.1|4777375b32ac43f9b7585ac7e007c144|1.0|com.yomahub.liteflow.flow.element.Node.info[193]|[5453b693cac34eb6a09a0d11c11500c2]:[O]start component[nodeB] execution
NodeB executed
2024-02-23 16:01:05.443|INFO|main|127.0.0.1|4777375b32ac43f9b7585ac7e007c144|1.0|com.finance.micro.api.liteflow.NodeB.info[200]|[5453b693cac34eb6a09a0d11c11500c2]:component[nodeB] finished in 1 milliseconds
2024-02-23 16:01:05.443|INFO|main|127.0.0.1|4777375b32ac43f9b7585ac7e007c144|1.0|com.yomahub.liteflow.flow.element.Node.info[193]|[5453b693cac34eb6a09a0d11c11500c2]:[O]start component[nodeA] execution
NodeA executed

THEN中PRE的位置不重要,最终都会先执行。

PRE中的节点如果异常了,除了后置节点,其他节点就不会向下执行了

这个特性也非常有用,比如我们要对某些接口加分布式锁,那么就可以定义一个/多个PRE节点

二、后置FINALLY

这个特性,是在THEN表达式内生效。

可以支持如下场景:在所在层级的THEN表达式中所有的节点之后执行,不论过程中是否有节点报错,都会执行

举例说明:

<flow name="myFlow">
	<chain id="chainabc">
		THEN(nodeA, PRE(nodeB), nodeB, FINALLY(nodeC))
	</chain>
</flow>

执行结果示例:

2024-02-23 16:08:11.715|INFO|main|127.0.0.1|4003fae974c44504bfb0eb306f25c086|1.0|com.yomahub.liteflow.core.FlowExecutor.info[193]|[8cfd12fb589a479297e81908f891207b]:slot[0] offered
2024-02-23 16:08:11.715|INFO|main|127.0.0.1|4003fae974c44504bfb0eb306f25c086|1.0|com.yomahub.liteflow.flow.element.Node.info[193]|[8cfd12fb589a479297e81908f891207b]:[O]start component[nodeB] execution
NodeB executed
2024-02-23 16:08:11.723|INFO|main|127.0.0.1|4003fae974c44504bfb0eb306f25c086|1.0|com.finance.micro.api.liteflow.NodeB.info[200]|[8cfd12fb589a479297e81908f891207b]:component[nodeB] finished in 1 milliseconds
2024-02-23 16:08:11.723|ERROR|main|127.0.0.1|4003fae974c44504bfb0eb306f25c086|1.0|com.yomahub.liteflow.flow.element.Node.error[346]|[8cfd12fb589a479297e81908f891207b]:component[nodeB] cause error,error:123
2024-02-23 16:08:11.723|INFO|main|127.0.0.1|4003fae974c44504bfb0eb306f25c086|1.0|com.yomahub.liteflow.flow.element.Node.info[193]|[8cfd12fb589a479297e81908f891207b]:[O]start component[nodeC] execution
NodeC executed
2024-02-23 16:08:11.723|INFO|main|127.0.0.1|4003fae974c44504bfb0eb306f25c086|1.0|com.finance.micro.api.liteflow.NodeC.info[200]|[8cfd12fb589a479297e81908f891207b]:component[nodeC] finished in 0 milliseconds

这个特性在我们日常工作中有哪些场景可以用到呢?

1、加锁之后的释放锁 

2、执行结束之后的出入参日志输出

3、输出结果敏感信息混淆处理等等


总结

每天进步一点点!

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值