1. 应用场景
某企业现在需要将某业务工单数据全部取出以供业务分析使用。
由于数据量比较大,不可能一次性取全量数据,因此需要使用参数。
接口文档中 pageIndex 表示数据页数;pageSize 表示在每一页的数据条数。
2. 方案一
4.1.3 以及之后的版本支持的方案。
2.1 实现思路
从接口中获取总页数 total_pages,将其作为参数,也就是需要执行的次数;
使用分页取数,翻页方式选择「页码」,并设置 ${pageNum}页数参数,首次执行 pageIndex 页码数为 1 ,然后增长间隔为1,递增执行取出每一页的数据,当页数 pageNum<totalpages 继续执行,当页数 pageNum>=totalpages 时,停止执行。
注:循环容器的条件循环为 do-while 循环,意思是先执行循环体,再判断是否终止循环。示例:假设页数 pageNum>=totalpages 时,停止执行,当 totalpages 为 8,pageNum 也为 8 时,会先执行 pageNum 为 8 的循环,再终止执行。
2.2 操作步骤
2.2.1 获取工单总页码数
此处我们将 pageSize 设置为 100,也就是每页数据限制为 100 条,然后查看返回值中,每页 100 条数据计算总页数为多少。
新建「参数赋值」节点,写入 API 配置,并设置参数名:pageSize,参数值:100,如下图所示:
2.2.2 将总页数设置为参数
将总页数设置为参数输出,便于后续每页递增执行取数时,到总页数后停止取数。
接口返回值会返回总页数,如下图所示:
点击「输出参数」,设置参数值为「totalpages」,并将返回的总页数字段取出,如下图所示:
在预览界面可以看到总页数为 138 ,也就是以 100 条数据每页计算,一共有 138 页数据。
2.2.3 设置分页取数
新增数据同步节点,选择 API 数据源后,勾选「分页取数」,设置取数逻辑,分页方式选择「页码」,更新策略为初始值 1 ,增长间隔 1,即按照设置的更新策略从第一页开始递增 ${pageNum}页数参数,从接口取数。该参数即可实现按照页数递增取出所有的数据。如下图所示:
当页数参数 ${pageNum} 递增到大于等于总页数参数,则${totalpages},则分页结束,如下图所示:
在数据同步中写入 API 配置,并设置参数名:pageSize,参数值:100,pageIndex 使用分页参数 ${pageNum} ,也就是按照每页 100 条数据,从第一页开始递增从接口取数,如下图所示:
由于返回值为 JSON 格式,可以使用 JSON 格式取出指定的数据,如下图所示:
注:如果返回值比较复杂,推荐使用数据转换节点的JSON解析 实现。
在数据去向中设置指定的输出数据库以及数据表,如下图所示:
2.2.4 效果查看
保存并运行任务后,此时在数据库中即可出线取出的全部工单数据,如下图所示:
3. 方案二
4.1.3 之前的版本支持的方案。
3.1 实现思路
从接口中获取总页数 total_pages,将其作为参数,也就是需要执行的次数;
使用循环容器和内置参数 loopTimes,首次执行 pageIndex 页码数为 1 ,然后递增执行取出每一页的数据,当循环次数 loopTimes<total_pages 继续执行,当循环次数 loopTimes>=total_pages 时,停止执行。
注:循环容器的条件循环为 do-while 循环,意思是先执行循环体,再判断是否终止循环。示例:假设页数 pageNum>=totalpages 时,停止执行,当 totalpages 为 8,pageNum 也为 8 时,会先执行 pageNum 为 8 的循环,再终止执行。
3.2 操作步骤
3.2.1 获取工单总页码数
此处我们将 pageSize 设置为 100,也就是每页数据限制为 100 条,然后查看返回值中,每页 100 条数据计算总页数为多少。
新建「参数赋值」节点,写入 API 配置,并设置参数名:pageSize,参数值:100,如下图所示:
3.2.2 将总页数设置为参数
将总页数设置为参数输出,便于后续每页递增执行取数时,到总页数后停止取数。
接口返回值会返回总页数,如下图所示:
点击「输出参数」,设置参数值为「total_pages」,并将返回的总页数字段取出,如下图所示:
在预览界面可以看到总页数为 130 ,也就是以 100 条数据每页计算,一共有 130 页数据。
3.2.3 按照页数递增取出所有工单数据
loopTimes 为循环容器内置参数,容器内当前循环次数,初次为 1 ,后续每次循环递增加。该参数即可实现按照页数递增取出所有的数据。
新增循环容器节点,如下图所示:
将数据同步节点拖至循环容器中,如下图所示:
在数据同步中写入 API 配置,并设置参数名:pageSize,参数值:100,pageIndex 使用内置参数${loopTimes},也就是按照每页 100 条数据,从第一页开始递增从接口取数,如下图所示:
由于返回值为 JSON 格式,可以使用 JSON 格式取出指定的数据,如下图所示:
注:如果返回值比较复杂,推荐使用数据转换节点的JSON解析 实现。
在数据去向中设置指定的输出数据库以及数据表,如下图所示:
点击循环容器节点,设置循环次数,并设置循环方式为「条件循环」,点击配置条件为 loopTimes<${total_pages},如下图所示:
此时即可实现当递增的页数大于总页数时,跳出循环停止执行,从而取出所有的工单数据。
3.2.4 效果查看
保存并运行任务后,此时在数据库中即可出线取出的全部工单数据,如下图所示: