技术案例分享:旺店通·企业奇门数据集成到金蝶云星空
在本文中,我们将深入探讨如何通过轻易云数据集成平台,实现从旺店通·企业奇门到金蝶云星空的数据无缝对接。本次系统对接的具体方案命名为“旺店通货品档案==>金蝶物料”。我们主要关注几方面技术细节,包括如何获取和处理接口数据、应对大规模数据写入以及保证整个流程的可靠性和高效性。
数据抓取与分页处理
为了定时可靠地抓取旺店通·企业奇门接口的数据,我们使用其公开API wdt.goods.query
。该API支持分页功能,能够按需返回指定数量的记录。然而,由于每次调用都会受到限流规则限制,这就要求我们设计一套自动化机制来有效管理请求频率及逐页提取数据。在实现过程中,特别需要注意的是确保所有批次数据都能成功获取,不遗漏任何一条记录。
大量数据快速写入与格式转换
当大量商品档案信息从旺店通获取后,需要快速且准确地写入到金蝶云星空。此步骤中,我们采用了金蝶提供的API batchSave
,这使得批量录入成为可能。但我们需要特别注意的是,两者之间字段格式和内容规范存在差异,因此首先要进行必要的数据映射和转换。这不只是简单的字段对应,更涉及到一些数值类型、日期格式等细节上的兼容调整,以保证最终进入ERP系统的数据质量。
异常处理与错误重试机制
考虑到网络环境的不稳定性以及各类操作中的意外情况,对异常处理机制进行了充分设计。一旦发生接口调用失败或其他异常状况,通过日志监控实时捕获错误并触发重试逻辑,可以保障整体流程不中断。此外,还借助轻易云强大的日志记录功能,实现了全程操作可视化,从而进一步提高问题定位和解决效率。
这一系列技术措施,使得我们在实际运行中不仅完成了强大的跨系统高效集成,同时也确保了业务过程中的一致性和完整性。关于更多详细实现步骤及代码示例,请参阅以下章节内容。
调用源系统旺店通·企业奇门接口wdt.goods.query获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.goods.query
来获取并加工数据。
接口配置与调用
首先,我们需要配置元数据以调用wdt.goods.query
接口。该接口主要用于查询旺店通中的货品档案信息。以下是元数据配置的关键部分:
{
"api": "wdt.goods.query",
"effect": "QUERY",
"method": "POST",
"number": "goods_no",
"id": "goods_no",
"name": "goods_no",
"idCheck": true,
"request": [
{
"field": "start_time",
"label": "开始时间",
"type": "string",
"describe": "按最后修改时间增量查询数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
"value": "{{LAST_SYNC_TIME|datetime}}"
},
{
"field": "end_time",
"label": "结束时间",
"type": "string",
"describe": "",
"value": "{{CURRENT_TIME|datetime}}"
}
],
...
}
请求参数解析
- start_time: 用于指定查询的开始时间,采用增量查询方式,以最后一次同步时间为起点。
- end_time: 用于指定查询的结束时间,通常设置为当前时间。
这两个参数确保了我们每次只获取自上次同步以来的新数据或变更数据,从而提高了数据处理效率。
分页处理
为了避免一次性拉取大量数据导致系统压力过大,我们采用分页机制:
"otherRequest":[
{
"field":"page_size",
"label":"分页大小",
...
"value":"{PAGINATION_PAGE_SIZE}"
},
{
"field":"page_no",
...
...
...
]
- page_size: 每页返回的数据条数,默认值为40。
- page_no: 页号,从0页开始。
分页机制确保了我们能够分批次地获取数据,避免了单次请求的数据量过大问题。
数据清洗与转换
在获取到原始数据后,需要对其进行清洗和转换,以符合目标系统(如金蝶物料)的要求。轻易云平台提供了自动填充响应(autoFillResponse)和扁平化处理(beatFlat)功能:
"autoFillResponse": true,
"beatFlat":["spec_list"]
- autoFillResponse: 自动填充响应字段,简化了开发工作。
- beatFlat: 将嵌套结构的字段(如spec_list)进行扁平化处理,使得数据结构更加简单明了。
实际应用案例
假设我们需要将从旺店通获取的货品档案信息同步到金蝶物料系统。首先,通过配置上述元数据,我们可以成功调用wdt.goods.query
接口获取所需的数据。接着,通过轻易云平台的数据清洗与转换功能,将原始数据转换为符合金蝶物料系统要求的格式,并最终写入目标系统。
例如,一个典型的请求可能如下所示:
{
"api_name":"wdt.goods.query",
...
...
}
通过这样的配置和调用,我们能够高效地实现不同系统间的数据无缝对接,确保业务流程的顺畅运行。
综上所述,通过合理配置元数据并利用轻易云平台的强大功能,我们可以高效地调用源系统接口获取并加工数据,为后续的数据集成工作打下坚实基础。
轻易云数据集成平台:将源数据转换并写入金蝶云星空API接口
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何使用轻易云数据集成平台配置元数据,实现这一过程。
API接口配置与元数据解析
在本次技术案例中,我们的目标是将旺店通货品档案的数据通过ETL转换后写入金蝶云星空系统。我们需要调用金蝶云星空的batchSave
API接口,该接口支持批量保存物料信息。以下是我们所需的元数据配置:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field":"FName","label":"名称","type":"string","describe":"名称","value":"{goods_name}"},
{"field":"FNumber","label":"编码","type":"string","describe":"编码","value":"{spec_list_spec_no}"},
{"field":"FDescription","label":"描述","type":"string","describe":"描述"},
{"field":"FCreateOrgId","label":"创建组织","type":"string","describe":"创建组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
{"field":"FUseOrgId","label":"使用组织","type":"string","describe":"使用组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"},
{"field":"FCreatorId","label":"创建人","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FSpecification","label":"规格型号","type":"string","describe":"规格型号","value":"{spec_list_spec_code}"},
{"field":"FMnemonicCode","label":"助记码","type": "string", "describe": "助记码"},
{"field": "FMaterialGroup", "label": "物料分组", "type": "string", "describe": "物料分组",
"parser": {"name": "ConvertObjectParser", "params": "FNumber"},
"value": "_function CASE '{class_name}' WHEN '无' THEN '' ELSE '{class_name}' END"
},
{"field": "F_USTY_ZTM", "label": "主条码", "type": "string",
"value": "{spec_list_barcode}"
},
{"field": "F_USTY_PP", "label": "品牌",
"type": "string",
"parser": {"name": "ConvertObjectParser",
"params":
{
// 参数配置
}
}
},
// 更多字段配置...
],
// 子实体配置
// ...
}
数据字段映射与转换
- 字段映射:我们需要将源平台的数据字段映射到目标平台所需的字段。例如,
goods_name
映射到FName
,spec_list_spec_no
映射到FNumber
等。 - 字段转换:有些字段需要进行特定的转换操作。例如,物料分组字段
class_name
需要通过一个条件判断进行转换:{ ... { field: 'FMaterialGroup', label: '物料分组', type: 'string', describe: '物料分组', parser: { name: 'ConvertObjectParser', params: 'FNumber' }, value: "_function CASE '{class_name}' WHEN '无' THEN '' ELSE '{class_name}' END" } ... }
子实体处理
在金蝶云星空API中,有些信息是以子实体形式存在的,例如库存信息、销售信息和采购信息。这些子实体也需要进行相应的映射和转换:
{
...
{
field: 'SubHeadEntity',
label: '基本',
type: 'object',
describe: '基本',
children: [
{ field: 'FErpClsID', label: '物料属性', type: 'string', describe: '物料属性' },
{ field: 'FBaseUnitId', label: '基本单位', type: 'string', describe: '基本单位', parser: { name: 'ConvertObjectParser', params: 'FNumber' }, value: "_function CASE '{unit_name}' WHEN '' THEN 'Pcs' ELSE '{unit_name}' END" },
{ field: 'FCategoryID', label: '存货类别', type: 'string', describe: '存货类别', parser:{ name:'ConvertObjectParser', params:'FNumber'}, value:'CHLB08_SYS'},
// 更多子实体字段...
]
},
...
}
操作配置
最后,我们需要配置操作参数,以确保数据正确写入并提交审核:
{
...
{
field:"FormId",
label:"业务对象表单Id",
type:"string",
describe:"必须填写金蝶的表单ID如:PUR_PurchaseOrder",
value:"BD_MATERIAL"
},
{
field:"Operation",
label:"执行的操作",
type:"string",
value:"Save"
},
{
field:"IsAutoSubmitAndAudit",
label:"提交并审核",
type:"bool",
value:true
},
{
field:"IsVerifyBaseDataField",
label:"验证基础资料",
type:"bool",
describe:"是否验证所有的基础资料有效性,布尔类,默认false(非必录)",
value:true
}
}
通过上述步骤,我们可以将源平台的数据经过ETL转换后,成功写入到金蝶云星空系统中。这一过程不仅提高了数据处理效率,也确保了数据的一致性和准确性。