案例分享:将马帮数据集成到金蝶云星空
本案例中,我们聚焦于如何高效、可靠地将马帮平台的销售出库发货数据集成至金蝶云星空系统。通过轻易云数据集成平台,实现了两个异构系统之间的数据无缝传输,确保业务流程的顺畅运行和数据的一致性。
首先,为了避免在数据集成过程中出现订单遗漏的问题,我们采用了定时抓取机制,每隔固定时间周期调用马帮平台的 order-get-order-list
接口获取最新的订单信息。这一过程得到了实时监控与日志记录功能的支持,确保每一次请求和处理都可追溯且透明。
其次,大量订单数据需要快速、安全地写入到金蝶云星空。这其中涉及两个重要环节:批量处理和限流控制。在实际操作中,我们使用批量写入接口 batchSave
将整理后的订单信息推送至金蝶云,同时设置限流策略,以防止因瞬间大量请求导致系统崩溃或响应迟缓。为了进一步优化性能,还对分页机制进行了细致调整,确保大规模数据可以平稳过渡。
与此同时,两套系统的数据格式存在显著差异。为解决这一问题,在编排工作流时特别注重字段映射及其转换规则,通过自定义的数据映射对接方案,将马帮中的多种字段准确匹配到金蝶云对应位置。此外,对接过程中的异常处理也进行了精细化管理,通过错误重试机制保证即使发生网络波动或短暂故障,也能自动恢复并继续完成后续任务。
以上,是我们在实施“销售出库发货 马帮 => 金蝶”方案中的一些关键技术点。在文章主体部分,我们将详细介绍具体实现步骤,以及各项技术要素是怎样协同工作的。
调用马帮接口order-get-order-list获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用马帮接口order-get-order-list
,并对获取的数据进行加工处理。
接口配置与调用
首先,我们需要配置和调用马帮的order-get-order-list
接口。该接口采用POST方法进行数据请求,主要用于查询订单列表。以下是元数据配置的关键部分:
{
"api": "order-get-order-list",
"effect": "QUERY",
"method": "POST",
"number": "platformOrderId",
"id": "platformOrderId",
"idCheck": true,
...
}
在这个配置中,api
字段指定了要调用的接口名称,method
字段定义了HTTP请求方法为POST,number
和id
字段则用于标识订单的唯一性。
请求参数设置
为了确保请求能够准确获取所需的数据,我们需要设置相应的请求参数。以下是一些关键参数及其配置:
{
"request": [
{"field": "status", "label": "状态", "type": "string", "value": "3"},
{"field": "expressTimeStart", "label": "发货时间开始时间", "type": "datetime", "value": "{{LAST_SYNC_TIME|datetime}}"},
{"field": "expressTimeEnd", "label": "发货时间结束时间", "type": "datetime", "value": "{{CURRENT_TIME|datetime}}"},
{"field": "page", "label": "当前页数", "type": "int", "value": "{PAGINATION_START_PAGE}"}
]
}
status
: 设置为"3",表示查询已发货订单。expressTimeStart
: 使用上次同步时间作为发货时间的开始时间。expressTimeEnd
: 使用当前时间作为发货时间的结束时间。page
: 分页参数,用于控制查询结果的分页。
这些参数确保我们能够获取到符合条件的订单数据,并且支持分页查询,以便处理大量数据时能够逐页获取。
数据过滤与清洗
在获取到原始数据后,我们需要对其进行过滤和清洗,以确保数据质量。元数据配置中定义了条件过滤规则:
{
"condition":[
[{"field":"platformOrderId","logic":"like","value":"FH"}],
[{"field":"remark","logic":"notlike","value":"拆分订单"}]
]
}
platformOrderId
: 要求订单ID包含"FH"。remark
: 排除备注中包含"拆分订单"的记录。
这些条件过滤规则帮助我们筛选出符合业务需求的数据,从而提高数据处理效率和准确性。
异常处理与补偿机制
在实际操作过程中,可能会遇到各种异常情况,例如网络故障、接口超时等。为了应对这些情况,我们可以设置补偿机制。例如,通过定时任务(crontab)来定期重新请求未成功的数据:
{
omissionRemedy: {
crontab: '35 */2 * * *',
takeOverRequest: [
{
field: 'expressTimeStart',
label: '修改时间开始段',
type: 'string',
is_required: true,
value: "_function FROM_UNIXTIME( unix_timestamp() -28800 , '%Y-%m-%d %H:%i:%s' )"
}
]
}
}
该配置表示每两小时重新尝试请求一次未成功的数据,并使用当前时间减去8小时作为新的开始时间段。这种补偿机制确保了数据集成过程中的可靠性和完整性。
数据自动填充与写入
最后,在获取并清洗完数据后,我们可以利用平台提供的数据自动填充功能,将处理后的数据写入目标系统。例如,将销售出库发货信息从马帮系统同步到金蝶系统:
{
autoFillResponse: true,
...
}
启用自动填充功能后,平台会根据预先定义的映射关系,将符合条件的数据自动写入目标系统,从而实现无缝对接和高效的数据同步。
通过上述步骤,我们完成了从调用马帮接口获取订单列表,到对数据进行过滤、清洗、异常处理以及最终写入目标系统的全过程。这一系列操作不仅提高了数据集成效率,还保证了数据的一致性和可靠性。
使用轻易云数据集成平台实现销售出库数据转换与写入金蝶云星空API接口
在数据集成生命周期的第二步中,我们将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下将详细介绍如何通过元数据配置实现这一过程。
元数据配置解析
在本案例中,我们的目标是将销售出库发货数据从马帮系统转换并写入金蝶云星空系统。我们使用的API接口为batchSave
,请求方法为POST
。以下是关键字段及其配置解析:
-
单据类型(FBillTypeID)
- 类型:字符串
- 描述:单据类型
- 解析器:ConvertObjectParser,参数为FNumber
- 固定值:XSCKD01_SYS
-
单据编号(FBillNo)
- 类型:字符串
- 描述:单据编号
- 值:{platformOrderId}
-
日期(FDate)
- 类型:字符串
- 描述:日期
- 值:{expressTime}
-
销售组织(FSaleOrgId)
- 类型:字符串
- 描述:组织
- 解析器:ConvertObjectParser,参数为FNumber
- 固定值:100
-
客户(FCustomerID)
- 类型:字符串
- 描述:基础资料
- 解析器:ConvertObjectParser,参数为FNumber
- 动态值:_findCollection find FCustomerID from a39c8cc3-bc0f-3b09-84e4-733c8ceec0a2 where FBillNo={platformOrderId}
-
销售部门(FSaleDeptID)
- 类型:字符串
- 描述:基础资料
- 解析器:ConvertObjectParser,参数为FNumber
- 固定值:BM000008ST
-
发货组织(FStockOrgId)
- 类型:字符串
- 描述:组织
- 解析器:ConvertObjectParser,参数为FNumber
- 固定值:100
明细信息配置
明细信息是一个数组结构,每个订单项包含多个字段,如下:
-
物料编码(FMaterialID)
- 类型:字符串
- 描述:基础资料
- 解析器:ConvertObjectParser,参数为FNumber
- 动态值: {{orderItem.stockSku}}
-
实发数量(FRealQty)
- 类型: 字符串
- 描述: 数量
- 动态值: {{orderItem.platformQuantity}}
-
含税单价(FTaxPrice)
- 类型: 字符串
- 描述: 单价
- 动态值: {{orderItem.sellPriceOrigin}}
-
仓库(FStockID)
- 类型: 字符串
- 描述: 基础资料
- 解析器: ConvertObjectParser,参数为FNumber
- 动态值: _findCollection find FNumber from 900d01d5-e1d0-39fd-b201-9d985b76f46f where F_VPWO_Text_qtr={stockWarehouseId}
关联信息配置
关联信息也是一个数组结构,用于记录源单表名、下推关系、源单ID和表体ID等:
-
源单表名(FEntity_Link_FSTableName) – 类型: 字符串 – 值: T_SAL_DELIVERYNOTICEENTRY
-
下推关系(FEntity_Link_FRuleId) – 类型: 字符串 – 值: SAL_DELIVERYNOTICE-SAL_OUTSTOCK
-
源单ID(FEntity_Link_FSBillId) – 类型: 字符串 – 动态值: _findCollection find FID from a39c8cc3-bc0f-3b09-84e4-733c8ceec0a2 where FBillNo={platformOrderId}
-
表体ID(FEntity_Link_FSId) – 类型: 字符串 – 动态值: _findCollection find FEntity_FENTRYID from a39c8cc3-bc0f-3b09-84e4-733c8ceec0a2 where FBillNo={platformOrderId} FMaterialID_FNumber={{orderItem.platformSku}}
其他字段配置
此外,还有一些其他字段需要配置,如货代姓名、货运单号、货运重量和预估运费等:
-
货代姓名(F_GOLO_TEXT23) – 类型: 字符串 – 值: {myLogisticsChannelName}
-
货运单号(F_VPWO_TEXT5) – 类型: 字符串 – 值: {trackNumber}
-
货运重量(F_VPWO_TEXT6) – 类型: 字符串 – 值: {orderWeight}
-
预估运费(F_VPWO_TEXT7) – 类型: 字符串 – 值: {shippingPreCost}
请求头和其他设置
请求头中还需要包含一些固定的业务对象表单ID、操作类型以及是否自动提交和审核等设置:
-
业务对象表单Id (FormId) – 必须填写金蝶的表单ID,如SAL_OUTSTOCK
-
执行的操作 (Operation) – 固定值为Save
-
提交并审核 (IsAutoSubmitAndAudit) – 布尔类型,固定值true
-
验证基础资料 (IsVerifyBaseDataField) – 布尔类型,默认false,可选true以验证所有基础资料有效性。
通过上述详细配置,我们可以确保从马帮系统获取的数据经过ETL转换后,以符合金蝶云星空API接口要求的格式进行写入,从而实现两个异构系统间的数据无缝对接。