吉客云数据集成到金蝶云星空的技术案例分享:其他出库对接(菜鸟)-已测试
在系统对接和数据集成的实际应用中,如何高效、可靠地实现吉客云与金蝶云星空之间的数据流动,是各企业IT团队常见并迫切需要解决的问题。本文将分享一个具体的技术案例——“其他出库对接(菜鸟)”,重点解析如何通过API接口确保业务流程无缝衔接,并达到预期效果。
在这个项目中,吉客云提供出库数据,通过调用其erp.storage.goodsdocout.v2
接口获取相关信息。而这些数据需要被准确、高效地写入到金蝶云星空平台,我们使用的是其batchSave
API进行批量数据写入。在此过程中,需要确保以下几个关键点:
- 定时可靠的数据抓取:设置合适的时间间隔来抓取吉客云中的最新出库数据,以保证业务处理的及时性。
- 高吞吐量的数据写入支持:针对大量订单和复杂业务场景,我们设计了高性能的数据批量写入机制,使得大规模的数据能够快速并准确提交至金蝶云星空。
- 自定义转换逻辑与映射关系:由于两个系统的数据结构存在差异,需要根据具体业务需求定制化转换逻辑,并做好映射关系以保持一致性。
- 分页与限流控制:处理每次请求返回的大量分页结果,同时防止因频繁请求导致服务器过载。从而实现稳定、连续的数据传输。
- 实时监控与异常处理机制:搭建了一套全面的监控和告警体系,实时跟踪任务执行状态,一旦发现异常情况迅速响应并自动重试,确保集成过程稳健可靠。
以上方案架构合理配置,并经过多轮测试验证,不仅增强了系统间的互通性,也提升了整体运行效率。下面将从详细步骤展开解析这一技术实施过程。
调用吉客云接口erp.storage.goodsdocout.v2获取并加工数据
在数据集成生命周期的第一步,我们需要从源系统吉客云调用接口erp.storage.goodsdocout.v2
获取数据,并进行初步的加工处理。以下是详细的技术实现过程和关键点。
接口调用配置
首先,我们需要配置接口调用的元数据。根据提供的元数据配置,接口调用采用POST方法,主要参数如下:
pageIndex
: 分页页码pageSize
: 分页页数,默认值为50goodsDocNo
: 出库单号startDate
: 创建时间的起始时间,使用变量{{LAST_SYNC_TIME|datetime}}
endDate
: 创建时间的结束时间,使用变量{{CURRENT_TIME|datetime}}
inouttype
: 类型,固定值为204(其他出库)- 其他可选参数如
sourceBillNo
,warehouseCode
,vendCode
,billNo
,userName
,outBillNo
,gmtModifiedStart
,gmtModifiedEnd
这些参数确保了我们可以灵活地查询不同条件下的数据,并且通过分页机制来处理大量数据。
请求示例
以下是一个请求示例:
{
"pageIndex": "1",
"pageSize": "50",
"startDate": "{{LAST_SYNC_TIME|datetime}}",
"endDate": "{{CURRENT_TIME|datetime}}",
"inouttype": "204"
}
数据过滤与条件设置
为了确保获取的数据符合业务需求,我们在元数据中定义了过滤条件:
"condition":[
[
{"field":"inOutReason","logic":"like","value":"菜鸟"},
{"field":"userName","logic":"notlike","value":"外部"},
{"field":"goodsDocDetailList.quantity","logic":"gt","value":"0"}
]
]
这些条件确保了只获取出库原因包含“菜鸟”、创建人名称不包含“外部”且商品数量大于0的数据。
数据加工与处理
在获取到原始数据后,我们需要对其进行初步加工。根据元数据配置中的beatFlat
字段,我们将嵌套的goodsDocDetailList
字段展平,以便后续处理和分析。
此外,通过autoFillResponse: true
设置,系统会自动填充响应数据,这简化了我们对返回结果的处理。
异常处理与补偿机制
为了应对可能出现的数据遗漏或异常情况,我们配置了补偿机制:
"omissionRemedy":{
"crontab":"1 2 * * *",
"takeOverRequest":[
{
"field":"startDate",
"value":"_function FROM_UNIXTIME( unix_timestamp() -259200 , '%Y-%m-%d %H:%i:%s' )",
"label":"接管字段",
"formModel":{"enable":false},
"tableModel":{"enable":false},
"physicalModel":{"enable":false},
"type":"string"
}
]
}
该补偿机制通过定时任务(每天凌晨2:01)重新拉取过去三天的数据,以确保没有遗漏。
实践案例
假设我们需要获取2023年10月1日至2023年10月2日期间所有符合条件的出库单信息,可以构造如下请求:
{
"pageIndex": "1",
"pageSize": "50",
"startDate": "2023-10-01T00:00:00",
"endDate": "2023-10-02T23:59:59",
"inouttype": "204"
}
返回的数据将经过上述过滤条件和展平处理,最终得到符合业务需求的结构化数据。
通过以上步骤,我们完成了从吉客云调用接口获取并加工数据的全过程。这一步骤不仅是整个数据集成生命周期的重要环节,也是确保后续数据转换与写入顺利进行的基础。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。
配置元数据
我们首先来看一下元数据配置,这是实现ETL转换和写入的关键。以下是一个具体的元数据配置示例:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "merge",
"field": "goodsDocDetailList_ownerName,goodsdocNo",
"bodyName": "items",
"header": ["goodsdocNo", "inOutDate", "goodsDocDetailList_ownerName"],
"body": ["goodsDocDetailList_goodsNo", "goodsDocDetailList_quantity", "warehouseCode"]
},
...
}
数据请求与清洗
在这一步,我们从源平台获取原始数据,并对其进行清洗和预处理,以确保数据质量和一致性。这个过程包括去除冗余字段、标准化数据格式以及校验数据完整性。
数据转换
接下来,我们将清洗后的数据进行转换,使其符合金蝶云星空API接口的要求。根据上述元数据配置,我们可以看到以下关键字段及其对应关系:
FJKYNo
对应{goodsdocNo}
FBillTypeID
固定值QTCKD97_SYS
FStockOrgId
对应{goodsDocDetailList_ownerName}
FDate
对应{inOutDate}
FOwnerIdHead
对应{goodsDocDetailList_ownerName}
此外,明细信息(FEntity
)中的字段也需要进行相应的映射和转换:
FMATERIALID
对应{{items.goodsDocDetailList_goodsNo}}
FStockId
对应{warehouseCode}
FQty
对应{{items.goodsDocDetailList_quantity}}
这些字段通过解析器(如 ConvertObjectParser
)进行必要的转换,以确保符合目标平台的数据格式要求。
数据写入
完成数据转换后,使用HTTP POST方法将处理后的数据写入金蝶云星空API接口。具体请求示例如下:
{
"FormId": "STK_MisDelivery",
"IsAutoSubmitAndAudit": true,
"IsVerifyBaseDataField": true,
...
}
该请求包含了业务对象表单ID、是否自动提交并审核、是否验证基础资料等参数,这些参数确保了写入过程的顺利进行。
API调用与响应处理
在实际操作中,我们需要处理API调用的响应,确保每个请求都成功执行。如果出现错误,需要根据错误信息进行调试和修正。例如,如果某个字段映射错误或缺失,会导致API调用失败,此时需要重新检查元数据配置和源数据。
通过以上步骤,我们可以实现从源平台到金蝶云星空API接口的数据无缝对接。这不仅提高了数据处理效率,还保证了业务流程的一致性和准确性。在实际项目中,根据具体需求调整元数据配置,可以灵活地适应不同的数据集成场景。