跳到主要内容

工作流节点 — 获取单条数据


节点功能

  • 1、通过此节点获取到1条记录,然后才可以更新记录的内容或删除这条记录,或者供后续节点使用这条记录的内容。

  • 2、获取的1条数据可以随机获取1条,也可以按序获取到第一条。

获取数据的几种方式

直接从工作表查询记录

  • 1. 查询并更新记录

    从工作表中通过筛选条件和排序规则查找符合条件的唯一数据,在获取的同时对记录进行更新,并支持返回更新前的记录数据。不支持随机获取一行记录。

  • 2. 查询并删除记录

    从工作表中通过筛选条件和排序规则直接删除符合条件的唯一数据,不支持随机获取一行记录。删除记录时支持直接彻底删除,不进入回收站(无法再恢复)。

  • 3. 查询工作表

    从工作表中查询一行记录,仅作查询不做操作,供后续节点使用。支持随机获取一行记录。

通过其他对象查询一行记录

  • 4. 从多条数据中获取

    • 流程中如果有“获取多条数据”节点,那么可以通过此节点再从多条数据中获取其中1行数据。
  • 5. 获取关联记录

    • 通过关联关系,获取关联的记录。例如从【关联表】、【子表】中获取一行记录
  • 6. 从记录链接获取

    • 通过解析文本字段存储的分享的记录链接来获取对应的记录对象,供流程中的其他节点使用

查询工作表

场景举例

当【线索管理】中增加一条新线索,通过手机号从【联系人】表中查询是否已经有此客户的记录。

  • 如果查询到有记录,则将该条记录中的“客户状态”字段  更改为“潜在客户” 。
  • 如果没有查询到记录,则向【联系人】表中自动新增一条记录。

1、选择获取单条数据节点

由于是直接从《联系人》表中查找,因此选择从工作表获取的方式

2、配置节点 

A、选择从哪张表中查找数据

B、设置查找的条件

  • 单个条件的条件值可以是手动输入的固定值,也可以从前面的节点对象中选择动态值。
  • 支持条件组,且或结合。

C、条件异常时忽略

如果筛选条件中条件选择了动态字段,则会显示此设置,条件中的字段被删除时,就会查询异常中止流程,如下图。

  • 勾选 条件异常时忽略

    将忽略错误,跳过查询,继续执行后面的节点。

  • 不勾选 条件异常时忽略

    节点报错并中止,并通知流程通知人。

D、值为空时忽略

当传入的条件值为空时,这个查询条件忽略,只执行其他筛选条件。 例如: 查询节点的筛选条件有两个:

  • 手机号=A记录的手机号
  • 状态=“正常”

如果勾选了“值为空时忽略”,当A记录的手机号为空时,那么就只查询状态等于"正常"的记录。

如果查询条件只有一个条件时,传入空值时以为着没有查询条件,结果是随机获取一条或按排序获取第一条。

E、设置排序规则

如果符合条件的记录有多条,那么会根据设置的排序规则,获取第一条记录。

F、不排序,随机获取

勾选后则忽略排序规则,随机获取符合条件的1条数据。

G、未获取到数据时的执行方式

当工作表中没有记录,或没有符合条件的记录时,需要选择流程接下来怎么走。有3条路:

  • 1) 继续执行

    如果从表中找不到记录,继续执行后面的节点,如果有用到此节点对象或字段的内容,则会跳过或返回空。跳过还是返回空点此查看详情介绍

  • 2) 在工作表中新增记录后继续执行

    如果从表中找不到记录,则可以直接向表(图中是联系人表)中新增一行记录,后续节点使用此节点内容时也是使用的新建记录的内容。

  • 3) 中止流程,或继续执行查找结果分支

    如果此节点后面紧跟按查找结果分支,则执行无数据的分支流程。如果后面紧跟的是其他节点则中止流程。

示例中我们使用了新增,向【联系人】表中添加一条新纪录,并返回这条记录对象。

3、更新获取到的记录

获取到记录后,通过【更新记录】节点,更改用户状态的值。

示例中,更新对象选择的查找节点中定位到的表记录;要修改的字段选择【客户状态】,字段的值设为“潜在客户”

4、与分支节点的结合

有时,如果获取不到数据,且并不需要直接新增记录,而需要进行其他流程操作。

则可以在节点后面添加 分支节点 —— 选择查找结果分支。根据不同的结果设置不同的分支流程操作。

5、与定时触发流程的结合使用 

定时触发的流程的触发与否和工作表数据无关系,流程触发后,流程中并没有一个节点指向工作表的数据。如果需要修改某个表中某条记录,则需要先通过【获取单条记录】节点或【获取多条数据】节点,先在流程中获取到需要的记录,然后再去更新、删除它,或者使用它的记录值。

查询并更新

这种方式在查询到数据时可以同时更新记录内容,而无需另外添加更新记录节点,并支持输出更新前的值,用于留存方便追溯。

场景:库存扣减为负数时,改回库存进行锁定

某商品确定出库时,根据编号查询库存记录,并直接扣减掉出库量。 然后可以对比更新前的值是否小于出库的数量,如果小于则恢复到原库存。

第一步:查询库存并更新

1、从库存表中查询记录

2、通过物料编码进行筛选查询唯一的记录

3、查询到就直接更新记录,减少库存数量

通过这3步可以实现库存的直接更新,如果需要对比更新前的库存,还需要选择输出的值。

第二步:对比更新前的库存和出库数量,如果小于出库量,则回滚数据

我们先了解下更新数据后,如何输出记录的值。

被之后节点使用时
  • 使用记录更新前的数据

    如果选择此项,流程会保存本次操作前的值,后续节点使用记录数据时,都是更改前的数据。

  • 使用记录的最新数据

    如果选择此项,后续节点使用此节点的记录数据时,会实时查询当前记录的最新值。届时记录的值可能并非本次更改后的值,也可能是其他流程更改后的值。

1、此场景应该选择:“使用记录更新前的数据”

2、通过分支节点,对比更前的库存是否小于出库数量

3、如果小于库存数量,则因将库存改回修改前的库存量

从多条数据中获取

获取多条数据节点可以从工作表中获取的多行记录,也可以从Webhook节点或代码块节点中获取的数组(多行数据), 因此此方式获取到的也可能是一行表记录,也可能是一行数据。

场景举例

会签的审批人有多个,想要获取最晚处理的审批信息。先通过【获取多条数据】节点获取到审批节点的所有审批人的信息,再通过【获取单条数据】节点按照处理时间排序,最终获取到最晚的处理信息。

使用方法

如下图:审批节点通过的分支下,先通过获取多条数据(从人工节点获取)节点获取多个审批人的审批信息,然后再通过获取单条数据节点,从上个多条数据节点中获取1条数据。

查找数据时的筛选、排序、随机获取以及为获取到数据时的执行方式和方式1(从工作表中获取)相同,不再赘述。

从关联字段获取

场景举例

如下图:新创建一个出库明细记录,并关联了要出库的是哪一个商品记录。当出库记录提交后,需要更新商品记录的库存,在出库明细记录中并没有商品的库存信息,这时就需要获取到关联的商品记录,然后才能更新这条记录中库存量的值。

1、添加“获取单条数据”节点 

添加获取单条数据节点,并选择从关联字段获取的方式。

2、设置节点

A:选择通过哪条记录获取:即触发流程的那条出库明细

B:选择“关联字段”,根据记录中的哪个关联表字段来获取,我们选择的是“商品”。表示:从触发流程的出库记录中,根据关联的商品字段,获取到要出库的商品记录。

C:如果关联了多条,可以通过筛选进一步缩小待查询的记录的范围。

D: 如果有多条关联记录都符合条件,可以根据排序规则排序后,获取排在第一行的那条记录。

E:如果没有关联的记录,则获取结果是空,然后有两条路可以走。

  • 1)继续执行
    继续执行后续的节点,如果使用到此节点则跳过执行或数据为空。

  • 2)中止流程,或继续执行查找结果分支
    如果此节点后面紧跟查找结果分支,则继续执行无数据的分支流程。如果紧跟的是其他节点,则中止流程。

3、使用或处理获取到的记录内容

此节点仅仅表示在流程中获取定位到一条记录,但是并没有进行任何实际的"操作", 可以通过更新节点修改此记录的值,或运算节点使用此记录的值,或删除节点删除此记录。

通过"更新记录"节点,修改商品的库存

将现有的库存直接减去出库的数量,就是新的库存量。

一个订单中,可能关联了多个订单明细,此节点只获取到1条订单明细的记录。 如果需要获取到所有的关联记录,请使用获取多条数据节点。

TIPS:

此获取方式可以使用“从工作表获取”的方式来替代,而且查询速度更快,在经常批量执行的工作流中建议使用“从工作表获取”的方式,

如本示例中,通过出库明细记录的关联字段(商品),获取其关联的商品记录。改为:直接从商品表中查询,查询条件为关联字段(出库记录)关联此当前出库记录的记录ID。

从记录链接获取记录

此节点可以通过工作表中文本字段存储的记录链接,来直接获取到相应的记录, 并将获取的记录给到后面的节点进行使用。

场景示例

在【采购明细表】通过文本存储的链接,来匹配【采购单】,进行自动关联

使用方法

如下图,根据【采购明细表】,文本字段(描述)所存放的链接,在【采购单】里面找到相应的记录, 进行匹配关联, 使用更新记录节点,将获取到的【采购单】更新给【采购明细表】里面的关联记录。

支持识别的链接:

  • 对内:记录分享二维码链接

  • 对外:记录分享二维码链接(系统打印)、word打印二维码链接

未获取到数据时,后续节点如何处理

当“获取单条数据”节点没有获取到记录或数据时,而后续的节点需要使用到这个节点,那怎么处理呢。

我们先把“获取单条数据”记作节点A, 后续使用它的节点记作B。 基本上是两个原则:

1、如果把节点A当作一个对象处理时(更新、删除),由于节点A没有任何记录,节点B无法操作,则节点B直接跳过。

2、当节点B使用节点A的某个字段的值时,则返回空,节点B继续执行。

详情见表格


文档问题反馈

文档中是否有错别字、内容过期、难以理解等问题? 点此给我们反馈吧