钉钉报销数据集成至金蝶云星空的技术探讨
在企业信息化推进过程中,异构系统间的数据集成和对接一直是个关键挑战。本文将分享一个成功案例——通过轻易云平台实现钉钉报销数据自动集成到金蝶云星空,具体方案为“钉钉报销【月结贷款】->金蝶付款单【纳兰杜】”。
对于该项目,我们主要面临以下几个技术难题:如何确保数据不漏单,大量数据快速写入,以及处理两者之间的数据格式差异。下面,将详细介绍我们如何借助API接口及相关技术手段高效解决这些问题。
首先,在获取钉钉报销数据方面,我们直接调用了topapi/processinstance/get
API接口,该接口支持分页查询,因此需要特别处理分页和限流问题,以确保所有待处理的实例都能被完整抓取且不会触发API请求频率限制。在这个过程中,通过设置合理的定时任务来可靠地抓取数据,并实时监控每次抓取情况及日志记录,有效保障了过程透明度和可追溯性。
然后,在批量写入到金蝶云星空时,我们使用了其提供的batchSave
API。这一操作涉及大量报销单据的一次性提交,需要优化批处理策略以提升效率。同时,还必须注意两者之间的数据格式差异,为此我们进行了自定义映射,确保不同字段类型、名称完全匹配以及正确转换。此外,为应对可能出现的异常情况,实现了一套完善的错误重试机制,这样即便出现临时故障,也不会导致整体流程中断或重要数据丢失。
这一综合解决方案不仅保证了系统间无缝衔接,更大幅提升了业务运作效率与透明度。在后续部分,我们将进一步深入探讨具体实施步骤及代码示例。
调用钉钉接口topapi/processinstance/get获取并加工数据
在数据集成生命周期的第一步中,调用源系统的API接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用钉钉接口topapi/processinstance/get
来获取报销类别为“月结货款”的审批实例,并对数据进行初步加工。
API接口调用配置
首先,我们需要配置API接口的调用参数。根据提供的元数据配置,以下是具体的参数设置:
- API路径:
topapi/processinstance/get
- 请求方法:
POST
- ID校验: 启用(
idCheck: true
) - 条件过滤: 仅获取报销类别为“月结货款”的审批实例
"condition": [ [ {"field": "报销类别", "logic": "eq", "value": "月结货款"} ] ]
请求参数配置
请求参数包括审批流的唯一码、时间范围、分页参数等。以下是具体的请求参数设置:
-
审批流的唯一码
- 字段名:
process_code
- 类型:
string
- 值:
PROC-C20F7186-8491-4D6D-B0BC-35AE79450B42
- 字段名:
-
审批实例开始时间
- 字段名:
start_time
- 类型:
string
- 值:计算公式为当前时间减去96小时(4天),转换为Unix时间戳,单位毫秒。
"_function ( {LAST_SYNC_TIME} - ( 3600 * 96) ) * 1000"
- 字段名:
-
审批实例结束时间
- 字段名:
end_time
- 类型:
string
- 值:当前时间,转换为Unix时间戳,单位毫秒。
"{CURRENT_TIME}000"
- 字段名:
-
分页参数
-
每页大小(最多传20)
- 字段名:
size
- 类型:
string
- 值:
20
- 字段名:
-
分页查询的游标
- 字段名:
cursor
- 类型:
string
- 值:最开始传0,后续传返回参数中的next_cursor值。
- 字段名:
-
数据格式化与加工
在获取到原始数据后,需要对部分字段进行格式化和重命名。例如,将字段“付款方式”重命名为“付款方式_new”,并将其格式化为字符串类型。
"formatResponse": [
{"old": "付款方式", "new": "付款方式_new", "format": "string"}
]
实际操作步骤
-
配置API请求 在轻易云数据集成平台上,通过可视化界面配置上述API路径、请求方法和请求参数。
-
执行API调用 平台会根据配置自动生成HTTP POST请求,并向钉钉接口发送请求以获取符合条件的数据。
-
处理响应数据 接收到响应数据后,根据元数据配置中的格式化规则,对字段进行重命名和格式化处理。
-
存储与后续处理 将处理后的数据存储到目标系统中,为下一步的数据转换与写入做好准备。
通过以上步骤,我们实现了从钉钉系统中获取特定条件下的审批实例,并对数据进行了初步加工。这一过程不仅确保了数据的一致性和准确性,还为后续的数据处理奠定了基础。
使用轻易云数据集成平台将钉钉报销数据转换并写入金蝶云星空API接口
在数据集成的生命周期中,第二步至关重要,即将已经集成的源平台数据进行ETL转换,并转为目标平台所能接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将钉钉报销【月结贷款】的数据转换为金蝶付款单【纳兰杜】所需的格式,并通过金蝶云星空API接口写入目标平台。
元数据配置解析
首先,我们需要理解元数据配置中的各个字段及其作用。以下是元数据配置的详细解析:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "batchArraySave",
"rows": 1,
"rowsKey": "array"
},
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{{extend.business_id}}"},
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNUMBER"},"value":"FKDLX01_SYS"},
{"field":"FDATE","label":"业务日期","type":"string","describe":"业务日期","value":"{{extend.finish_time}}"},
{"field":"FSETTLEORGID","label":"结算组织","type":"string","describe":"100","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find Number from 723e2cb6-f80f-3823-8b4f-6e98b9713ba3 where Name={{费用归属项目}}"},
{"field":"FPAYORGID","label":"付款组织","type":"string","describe":"100","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find Number from 723e2cb6-f80f-3823-8b4f-6e98b9713ba3 where Name={{费用归属项目}}"},
{"field":"FCURRENCYID","label":"币别","type":"string","describe":"币别","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"PRE001"},
{"field":"FCONTACTUNITTYPE","label":"往来单位类型","type":"string","describe":"","value":"BD_Supplier"},
{"field":"FCONTACTUNIT","label":"往来单位","type":"","describe":"","value":"","parser":{"name":"","params":""}},
{"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}},
{"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}},
{"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}},
{"field":"","label":"",
数据转换与写入步骤
-
请求配置:
api
和method
字段指定了调用金蝶云星空API接口的方法,这里使用的是batchSave
。idCheck
设置为true
,表示需要检查ID。operation
字段定义了批量保存操作,指定每次处理一行数据(rows: 1
),并且使用数组形式保存(rowsKey: array
)。
-
字段映射:
FBillNo
: 单据编号,映射到钉钉报销中的业务ID ({{extend.business_id}}
)。FBillTypeID
: 单据类型,固定值为FKDLX01_SYS
。FDATE
: 业务日期,映射到钉钉报销中的完成时间 ({{extend.finish_time}}
)。FSETTLEORGID
: 结算组织,通过查找费用归属项目名称获取对应的编号。FPAYORGID
: 付款组织,同样通过查找费用归属项目名称获取对应的编号。FCURRENCYID
: 币别,固定值为PRE001
。
-
复杂字段处理:
- 对于数组类型的字段如
FPAYBILLENTRY
, 包含多个子字段,每个子字段需要进行相应的映射和转换。例如:FSETTLETYPEID
: 结算方式,通过查找付款方式名称获取对应的编号。FPURPOSEID
: 付款用途,固定值为SFKYT08_SYS
。FPAYTOTALAMOUNTFOR
: 应付金额,直接映射到报销金额 ({{金额(元)}}
)。
- 对于数组类型的字段如
-
特殊处理:
- 对于一些需要根据条件进行处理的字段,如对方银行账号 (
FOPPOSITEBANKACCOUNT
) 和对方账户名称 (FOPPOSITECCOUNTNAME
) ,可以使用函数进行条件判断和赋值。
- 对于一些需要根据条件进行处理的字段,如对方银行账号 (
实际案例应用
在实际应用中,通过上述配置,我们可以实现从钉钉报销系统到金蝶云星空系统的数据无缝对接。具体步骤如下:
- 准备数据:从钉钉报销系统中提取原始数据,包括业务ID、完成时间、费用归属项目等信息。
- ETL转换:根据元数据配置,将提取的数据进行转换,包括字段映射、格式转换、条件判断等操作。
- 调用API:将转换后的数据通过HTTP POST请求发送到金蝶云星空API接口,实现批量保存操作。
技术要点总结
通过以上步骤,我们可以看到,在轻易云数据集成平台上进行ETL转换并写入目标平台,需要深入理解元数据配置和各个字段的具体含义。同时,在实际操作中,需要灵活运用各种解析器和函数,以确保数据能够准确无误地传递到目标系统。这种全异步、多异构系统支持的平台特性,使得不同系统间的数据集成变得高效而可靠。