修改数据节点使用说明
1. 简介
本文将对 修改数据节点 的配置步骤、执行逻辑等进行介绍,以帮助用户更好地理解和使用修改数据节点。
2. 配置步骤
在修改表单数据时,通常需要明确三个关键操作,才能得到正确的修改效果,即想要把哪些行的哪些列,改成什么值。同样,在修改数据节点中,也需要进行如下 3 项配置:
1)筛选出要修改的数据(哪些行):设置过滤条件,将符合条件的主数据全部过滤出来;
2)设置字段值(哪些列,改成什么值):指定要修改的列,并设置其相应的新值;
3)设置目标数据与数据源间的匹配关系:若步骤 2)中修改了子表单/多条数据的值,则需要建立数据源与目标数据间的 1:1 / 1:N 关系,使得修改时,数据源中的每条数据都能够准确找到对应的目标数据并修改。
为什么还需要建立 1:1 / 1:N 关系?,说明如下:
步骤一仅是将目标数据过滤出来,并未建立与数据源间的关联,则,在取数据源中的数据去修改目标数据时:
若目标数据只有一条,数据源中也只有一条数据时,节点会自然地拿一条数据去修改一条数据。
当目标数据有多条,数据源中有一或多条数据时,节点就不知道该拿哪一条数据,去修改哪一条或哪几条数据。
因此,需建立数据源与目标数据间的 1:1 / 1:N 关系,使得节点在拿到一条数据后,知道应该去修改哪些数据。
注:
1)由于子表单中可有一或多条数据,在修改数据节点中将统一视为「多条数据」处理;
2)若未出现步骤 3 的配置项,则说明不需要配置,仅参考步骤 1、2 进行配置即可。
3. 执行逻辑
完成上述配置后,修改数据节点便能够正确执行。且不同修改方式下的执行逻辑不同,具体如下:
3.1 修改已有数据
1)逻辑说明
第一步:获取到数据源数据后,根据过滤条件,从目标表单中过滤出符合条件的主数据;
- 能过滤出数据,进入第二步;
- 未能过滤出数据,结束执行。
第二步:从数据源中取出一条数据,根据匹配关系设置,匹配到目标数据中的一或多条主/子数据;
- 能匹配到对应数据,进行相应修改即可;
- 未能匹配到对应数据,则不进行修改操作。
接着,循环执行步骤二,直到遍历完数据源中的所有数据后,结束执行。如下图所示:
2)效果演示
注:本节仅演示节点的执行逻辑,表单搭建和节点具体配置等内容请参考:使用子表数据修改子表数据。
以修改订单号为 JDY-001 的订单数据中,外套、毛衣商品的订货数量为例,对节点的执行逻辑进行演示:
- 第一步:通过过滤条件,筛选出订单号为 JDY-001 的整条数据。如下图所示:
- 第二步:取出数据源中的一条数据,根据匹配关系设置,若能匹配到对应目标数据,便可进行修改,如:
- 取出「商品名称为外套」的数据后,能够在目标数据中匹配到「商品名称为外套」的数据,可进行修改。
- 取出「商品名称为毛衣」的数据后,无法在目标数据中匹配到「商品名称为毛衣」的数据。此时,将忽略该条数据,不做修改。
3.2 修改或新增数据
「修改或新增」相对于「修改已有数据」的区别是,在未过滤出/未匹配到要修改的数据时,不会结束执行,而是根据当前的数据源,直接向目标表单中新增数据。具体如下:
3.2.1 逻辑说明
第一步:取到全部数据源数据后,根据过滤条件,从目标表单中过滤出一或多条主数据;
- 能过滤出主数据,则进入第二步;
- 未能过滤出主数据,则直接根据数据源,向目标表单中新增对应数据,不再进行第二步。
第二步:从数据源中取出一条数据,根据匹配关系设置,匹配到目标表单中的一或多条主/子数据;
- 能够匹配到对应数据,进行相应修改即可;
- 未能匹配到对应数据,则根据该条数据,向目标表单执行新增操作;
接着,循环执行步骤二,直到遍历完数据源中的所有数据后,结束执行。如下图所示:
3.2.1 效果演示
注:
1)本节仅演示执行逻辑,表单搭建和节点具体配置等内容请参考:使用子表数据修改或新增子表数据;
2)本节仅讲解「未过滤出/未匹配到要修改的数据」时的新增数据场景,其余修改场景下的执行逻辑与「修改已有数据」相同,不再赘述。
示例场景:在修改或新增「订单表」中某一订单的商品明细时,能够同步修改「回款跟进表」中对应的回款计划。
当「回款跟进表」中只有一条「订单号」为 JDY-001 的数据时,不同数据源的执行效果不同,具体如下:
1)新增场景一
修改「订单表」中订单号为 JDY-002 的数据后,触发了「智能助手Pro」。则,在执行第一步时,无法从「回款跟进表」中筛选出订单号为 JDY-002 的数据:
将会直接新增一条主数据,如下图所示:
2)新增场景二
修改「订单表」中订单号为 JDY-001 的数据后,触发了「智能助手Pro」。则,执行到第二步时:
- 商品编码为 SJ-001、PJ-001 的数据源,可以在目标数据中匹配到商品编码一致的数据,能够进行修改操作。
- 商品编码为 SJ-002 的数据源,未能在目标数据中匹配到商品编码一致的数据,将直接在目标数据子表单中新增一条子表数据:
最终,修改了两条子表数据,新增了一条子表数据,效果如下图所示:
4. 匹配关系说明
在设置待修改的数据与数据源之间的匹配关系时,需要根据不同场景进行不同的设置。具体可分为如下两类:
4.1 多改多场景
4.1.1 逻辑说明
当数据源间与目标数据为多对多关系时,需要设置匹配规则,建立起两者间的 1:1 或 1:N 关系。
如何设置匹配规则呢?根据实际需求,组合目标表单中的一或多个字段,建立起一个联合索引即可。这样,数据源便可利用该索引,来查找对应的目标数据。
以批量更新用户联系方式为例,可以设置匹配关系为目标数据.用户ID「等于」数据源.用户ID,建立起数据源与目标数据间的 1:1 关系,使得新表中的每条数据能够通过用户ID找到底表中对应的用户数据并修改。
4.1.2 具体场景
在如下字段值配置场景中,目标数据与赋值数据源间为多对多关系,需要设置数据匹配关系。
修改对象类型 | 目标数据源类型 | 用于赋值的数据源 | 主字段被修改为 | 子表单字段被修改为 |
选择表单修改数据 | 仅有主表字段 | 单值数据源 | 节点子表字段(多值) | — |
多值数据源 | 节点主字段(多值) | — | ||
存在子表字段 | 单值数据源 | 节点主表字段 自定义值 空值 | 节点子表字段(多值) | |
节点子表字段(多值) | — | |||
多值数据源 | 节点主表字段(多值) | — | ||
自定义值 空值 | 节点主表字段(多值) | |||
选择节点修改数据 | 存在子表字段 | 单值数据源 | 节点主表字段 自定义值 空值 | 节点子表字段(多值) |
多值数据源 | 自定义值 空值 | 节点主表字段(多值) |
以表中高亮部分场景为例,进行详细讲解。即,当修改对象为「选择表单修改数据」,并将「目标数据的主字段」修改为「单值数据源的子表字段」时,由于:
- 选择表单修改数据时,可从目标表单中过滤出 0~N 条数据,统一视为多条数据处理;
- 使用节点子表字段进行赋值时,由于子表单中可有一或多条数据,统一视为多条数据处理。
此时出现了多对多关系,因此需要设置数据匹配关系。
注:
1)单值数据源包括:新增数据节点(单条)、查询单条数据节点、计算节点、插件节点;多值数据源包括:新增数据节点(多条)、查询多条数据节点;
2)修改对象为「选择节点修改数据」,且所选节点为多值数据源节点时,匹配关系的逻辑与具体场景与「选择表单修改数据」完全一致。
4.2 多改一场景
4.2.1 逻辑说明
将子表单数据修改为单一值时,需要设置子表单过滤条件,建立起数据源与目标数据间的 1:N 关系,使得节点知道,该修改子表单中的哪些数据。
如,在修改学生 A 的英语成绩时,可以设置子表单过滤条件为子表单.科目「等于」英语,以确保只有英语科目的数据被修改。
4.2.1 具体场景
在如下字段值配置场景中,将子表单数据修改为了单一值,需要设置子表单过滤条件。
修改对象 | 目标数据源 | 赋值数据源 | 主字段被修改为 | 子表单字段被修改为 |
选择表单修改数据 | 存在子表字段 | 单值数据源 | 节点主表字段 自定义值 空值 | 节点主表字段 自定义值 空值 |
多值数据源 | 自定义值 空值 | 自定义值 空值 | ||
选择节点修改数据 | 存在子表字段 | 单值数据源 | 节点主表字段 自定义值 空值 | 节点主表字段 自定义值 空值 |
多值数据源 | 自定义值 空值 | 自定义值 空值 |
以表中高亮部分场景为例,进行详细讲解。即,当修改对象为「选择表单修改数据」,并将「目标数据的子表字段」修改为「单值数据源的主表字段」时,由于:
- 修改子表单数据时,子表单中可能有一或多条数据;
- 单值数据源中仅有单条数据,其主表字段为单一值;
此时可能会将多条子表单数据修改为单一值,因此需要设置过滤关系,仅对特定的子表单数据进行修改。
注:
1)单值数据源包括:新增数据节点(单条)、查询单条数据节点、计算节点、插件节点;多值数据源包括:新增数据节点(多条)、查询多条数据节点;
2)修改对象为「选择节点修改数据」,且所选节点为多值数据源节点时,匹配关系的逻辑与具体场景与「选择表单修改数据」完全一致。