钉钉数据集成到金蝶云星空的技术实现——refund-新收款单(收款退款单)V4.0
在企业日常运营中,如何高效地处理业务系统之间的数据交互是提升运营效率的关键。在这个案例中,我们将详细探讨钉钉平台上生成的“refund-新收款单(收款退款单)”数据如何通过轻易云集成到金蝶云星空中的具体技术实现。该方案不仅要解决两大平台API接口对接的问题,还需应对分页、限流以及数据质量监控等多个技术挑战。
接口调用与数据抓取
首先,通过钉钉提供的v1.0/yida/processes/instances
API接口定时可靠地获取所需的数据,是核心步骤之一。这里我们配置了自动化任务来定时轮询此接口,确保及时抓取到所有的新收款单及其状态变动情况。同时,为避免漏单和降低网络延迟风险,我们实施了智能重试机制,在请求失败或超时时进行多次尝试。
数据转换和格式差异处理
由于钉钉平台与金蝶云星空的数据结构存在一定差异,为保证从一个系统导出的数据能被另一个系统无缝识别和接受,需要进行自定义的数据转换逻辑。这一部分主要通过可视化的数据流设计工具来完成,将复杂的映射需求简化为直观操作,从而更好地适应特定业务需求。例如,将JSON格式的数据转为符合金蝶云星空数据库要求的XML或其他结构化格式。
数据写入与高吞吐量支持
在成功抓取并转换后,我们利用金蝶云星空提供的batchSave
API接口批量写入这些支付记录。该过程需要考虑大量数据快速写入带来的性能影响。因此,通过优化API调用方式,提高吞吐量并确保每个请求携带尽可能多的信息以减少交互次数;同时,分阶段批次提交以防止服务器过载。
实时监控与异常处理
整个流程离不开全面细致的实时监控和告警体系,以便掌握各环节运行状态。当发现异常或失败时,可以立即触发预设措施,如日志记录、错误通知甚至是自动重试。此外,通过统一控制台管理两大平台API资产,实现资源使用情况全盘把控,有助于资源调配和问题诊断。
接下来,我们将逐步深入展示实际实施细节,包括各个步骤中的代码示例及配置技巧,以帮助您形象了解这一复杂但极具实用价值的大规模系统对接解决方案。
调用钉钉接口v1.0/yida/processes/instances获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用钉钉接口v1.0/yida/processes/instances
来获取并加工数据,以实现refund-新收款单(收款退款单)V4.0的集成方案。
接口调用配置
首先,我们需要配置API调用的元数据。以下是元数据配置的详细信息:
{
"api": "v1.0/yida/processes/instances",
"method": "POST",
"number": "title",
"id": "processInstanceId",
"idCheck": true,
"request": [
{"field":"pageNumber","label":"分页页码","type":"string","describe":"分页页码","value":"{PAGINATION_START_PAGE}"},
{"field":"pageSize","label":"分页大小","type":"string","describe":"分页大小","value":"{PAGINATION_PAGE_SIZE}"},
{"field":"appType","label":"应用ID","type":"string","describe":"应用ID","value":"APP_WTSCMZ1WOOHGIM5N28BQ"},
{"field":"systemToken","label":"应用秘钥","type":"string","describe":"应用秘钥","value":"IS866HB1DXJ8ODN3EXSVD750RBTK2X72R8MELL4"},
{"field":"userId","label":"用户的userid","type":"string","describe":"用户的userid","value":"16000443318138909"},
{"field":"language","label":"语言","type":"string","describe":"语言,取值:zh_CN:中文(默认值)en_US:英文"},
{"field":"formUuid","label":"表单ID","type":"string","describe":"表单ID","value":"FORM-OS566L910XZ9MAUKDXIG9BZKX2P12AUKTGKGL5"},
{"field": "searchFieldJson", "label": "条件", "type": "object", "children": [
{"field": "selectField_lgkgut6u", "label": "类型", "type": "string", "value": "收款退款"},
{"parent": "searchFieldJson", "label": "部门过滤", "field": "selectField_lgkgut6b", "type": "string"}
]},
{"field": "originatorId", "label": "根据流程发起人工号查询", "type": "string", "describe": ""},
{"field": "createFromTimeGMT",
"label":
"创建时间起始值",
"type":
"string",
"describe":
"创建时间起始值",
"value":
"_function DATE_FORMAT(DATE_ADD(NOW(),INTERVAL - 25 DAY),'%Y-%m-%d 00:00:00')"
},
{"field":
"createToTimeGMT",
"label":
"创建时间终止值",
"type":
"string",
"describe":
"创建时间终止值",
"value":
"{{CURRENT_TIME|datetime}}"
},
{"field":
"modifiedFromTimeGMT",
"label":
"修改时间起始值",
"type":
"string",
"describe":
""},
{"field":
"modifiedToTimeGMT",
"label":
"修改时间终止值",
"type":
"string",
},
{
field:
taskId,
label:
任务ID,
type:
string,
describe:
},
{
field:
instanceStatus,
label:
实例状态,
type:
string,
describe:
},
{
field:
approvedResult,
label:
流程审批结果,
type:
string,
describe:
}
],
condition:[
[
{
field:dateField_lgkgut9r,logic:notnull
}
]
]
}
请求参数解析
在上述元数据配置中,request
字段包含了所有需要传递给API的参数。以下是关键参数的解析:
pageNumber
和pageSize
: 用于分页控制,确保每次请求的数据量适中。appType
,systemToken
,userId
: 用于身份验证和权限控制。formUuid
: 表单ID,用于指定具体的数据表单。searchFieldJson
: 包含多个子字段,用于定义查询条件,例如类型为“收款退款”。createFromTimeGMT
和createToTimeGMT
: 用于限定数据创建时间范围,支持动态计算当前时间。instanceStatus
和approvedResult
: 用于筛选已完成且审批通过的数据实例。
数据请求与清洗
在发送请求后,平台会接收到来自钉钉接口返回的数据。这些数据通常是原始且未经过处理的,需要进行清洗和加工。以下是常见的数据清洗步骤:
- 格式转换: 将日期、金额等字段转换为标准格式。
- 字段映射: 根据业务需求,将原始字段映射到目标系统所需的字段。
- 数据过滤: 根据预定义条件过滤掉不符合要求的数据,例如剔除未完成或审批未通过的实例。
数据转换与写入
经过清洗后的数据需要进行进一步的转换,以适应目标系统的格式和要求。常见的数据转换操作包括:
- 字段合并: 将多个字段合并为一个字段,例如将“姓名”和“姓氏”合并为“全名”。
- 计算衍生字段: 基于现有字段计算出新的衍生字段,例如根据“金额”和“税率”计算出“税后金额”。
最终,将处理好的数据写入目标系统,实现完整的数据集成流程。
通过上述步骤,我们可以高效地调用钉钉接口获取所需数据,并进行必要的清洗和转换,以满足业务需求。在实际操作中,根据具体场景调整参数和处理逻辑,可以进一步优化集成效果。
利用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入
在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是详细的技术实现过程。
API接口配置
我们需要配置金蝶云星空的batchSave
API接口,该接口使用POST方法,支持批量保存数据。以下是元数据配置:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "batchArraySave",
"rows": 1,
"rowsKey": "array"
},
"request": [
{
"field": "FBillNo",
"label": "单据编号",
"type": "string",
"value": "{serialNumberField_lgorr6rv}(SKTK)"
},
{
"field": "FBillTypeID",
"label": "单据类型",
"type": "string",
...
}
],
...
}
数据字段解析与转换
在元数据配置中,我们定义了多个字段,并通过不同的解析器和函数对其进行处理。例如:
-
单据编号(FBillNo):
{ "field": "FBillNo", "label": "单据编号", "type": "string", "value": "{serialNumberField_lgorr6rv}(SKTK)" }
将源平台的序列号字段
serialNumberField_lgorr6rv
拼接上固定字符串“(SKTK)”作为单据编号。 -
单据类型(FBillTypeID):
{ "field": "FBillTypeID", ... "value": "_function case '{textField_lgkgut9o}' when 'SFKYT01_SYS' then 'SKTKDLX01_SYS' else 'SKTKDLX02_SYS' end" }
使用条件判断,将源字段
textField_lgkgut9o
值为'SFKYT01_SYS'时,转换为'SKTKDLX01_SYS',否则为'SKTKDLX02_SYS'。 -
日期(FDATE):
{ ... "value": "_function FROM_UNIXTIME( ( {dateField_lgkgut9r} / 1000 ) ,'%Y-%m-%d' )" }
将Unix时间戳
dateField_lgkgut9r
转换为标准日期格式。
子字段处理
对于复杂的数组类型字段,如退款明细(FREFUNDBILLENTRY),我们需要逐个处理其子字段:
{
...
{
"field":"FREFUNDBILLENTRY",
...
{"field":"FSETTLETYPEID","label":"结算方式","type":"string","value":"JSFS04_SYS","parent":"FREFUNDBILLENTRY","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FPURPOSEID","label":"原收款用途","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{textField_lgkgut9o}","parent":"FREFUNDBILLENTRY"},
...
}
}
例如,结算方式(FSETTLETYPEID)直接赋值为固定字符串“JSFS04_SYS”,而原收款用途(FPURPOSEID)则需要从源字段textField_lgkgut9o
进行解析并转换。
特殊字段处理
某些特殊字段需要额外处理,例如提交并审核、验证基础资料等:
{
...
{"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"},
{"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"false"}
}
这些布尔类型字段直接设置为true或false,以控制API调用时的行为。
数据写入
完成所有字段配置后,通过轻易云数据集成平台将处理后的数据发送至金蝶云星空API接口,实现数据写入。此过程包括以下步骤:
- 构建请求体:根据元数据配置生成符合API要求的数据结构。
- 发送请求:使用POST方法调用金蝶云星空的batchSave接口。
- 处理响应:检查响应结果,确保数据成功写入,并记录任何错误信息以便调试和改进。
通过上述步骤,我们可以高效地将源平台的数据转换并写入到金蝶云星空,实现系统间的数据无缝对接。