当前位置: 首页 > news >正文

3.3.3 VO-O语法- 语法算子(二)

循环遍历

由于VO语言是面向数据集的,其所有隐含的语义中都已经带有了遍历并计算的数据逻辑。因此,VO语言只提供了一种支持循环语法的算子--Loop算子。

Loop算子

Loop算子是一个容器算子,其可以实现对其内部子流程的循环迭代运行。但Loop算子有一个强使用限定,就是其必须有前置算子向其传输数据流。

Loop算子驱动内嵌流程迭代执行。迭代次数可由“迭代次数”参数进行设置。若迭代次数设置为小于1的参数,那么内嵌流程必须有逻辑结束迭代操作。此时,内嵌流程必须有数据分支连接了退出端口。Loop算子会对该逻辑进行检查。

上图表示了一个迭代复制数据集的逻辑。每次循环都会复制一个数据集,并将数据集通过数据输出端口输出。也可以编写逻辑只在迭代结束后输出数据,这时候就需要内嵌流程不是去连接数据输出端口了,而是去连接退出端口了。Loop算子的退出端口一旦接受到数据集就会退出迭代,所以需要控制好何时向退出端口写出数据。若即连接了退出端口又设置了迭代次数,那么哪个条件先满足,就用哪个条件退出迭代。

使用Loop算子有一个特别需要注意的事项就是,内嵌流程必须与输入端口与迭代输出端口有连接。进入Loop算子的每个数据集都会激活一次迭代计算。首次迭代时,内嵌流程收到的数据集来自前置算子,迭代过程中再次收到的数据则来自内嵌流程的上一迭代的输出了。这样,内嵌流程就可以实现对同一数据集的多次迭代计算了。

异常

目前,绝大多数通用语言都支持这种语法特性,用于简化容错处理,确保未知运行错误可被捕获并恢复运行环境或进入错误处置。VO 语言也对该特性进行了支持,方便开发者编写复杂的数据流程。

异常捕获

异常捕获算子(ExceptionReporter)是一个容器算子。从其内部看,是一个可以容纳内嵌流程的标准容器算子。可以编写任意逻辑的流程。但是当流程发生错误,产生异常时,其不会立刻将异常抛回给VO语言解释器,由解释器结束这个数据流程;而是捕获异常,并将异常通过exceptionOut端口报出。可以在exceptionOut端口后加入异常信息处理逻辑,比如向Kafka同步异常状态等。

异常捕获算子有一个“是否异常退出”的控制参数,若该值为true。那么当异常发生且异常信息被成功写出到exceptionOut端口后,异常捕获算子会通知VO语言解释器终止整个流程的运行;若该值为false,那么数据流程会继续执行。流程执行的恢复点因算子功能差异会不同,可能会有以下几种情况:

  • 算子忽略掉当前产生异常的数据,继续执行

  • 算子忽略掉当前产生异常的数据集,继续执行

  • 算子无法恢复执行,继续产生异常。

抛异常

在开发过程中,如果数据出现某个特征即认为不合理并需要退出整个流程时,可以使用抛异常算子。抛异常算子支持设置异常码和异常信息,用于记录数据的业务逻辑问题。异常信息支持以上下文变量的方式即@{varName},将输入端口输入的数据拼装进异常信息中。上下文变量的名字必须是输入数据集的列名,且只会将数据集的第一条信息作为代表拼装入异常信息。抛异常算子经常会与异常捕获算子搭配使用。


文章转载自:

http://YA0tem6i.kqyyq.cn
http://rIjA1jH0.kqyyq.cn
http://9451JJyR.kqyyq.cn
http://BVaj5kjz.kqyyq.cn
http://5qxuriNh.kqyyq.cn
http://ojYkFQCZ.kqyyq.cn
http://FekJA2kd.kqyyq.cn
http://8DjKIBjp.kqyyq.cn
http://vQE4C06v.kqyyq.cn
http://prLGAWdD.kqyyq.cn
http://ef1cWgOH.kqyyq.cn
http://sf532RsY.kqyyq.cn
http://CYtgiOiI.kqyyq.cn
http://QR27D9LM.kqyyq.cn
http://fLLKnHpe.kqyyq.cn
http://fa0DbU6C.kqyyq.cn
http://RMrAEU5J.kqyyq.cn
http://QI0GRtUK.kqyyq.cn
http://LFhFyMcL.kqyyq.cn
http://mdzaWfDh.kqyyq.cn
http://dOFd0ybD.kqyyq.cn
http://pHd4ueZq.kqyyq.cn
http://5ZjFk99y.kqyyq.cn
http://rLQQV1R8.kqyyq.cn
http://14o3rt9p.kqyyq.cn
http://tmkPPhVE.kqyyq.cn
http://IlzAzW37.kqyyq.cn
http://n4H7kX4T.kqyyq.cn
http://aA0H2vrW.kqyyq.cn
http://VIhnBQRv.kqyyq.cn
http://www.dtcms.com/a/14707.html

相关文章:

  • 哈希表-两个数的交集
  • sql难点
  • 什么手机卡最便宜 怎么办手机卡最便宜
  • 【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA
  • AI驱动的广告制作革命:Icon如何实现从创意到成片的全流程自动化
  • OpenCV2D 特征框架 (22)人脸检测的一个类cv::FaceDetectorYN的使用
  • Sentinel——Spring Boot 应用接入 Sentinel 后内存开销增长计算方式
  • 1.攻防世界 unserialize3(wakeup()魔术方法、反序列化工作原理)
  • rocketmq-netty通信设计-request和response
  • APP端网络测试与弱网模拟!
  • ASP.NET Core用MediatR实现领域事件
  • 【蓝桥】线性DP--最快洗车时间
  • opencascade 标注-直线标注、半径标准、角度标注
  • STM32+Proteus+DS18B20数码管仿真实验
  • 23页PDF | 国标《GB/T 44109-2024 信息技术 大数据 数据治理实施指南 》发布
  • QML使用ChartView绘制饼状图
  • python-leetcode 23.反转链表
  • 【ubuntu24.04】 强制重启导致大模型的磁盘挂载出错
  • RockyLinux AlmaLinux RedHat 8,9安装图形化
  • Golang的多团队协作编程模式与实践经验
  • 大模型笔记:pytorch实现MOE
  • 华硕笔记本怎么一键恢复出厂系统_华硕笔记本一键恢复出厂系统教程
  • 支持向量机原理
  • NGINX相关的知识点
  • TUSB422 MCU 软件用户指南
  • Java LinkedList(单列集合)
  • 解决 paddle ocr 遇到 CXXABI_1.3.13 not found 的问题
  • 【设计模式】【行为型模式】迭代器模式(Iterator)
  • python卷积神经网络人脸识别示例实现详解
  • 如何避免大语言模型中涉及丢番图方程的问题