1. 概述编辑
1.1 应用场景
公司内部使用北森系统进行人员管理。
希望将 根据时间窗滚动查询变动的员工与单条任职信息 中的人员信息数据取出,以便进行数据分析。
1.2 接口说明
接口文档详情参见:根据时间窗滚动查询变动的员工与单条任职信息
1.3 实现思路
FilterString 参数中使用日期区间作为参数,获取一段时间(开始时间和结束时间)作为日期参数,取出该段时间内的数据,后续通过定时调度任务进行追加。
如何取出该时间段数据:先清空日期区间内的数据,然后通过循环容器循环次数来确定每次取数的开始行数,直到结果数据行数无法整除每次区数量,再跳出循环。
2. 操作步骤编辑
2.1 获取 access_token
access_token是调用北森API接口的唯一凭证,相当于创建了一个登录凭证,其它的业务API接口,都需要依赖于access_token来鉴权调用者身份,使用Key和Secret可获取access_token。
参考北森接口文档:https://open.italent.cn/#/open-document

因此需要调用北森获取 token 接口,便于在后续调用获取用户信息接口时使用。
使用「参数赋值」节点,输入按照接口文档选择请求方式、输入 URL、在 Body 中输入请求,如下图所示:

将获取到的 token 设置为参数,便于后续使用,如下图所示:

2.2 设置时间参数
由于根据时间窗滚动查询变动的员工与单条任职信息接口有「startTime」和「stopTime」必填请求参数,因此需要设置时间参数,动态生成时间,开始时间默认前 60 天(可自定义),结束时间为当天,保证每次查询用户数据为全量。
使用「参数赋值」设置时间范围开始时间为当前时间前 60 天(可自定义),结束时间为当天,如下图所示:
注:示例使用 MySQL 数据库,用户需要根据实际情况修改 SQL 语句。

select concat(date_sub(CURDATE(),interval 60 day),'T00:00:00') as startTime ,
concat(date_format(now(),'%Y-%m-%d'),'T00:00:00') as stopTime
然后分别「startTime」和「stopTime」将设置为参数,如下图所示:

2.3 循环容器滚动查询全量数据
2.3.1 设置 scrollId 分页参数和中间表
由于北森用户接口一次只返回 100 条数据,因此需要通过分页参数 scrollid 查询下页数据,使用中间表 beisen_mid_scrollid 将 scrollid 记录下来。
因此需要在数据库中新建中间表 beisen_mid_scrollid ,设置文本字段 code、scrollid。
首先查询 scrollId,中间表中的 scrollId 数据,其中第一次循环 scrollId 为空,与接口取数逻辑一致
然后将滚动查询中的 scrollId 分页参数写入到中间表中,以便滚动循环取数。
在循环容器中拖入「数据转换」,并进入编辑界面,如下图所示:

使用 API 输入,输入用户信息接口 url,并设置认证类型,引用 2.1 节获取的 access_token 参数,如下图所示:

然后再 Body 中输入请求参数,如下图所示:

{
"empStatus": [2,3],
"employType":[0,2],
"timeWindowQueryType":1 ,
"isWithDeleted":false,
"enableTranslate": true,
"startTime":"${startTime}",
"stopTime":"${stopTime}",
"scrollId":"${scrollId}"
}
点击数据预览即可看到取出的数据,如下图所示:

然后使用 JSON 解析,将分页数据 scrollId 和 code 字段解析,并写入至中间表 beisen_mid_scrollid 中,便于后续使用分页参数获取下一页的 scrollId,如下图所示:

然后使用将数据写入中间表「beisen_mid_scrollid」,如下图所示:

2.3.2 使用分页参数取出用户数据
查询北森用户接口,将数据写入到用户表 beisen_user 中。
在循环容器中新建数据转换,如下图所示:

同 2.3.1 节的 API 输入,将token和请求写入,如下图所示:


