E10Esb动作流专题 校验明细表中是否存在重复行数据并提醒重复内容
title: E10ESB动作流专题-校验明细表中是否存在重复行数据并提醒重复内容 created: 2026-04-19 updated: 2026-04-19 type: reference tags: [imported, pptx] source: "Weaver Doc Import"
Slide 1
【E10】ESB动作流专题 校验明细表中是否存在重复行数据并提醒重复内容
Slide 2
01 需求背景及实现效果
Slide 3
需求背景 校验明细表中是否存在重复行数据并提醒重复内容 在某些业务场景下,明细表中的数据需要满足一定的业务逻辑要求,例如唯一性约束、关联关系等。通过校验明细表中是否存在重复数据,可以验证业务逻辑的正确性,确保数据的合法性和完整性。 本场景可通过ESB动作流实现如下需求: 校验某张单据中明细表中的字段是否存在数据相同即数据行重复的情况; 若存在数据重复,则提醒重复的字段信息; 同时不允许提交流程。
Slide 4
实现效果 在这张流程单据的明细表中,物料类型A、B均有多条数据,在保存或提交表单的时候,会拦截操作并提醒。 校验明细表中是否存在重复行数据并提醒重复内容
Slide 5
02 实现逻辑
Slide 6
实现逻辑 校验明细表中是否存在重复行数据并提醒重复内容 判断当前单据中填写的明细数据中,是否存在重复情况,若存在,则提醒并拦截后续任务。 该问题的核心以及难点为: 判断是否存在重复行; 记录所有的重复字段。 判断是否存在重复行: 参考SQL操作的group by操作,对明细表数据进行分组统计,若存在重复行,则分组统计后的行数要小于原明细表的行数,以此来判断是否存在重复行。 记录所有的重复字段: 引入文本类型的变量:“duplicate_rows”,存储重复字段。
Slide 7
实现逻辑 判断是否存在重复行: 表单中明细表:list; 分组计数后得到的执行结果:list; 可通过遍历分组汇总后的列表,通过计数是否大于1,来判断是否为重复行数据。 分组汇总前: 分组汇总后: 判断是否存在重复行
Slide 8
实现逻辑 判断是否存在重复行: 表单中明细表:list; 分组计数后得到的执行结果:list; 可通过遍历分组汇总后的列表,通过计数是否大于1,来判断是否为重复行数据。 判断是否存在重复行
Slide 9
实现逻辑 如何记录所有的重复行 引入文本型变量:duplicate_rows,遍历分组汇总数据时,存储重复字段值
Slide 10
03 配置步骤
Slide 11
校验明细表中是否存在重复行数据并提醒重复内容 触发组件: 流程事件触发 执行组件: 数据汇总 循环 分支 变量赋值 页面交互 使用到的ESB动作流组件
Slide 12
校验明细表中是否存在重复行数据并提醒重复内容 STEP1. 设置动作流的触发组件 触发组件: 流程事件触发 设置触发时机 说明: 本场景需要根据当前动作流的执行结果来判断是否继续执行默认动作(保存/提交),因此不需开启异步执行。
Slide 13
校验明细表中是否存在重复行数据并提醒重复内容 STEP2. 执行组件-数据汇总 设置数据集 设置分组字段 设置汇总内容
Slide 14
校验明细表中是否存在重复行数据并提醒重复内容 STEP2.1. 设置数据集 设置数据集: 选择触发组件中的明细表 执行组件-数据汇总 设置数据集 设置分组字段 设置汇总内容
Slide 14
校验明细表中是否存在重复行数据并提醒重复内容 STEP2.1. 设置数据集 设置数据集: 选择触发组件中的明细表### Slide 15 校验明细表中是否存在重复行数据并提醒重复内容 STEP2.2. 设置分组字段 分组字段: 分组字段是用于对数据进行分组的字段。它决定了数据在分组操作中的归类方式。分组字段将具有相同值的行分为一组,并对每个组进行聚合计算或其他操作,例如计算每个分组的总和、平均值、最大值、最小值等。 数据集选择明细表时,可选择明细表中的字段作为分组字段,选择多个字段时,字段间关系为“且”,这些分组字段的数据值均相同的行会分为一组。 示例图中,表示将明细表中物料类型相同的明细行分为一组,在此基础上,再进行聚合操作。
Slide 16
校验明细表中是否存在重复行数据并提醒重复内容 STEP2.3. 设置汇总内容 汇总内容: 汇总内容是指在分组操作中对数据进行聚合计算的内容。通常,汇总内容是对某个字段进行聚合操作,例如求和、计数、平均值、最大值、最小值等。通过对分组后的数据进行汇总计算,可以得到每个分组的汇总结果。 支持设置多个汇总内容,可作为该组件的执行结果被其他组件引用。 聚合类型:计数; 计数依据字段:rowid
Slide 17
校验明细表中是否存在重复行数据并提醒重复内容 STEP3. 设置变量duplicate_rows用于存储所有的重复行字段 变量名称 变量类型:文本 无需设置默认值 (需先保存该动作流)
Slide 18
校验明细表中是否存在重复行数据并提醒重复内容 SETP4. 执行组件—循环 循环: 循环方式(指定数据) 注意:指定数据可以选择到下级,指定次数无法选择到下级数据 指定数据: 选择数据汇总组件的执行结果:result()
Slide 19
校验明细表中是否存在重复行数据并提醒重复内容 STEP3. 执行组件-分支 排他分支 设置分支条件: 判断是否为重复数据; 若为重复数据,则根据变量是否为空,给变量赋不同值。 可以通过两个分支组件来实现,也可以一个分支组件设置多个分支来实现。 目的:遍历数据汇总组件的执行结果,判断是否为重复数据
Slide 20
明细行数据校验且提醒错误行配置步骤 STEP4. 执行组件—变量赋值 变量赋值: 选择需要赋值的变量 赋值内容:动态赋值 循环: 循环或当前循环均可; 说明: 当仅有一层循环时,【循环】和【当前循环】组件一样; 当有多层循环时,【循环】组件需指定下标,标名是哪一层循环;而【当前循环】组件无需指定下标,可直接选择到下级数据。 目的:记录下第一个重复行数据
Slide 21
明细行数据校验且提醒错误行配置步骤 STEP4. 执行组件—变量赋值 变量赋值: 选择需要赋值的变量 赋值内容:动态赋值 循环: 循环或当前循环均可; 目的:非第一个重复行数据时,追加上当前的重复数据 Contact():文本拼接函数,连接多个参数信息
Slide 22
校验明细表中是否存在重复行数据并提醒重复内容 STEP5. 执行组件-分支 排他分支 设置分支条件: 变量为空,则代表不存在重复数据; 变量不为空,则代表存在重复数据。 目的:遍历完成后,如果有重复数据,则提醒并拦截
Slide 23
校验明细表中是否存在重复行数据并提醒重复内容 STEP6. 执行组件-页面交互 阻止后续操作:需要开启此开关,拦截保存/提交动作。 目的:当存在重复数据时,拦截保存/提交操作 Contact():文本拼接函数,连接多个参数信息
Slide 24
组件-页面交互 阻止后续操作:需要开启此开关,拦截保存/提交动作。 目的:当存在重复数据时,拦截保存/提交操作 Contact():文本拼接函数,连接多个参数信息
Slide 24
---### 🖼️ 提取的插图 (共 41 张)