金蝶云星空数据集成:其他出库单OK在用案例分享
在实际业务场景中,金蝶云星空系统往往需要处理大量的业务数据,其中确保数据的准确性和及时性至关重要。本次技术案例主要讨论如何通过轻易云数据集成平台,将金蝶云星空中的“其他出库单”高效、安全地集成到同一系统。
为了实现这一目标,我们采取了以下具体措施:
-
高吞吐量的数据写入能力: 采用轻易云平台提供的
batchSave
API,通过批量处理机制将大量出库单快速、稳定地写入金蝶云星空系统。这种方式不仅提高了数据处理时效性,还大幅降低了网络延迟和服务器压力。 -
集中监控与告警系统: 配置集中监控和告警系统,实现对整个数据集成过程的实时跟踪。借助可视化界面,运维人员能够清晰掌握每一个节点的数据流动情况,并且在出现异常时及时收到告警信息,从而迅速定位并解决问题。
-
API资产管理功能: 为了最大化利用企业资源,我们利用金蝶云星空 API 资产管理模块,对接入以及调用状况进行全面分析与评估。使用统一视图帮助我们明确各接口的使用频率和性能表现,进而优化配置,提高整体运行效率。
-
自定义转换逻辑与实时检测: 根据实际业务需求,设计了一套自定义的数据转换逻辑,使得从源端获取的数据经过计算、加工后适配于目标端。同时,引入消息队列技术,结合 ExecuteBillQuery API 定期抓取待采购订单,不仅避免漏单现象,也能即使发现并处理潜在的数据质量问题。
-
分布式错误重试机制及限流控制策略 由于一些意外因素可能导致接口请求失败,为此我们引入分布式错误重试机制,在保存过程中记录完整日志,当某个批次出现故障时,可以选择对应时间段进行重发操作,同时实施严格的限流策略防止突然新增的大量订单压垮服务器,提高服务稳健度。
通过以上多措并举,本方案成功达到了预期效果,不仅极大提升了“其他出库单”的处理效率,也确保整个流程透明可控。本次案例为类似项目提供了一定参考价值,希望有助于行业同仁进一步理解并应用这些技术手段。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成生命周期的第一步,我们需要从源系统获取数据,并对其进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,获取其他出库单的数据。
接口调用配置
首先,我们需要配置API调用的元数据,以便正确地请求和处理数据。以下是元数据配置的详细内容:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FEntity_FEntryID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FEntity_FEntryID","label":"FEntryID","type":"string","value":"FEntity_FEntryID"},
{"field":"FID","label":"实体主键","type":"string","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
{"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
{"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"},
{"field":"FDate","label":"日期","type":"string","value":"FDate"},
{"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","value":"FBillTypeID.FNumber"},
{"field":"FNOTE","label":"备注","type":"string","value":"FNOTE"},
{"field":"FMATERIALID_FNumber","label":"物料编码","type":"string","value":"FMATERIALID.FNumber"},
{"field":"FSTOCKID","label":"收货仓库","type":"string","value":"FSTOCKID"},
{"field":"FQty","label":"实收数量","type":"string","value":"FQty"},
{"field":"FPrice","label":"成本价","type":"string","value":"FPrice"},
{"field": "FAmount", "label": "总成本", "type": "string", "value": "FAmount"},
// ...省略部分字段...
],
"otherRequest":[
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
{"field": "TopRowCount", "label": "返回总行数", "type": int, describe: 金蝶的查询分页参数},
{"field": FilterString, label: 过滤条件, type: string, describe: 示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=, value: FApproveDate >='{{LAST_SYNC_TIME|date}}' and FSTOCKID.fnumber<>'406'},
// ...省略部分字段...
]
}
请求参数解析
- 基本请求字段:这些字段包括
FBillNo
(单据编号)、FID
(实体主键)、FDocumentStatus
(单据状态)等。这些字段用于指定我们需要查询的数据范围和内容。 - 分页参数:为了处理大量数据,我们使用了分页机制。
Limit
指定每页返回的数据量,StartRow
指定从哪一行开始读取。 - 过滤条件:通过设置
FilterString
,我们可以对查询结果进行过滤。例如,过滤条件可以是某个时间段内的数据或特定库存组织的数据。
数据请求与清洗
在配置好元数据后,我们通过轻易云平台发起API请求,调用金蝶云星空的executeBillQuery
接口。以下是一个示例请求体:
{
FormId: 'STK_MisDelivery',
FieldKeys: 'FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID.FNumber,FNOTE,...',
FilterString: 'FApproveDate >= \'2023-01-01\' and FSTOCKID.fnumber<>\'406\'',
Limit: 500,
StartRow: 0
}
在接收到响应后,我们需要对数据进行初步清洗和转换。例如,将日期格式统一、去除无效字段、根据业务需求计算新的字段等。
数据转换与写入
清洗后的数据将进入下一阶段,即数据转换与写入。在这个阶段,我们会将处理后的数据写入目标系统或数据库中,以供后续使用。
通过以上步骤,我们实现了从金蝶云星空获取其他出库单数据,并对其进行了初步加工,为后续的数据处理奠定了基础。这种全生命周期管理的方法确保了每个环节都透明可控,大大提升了业务效率和准确性。
轻易云数据集成平台:ETL转换与金蝶云星空API接口集成技术案例
在轻易云数据集成平台的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,使其符合目标平台金蝶云星空API接口的格式要求,并最终写入目标平台。本文将详细探讨这一过程中的技术细节,特别是如何配置和使用元数据进行高效的数据转换和写入操作。
元数据配置解析
元数据配置是ETL过程中的核心部分,它定义了如何将源数据映射到目标系统的字段。以下是一个详细的元数据配置示例:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "FBillNo,FBillTypeID_FNumber,FDate,FDEPTID_FName,FCustId_FName,FNOTE,FDJZDYyongtu_FNumber",
"bodyName": "details",
"bodySum": ["FQty"],
"header": ["FBillTypeID_FNumber","FBillNo","FDate","FDEPTID_FName","FCustId_FName","FNOTE","FDJZDYyongtu_FNumber","FStockOrgId_FNumber"],
"body": ["FMATERIALID_FNumber","FQty","FSTOCKID","FEntryNote","FStockOrgId_FNumber"]
},
...
}
该配置文件定义了与金蝶云星空API接口交互的具体方法和字段映射关系。以下是关键部分的解析:
-
API与方法:
api: batchSave
表示调用金蝶云星空的批量保存接口。method: POST
指定HTTP请求方法为POST。
-
操作类型:
operation.method: merge
表示对数据进行合并操作。operation.field
和operation.bodyName
定义了主表和子表的数据字段。
-
头部与主体字段:
header
和body
分别定义了主表和子表需要映射的字段列表。
字段映射与转换
在ETL过程中,字段映射和转换是关键步骤。以下是一些重要字段的具体配置及其解释:
-
单据编号(FBillNo):
{ "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{FBillNo}" }
直接将源系统中的单据编号映射到目标系统。
-
库存组织(FStockOrgId):
{ "field": "FStockOrgId", "label": "库存组织", "type": "string", "describe": "组织", ... "value": "_function case when '{FStockOrgId_FNumber}' ='100' then '125' when '{FStockOrgId_FNumber}' ='202' then '126' when '{FStockOrgId_FNumber}' ='204' then '121' else '120' end" }
使用函数进行条件判断,根据源系统中的库存组织编码转换为目标系统所需的编码。
-
客户(FCustId):
{ ... "field": "FCustId", ... "parser": {"name":"ConvertObjectParser", ...}, ... "value":"{FCustId_FName}" }
使用
ConvertObjectParser
解析器,将客户名称从源系统格式转换为目标系统格式。 -
明细信息(FEntity):
{ ... { ... {"field":"FMaterialId", ...}, {"field":"FCMKBarCode", ...}, {"field":"FQty", ...}, {"field":"FStockId", ...}, {"field":"FOwnerTypeId", ...}, {"field":"FOwnerId", ...}, {"field":"FEntryNote", ...} ... } }
定义子表明细信息,包括物料编码、数量、发货仓库等字段,并使用相应解析器进行转换。
数据请求与验证
在将数据写入目标平台之前,需要进行必要的数据请求和验证:
-
业务对象表单ID:
{ ... {"field":"FormId", ...,"value":"STK_MisDelivery"}, ... }
指定业务对象表单ID为
STK_MisDelivery
,确保数据写入正确的业务对象。 -
提交并审核:
{ ... {"field":"IsAutoSubmitAndAudit", ...,"value":"false"}, ... }
设置是否自动提交并审核,通常设置为
false
以便手动控制审核流程。 -
验证基础资料有效性:
{ ... {"field":"IsVerifyBaseDataField", ...,"value":"true"}, ... }
启用基础资料有效性验证,确保所有基础资料在目标系统中都是有效的。
实际应用案例
假设我们需要将一批出库单从源系统导入到金蝶云星空,我们可以按照上述元数据配置进行ETL转换。具体步骤如下:
- 提取源系统中的出库单数据。
- 根据元数据配置进行字段映射和转换。
- 构建符合金蝶云星空API要求的数据结构。
- 调用金蝶云星空API接口,将转换后的数据批量写入目标系统。
通过以上步骤,可以实现从源系统到金蝶云星空的数据无缝对接,确保每个环节的数据准确性和一致性。这种方法不仅提高了数据处理效率,还大大减少了人工干预和错误率,为企业的信息化管理提供了有力支持。