金蝶云星空数据集成到旺店通·企业奇门的技术实践
在复杂多变的商业环境中,实现系统间的数据无缝对接已经成为企业高效运营的重要保障。本篇技术案例将深入探讨如何通过轻易云数据集成平台,成功实现金蝶云星空与旺店通·企业奇门之间的数据对接。在具体操作中,我们主要关注直接调拨单对接其他出库单这一实际业务需求,方案名称为“直接调拨单对接其他出库单==>金蝶—旺店通”。
-
保证集成数据不漏单 在应用executeBillQuery接口从金蝶云获取调拨单时,通过定时任务可靠地抓取接口数据,是确保不漏掉业务订单信息的关键。一旦抓取到新数据,本次处理则立即结束,为下一次调用准备充足时间。
-
大量数据快速写入 为了提高效率,将批量提取的数据传递到旺店通,并调用wdt.stockout.order.push API进行批量写入。在这里需要特别注意的是,一次性处理的大量数据会影响系统性能,因此要根据实际情况合理设置分页和限流策略。
-
实时监控与日志记录 实现整个过程的透明化管理至关重要。每当触发一次API调用,都应当生成详细的日志记录,并且配合实时监控组件,以便了解当前所有处理中或已完成的数据状态。这不仅能有效防止问题,还能在出现异常状况时迅速响应并提升修复效率。
-
异构系统间格式转换 金蝶云星空与旺店通·企业奇门之间存在一定的数据格式差异。为了确保两者顺利衔接,需要设立一套完整而可靠的映射规则,从字段名称、类型,到值域范围均需完全匹配。此外,这些规则还必须满足灵活调整,以适应未来可能发生的新变化。
-
错误重试机制 尽管我们尽可能优化各个环节,但意外情况总是难以避免。比如网络波动导致请求失败,此时预先设计好的异常处理和重试机制就显得尤为重要。通过精准捕获错误信息并重新尝试发送,无疑大幅提升整体稳定性和容错率。
本文将详细介绍上述步骤及相关技术细节,旨在帮助大家更好地理解如何利用现代化工具高效、安全地进行系统集成工作。同时,也希望能够提供一些实战经验,为类似场景下的问题解决提供参考依据。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口来获取并加工数据。
接口配置与请求参数
首先,我们需要理解元数据配置中的各个字段及其作用。以下是关键字段的解析:
- api:
"executeBillQuery"
,表示我们调用的是金蝶云星空的查询接口。 - method:
"POST"
,请求方法为POST。 - number:
"FBillNo"
,单据编号。 - id:
"FBillEntry_FEntryID"
,分录ID。 - idCheck:
true
,表示需要进行ID检查。
请求参数主要分为两部分:request
和otherRequest
。
request部分
[
{"field":"FBillEntry_FEntryID","label":"FEntryID","type":"string","describe":"FEntryID","value":"FBillEntry_FEntryID"},
{"field":"FID","label":"实体主键","type":"string","describe":"实体主键","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
{"field":"FDocumentStatus","label":"单据状态","type":"string","describe":"单据状态","value":"FDocumentStatus"},
{"field":"FStockOrgId_FNumber","label":"调入库存组织","type":"string","describe":"调入库存组织","value":"FStockOrgId.FNumber"},
// ...其他字段省略
]
这些字段定义了我们需要从金蝶云星空获取的数据项。每个字段包含以下信息:
field
: 字段名label
: 字段标签type
: 数据类型describe
: 字段描述value
: 对应的实际值
otherRequest部分
[
{"field":"Limit","label":"最大行数","type":"string","describe":"金蝶的查询分页参数","value":"500"},
{"field":"FieldKeys","label":"需查询的字段key集合","type":"array","describe":"金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber", "parser":{"name": "ArrayToString", "params": ","}},
{"field": "TopRowCount", "label": "返回总行数", "type": "int", "describe": "金蝶的查询分页参数"},
{"field": "FilterString", "label": "过滤条件", "type": "string", "describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=", "value": "FDocumentStatus='C' and FSrcStockId.FNumber='001' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'"},
{"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "STK_TransferDirect"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数"}
]
这些字段用于控制查询行为,例如分页、过滤条件等。
调用接口
在配置好元数据后,我们可以通过轻易云平台发起对金蝶云星空接口的调用。以下是一个示例请求:
{
"apiName": "/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery",
"methodName": "",
// 请求体内容
{
...
// 填充请求参数
...
// 填充otherRequest参数
...
}
}
数据清洗与加工
获取到数据后,我们需要对其进行清洗和加工。这一步通常包括以下几个步骤:
- 数据验证:确保每个字段的数据类型和内容符合预期。例如,检查日期格式是否正确,数值是否在合理范围内等。
- 数据转换:根据业务需求,将原始数据转换为目标系统所需的格式。例如,将日期格式从
YYYY-MM-DD
转换为MM/DD/YYYY
。 - 数据过滤:根据特定条件筛选出需要的数据。例如,只保留状态为“已审核”的记录。
实践案例
假设我们需要从金蝶云星空中获取所有状态为“已审核”的直接调拨单,并将其导入到旺店通系统中。具体步骤如下:
- 配置元数据:如上文所述,设置好所有必要的字段和过滤条件。
- 发起请求:通过轻易云平台调用
executeBillQuery
接口,并传递配置好的请求参数。 - 处理响应:对返回的数据进行清洗、转换和过滤。
- 写入目标系统:将处理后的数据通过相应接口写入旺店通系统。
通过以上步骤,我们可以实现从金蝶云星空到旺店通系统的数据无缝对接。这不仅提高了工作效率,还确保了数据的一致性和准确性。
数据集成案例:将源平台数据ETL转换并写入旺店通·企业奇门API接口
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)处理,转为目标平台——旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。
API接口及元数据配置
首先,我们需要了解目标API接口及其元数据配置。本文的目标API接口为wdt.stockout.order.push
,该接口用于将其他出库单的数据推送到旺店通系统中。以下是该接口的元数据配置:
{
"api": "wdt.stockout.order.push",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "outer_no",
"label": "外部单号",
"type": "string",
"describe": "外部系统的唯一单据编号,避免重复推送数据",
"value": "{FBillNo}"
},
{
"field": "warehouse_no",
"label": "仓库编号",
"type": "string",
"describe": "代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置)",
"value": "{FSrcStockId_FNumber}"
},
{
"field": "remark",
"label": "备注",
"type": "string",
"describe": "其他出库单备注",
"value": "调拨出库"
},
{
"field": "reason",
"label": "其他出库原因",
"type": "string",
"describe": ""
},
{
"field": "detail_list",
...
}
],
...
}
配置与转换步骤
-
提取源数据: 首先,从源平台提取需要转换的数据。假设我们从金蝶系统中提取了一个调拨单,其字段包括
FBillNo
(单据编号)、FSrcStockId_FNumber
(源仓库编号)、FMaterialId_FNumber
(物料编码)、FQty
(数量)等。 -
转换数据格式: 根据旺店通API接口的要求,将提取的数据进行格式转换。具体步骤如下:
- 外部单号:将金蝶系统中的
FBillNo
字段映射到旺店通API的outer_no
字段。 - 仓库编号:将金蝶系统中的
FSrcStockId_FNumber
字段映射到旺店通API的warehouse_no
字段。 - 备注:固定值“调拨出库”映射到旺店通API的
remark
字段。 - 货品列表节点:将金蝶系统中的物料编码和数量分别映射到旺店通API的
detail_list.spec_no
和detail_list.num
字段。
- 外部单号:将金蝶系统中的
-
生成请求报文: 根据上述映射关系,生成符合旺店通API要求的请求报文。例如:
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
outer_no: '12345',
warehouse_no: 'WH001',
remark: '调拨出库',
reason: '',
detail_list: [
{ spec_no: 'MAT001', num: '10' },
{ spec_no: 'MAT002', num: '20' }
],
is_check: '1'
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
- 发送请求并写入目标平台: 使用HTTP POST方法,将生成的请求报文发送至旺店通·企业奇门API接口,实现数据写入。
实践案例
假设我们有一条从金蝶系统中提取的数据如下:
{
FBillNo: '12345',
FSrcStockId_FNumber: 'WH001',
FMaterialId_FNumber: ['MAT001', 'MAT002'],
FQty: ['10', '20']
}
根据上述配置和步骤,我们最终生成并发送给旺店通·企业奇门API接口的数据报文如下:
{
outer_no: '12345',
warehouse_no: 'WH001',
remark: '调拨出库',
reason: '',
detail_list: [
{ spec_no: 'MAT001', num: '10' },
{ spec_no: 'MAT002', num: '20' }
],
is_check: '1'
}
通过轻易云数据集成平台,我们可以高效地完成从金蝶系统到旺店通系统的数据ETL转换和写入过程,实现不同系统间的数据无缝对接。这不仅提高了业务流程的自动化程度,也确保了数据的一致性和准确性。