吉客云数据集成到金蝶云星空:物料对接-已测试
在企业的日常运营中,准确、实时的数据流动是保障业务效率和决策质量的关键。本文分享一个成功地将吉客云数据集成到金蝶云星空的技术案例,通过灵活自定义的数据转换逻辑和高吞吐量的数据写入能力,实现了高效、安全的系统对接。本次案例运行方案名为“物料对接-已测试”。
挑战与需求
- 批量数据处理:需要快速抓取大量吉客云接口erp.storage.goodslist中的数据,并确保大批量数据能够被稳定写入至金蝶云星空。
- API接口调用与管理:合理调用并管理吉客云API和金蝶云星空API,优化请求频率,避免分页及限流问题。
- 实时状态监控:实现从数据抓取到写入全流程的实时监控,以及异常处理机制,以保证不漏单、不重复记录及错误重试。
这些挑战要求我们设计一个兼顾速度与稳定性的解决方案,并通过轻易云平台高效完成各项任务。下文将具体阐述如何设置连接参数,自定义转换逻辑,并利用可视化工具有效监控整个集成过程。
解决方案概览
为了满足上述需求,本次实施过程中我们采用以下主要策略:
- 第一步,从吉客云获取要处理的数据列表,通过
erp.storage.goodslist
API进行定时可靠地抓取。 - 接下来,对获取的数据进行必要格式调整,以匹配金蝶云星空所需格式,这一步可以通过轻易平台上的自定义转换逻辑模块来实现。
- 将经过处理后的批量数据信息使用
batchSave
API提交至金蝶云星空系统,在此过程中特别注意分页和限流控制以确保系统稳定性。
此外,我们还部署了集中式监控与告警系统,帮助持续跟踪各个数据集成任务状态,当出现异常情况时即时告警并触发自动重试机制,提高整个流程的鲁棒性与可靠性。
以上就是本案例背景及整体思路,下篇文章会详细分解每一部分操作步骤,包括具体API调用示例以及异常场景下的处理办法。
调用吉客云接口erp.storage.goodslist获取并加工数据
在数据集成生命周期的第一步,我们需要从源系统获取数据,并对其进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用吉客云接口erp.storage.goodslist
来实现这一过程。
接口调用配置
首先,我们需要配置元数据以便正确调用吉客云的API接口。以下是关键的元数据配置项:
- api:
erp.storage.goodslist
- effect:
QUERY
- method:
POST
- number:
goodsNo
- id:
goodsNo
- idCheck:
true
这些配置项定义了我们要调用的API名称、请求类型(POST)、以及用于标识物料的字段goodsNo
。
请求参数设置
为了确保接口调用能够返回我们所需的数据,我们需要设置请求参数。这些参数包括分页信息、时间范围和过滤条件。以下是具体的请求参数配置:
"request": [
{"field":"pageIndex","label":"分页页码","type":"string"},
{"field":"pageSize","label":"分页页数","type":"string","value":"100"},
{"field":"startDate","label":"创建起始时间","type":"string","value":"{{LAST_SYNC_TIME|datetime}}"},
{"field":"endDate","label":"创建结束时间","type":"string","value":"{{CURRENT_TIME|datetime}}"},
{"field":"isBlockup","label":"是否停用","type":"string"},
{"field":"isPackageGood","label":"是否组合装","type":"string"}
]
这些参数中,pageIndex
和pageSize
用于分页控制,确保每次请求不会返回过多的数据。startDate
和endDate
则用于限定查询的时间范围,分别取上次同步时间和当前时间。此外,还可以根据业务需求添加其他过滤条件,如是否停用(isBlockup
)和是否为组合装(isPackageGood
)。
数据过滤条件
为了进一步精确地筛选出我们需要的数据,可以在元数据中添加条件过滤。例如,我们可以排除某些特定公司的物料:
"condition": [
[{"field": "ownerName", "logic": "notin", "value": "上海弧秒科技有限公司,上海幸亲国际贸易有限公司"}]
]
这个条件表示排除所有属于“上海弧秒科技有限公司”和“上海幸亲国际贸易有限公司”的物料。
自动填充响应
轻易云平台提供了自动填充响应功能,这使得我们在处理API响应时更加便捷。通过设置autoFillResponse: true
,平台会自动将API返回的数据填充到预定义的结构中,减少了手动解析的工作量。
数据加工与清洗
在获取到原始数据后,我们通常需要对其进行初步加工与清洗。这一步骤可能包括:
- 字段映射与转换:将API返回的数据字段映射到目标系统所需的字段格式。
- 数据验证与过滤:检查数据完整性,去除无效或重复的数据。
- 格式化处理:例如,将日期格式统一转换为目标系统所需的格式。
通过这些步骤,我们可以确保从源系统获取的数据是干净且符合目标系统要求的,为后续的数据转换与写入打下坚实基础。
实践案例
假设我们要从吉客云获取某一时间段内所有未停用且非组合装的物料信息,并排除特定公司的物料。具体操作如下:
- 配置元数据:
{ "api": "erp.storage.goodslist", "effect": "QUERY", "method": "POST", "number": "goodsNo", "id": "goodsNo", "idCheck": true, "request": [ {"field": "pageIndex", "label": "分页页码", "type": "string"}, {"field": "pageSize", "label": "分页页数", "type": "string", "value": "100"}, {"field": "startDate", "label": "创建起始时间", "type": "string", "value": "{{LAST_SYNC_TIME|datetime}}"}, {"field": "endDate", "label": "创建结束时间", "type": ![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/S20.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台ETL转换与金蝶云星空API接口对接技术案例
在轻易云数据集成平台中,完成源数据的请求与清洗后,下一步是将这些数据进行ETL转换,并写入目标平台——金蝶云星空的API接口。本文将深入探讨这一过程中的技术细节和实现方法。
数据转换与写入配置
在进行数据转换时,我们需要依据目标平台的API接口要求,对数据进行格式化处理。以下是具体的元数据配置示例:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field":"FName","label":"名称","type":"string","value":"{goodsName}"},
{"field":"FNumber","label":"编码","type":"string","value":"{goodsNo}"},
{"field":"FSpecification","label":"规格型号","type":"string","value":"{skuName}"},
{"field":"FOldNumber","label":"旧物料编码","type":"string","value":"{goodsNo}"},
{"field":"FCreateOrgId","label":"创建组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"I01"},
{"field":"FUseOrgId","label":"使用组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"I01"},
{"field":"FBrand","label":"品牌","type":"string","value":"{brandName}"},
{
"field": "SubHeadEntity",
"label": "基本",
"type": "object",
"children": [
{"field": "FErpClsID", "label": "物料属性", "type": "string", "value": "2"},
{
"field": "FCategoryID",
"label": "存货类别",
"type": "string",
"describe": "CHLB01_SYS",
"value": "_function CASE '{goodsField14}' WHEN '' THEN '产成品' ELSE '{goodsField14}' END",
"parent": "SubHeadEntity",
"parser":{"name": "ConvertObjectParser", "params": "FNumber"},
"mapping":{"target": "6465da9ccc316e449f13de3d",
"direction":
}
},
{
...
}
]
},
...
],
...
}
解析与映射
在上述配置中,我们使用了多个字段来定义请求参数,并通过ConvertObjectParser
进行必要的解析和映射。例如:
{"field":"FCreateOrgId",...,"parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"I01"}
:此处将创建组织字段解析为目标系统所需的编号格式。{"field":...,"describe":"","value":"","parent":"","parser":{"name":"","params":"","mapping":{"target":"","direction"}}}
:通过mapping
字段,可以指定目标系统中相应字段的映射关系。
子对象处理
在金蝶云星空API中,有些字段是以子对象形式存在的,例如SubHeadEntity
。我们需要特别处理这些子对象,以确保其结构和内容符合API要求:
{
...
{
field: 'SubHeadEntity',
label: '基本',
type: 'object',
children: [
{ field: 'FErpClsID', label: '物料属性', type: 'string', value: '2' },
{ field: 'FCategoryID', label: '存货类别', type: 'string', describe: 'CHLB01_SYS', value: '_function CASE \'{goodsField14}\' WHEN \'\' THEN \'产成品\' ELSE \'{goodsField14}\' END', parent: 'SubHeadEntity', parser:{ name: 'ConvertObjectParser', params: 'FNumber' }, mapping:{ target: '6465da9ccc316e449f13de3d', direction:'positive'}},
{ field: 'FBaseUnitId', label: '基本单位', type: 'string', parser:{ name:'ConvertObjectParser', params:'FNumber'}, value:'{unitName}', parent:'SubHeadEntity', mapping:{ target:'6440ed07043a435b8a1976cc','direction':'positive'}},
...
]
},
...
}
批量保存操作
为了提高效率,轻易云数据集成平台支持批量保存操作。在元数据配置中,通过operation
字段定义批量操作的方法:
{
...
operation:{
rowsKey:"array",
rows:1,
method:"batchArraySave"
}
}
此配置确保了多个记录可以一次性提交到金蝶云星空系统,大大提高了数据处理效率。
API调用与结果处理
完成所有配置后,通过HTTP POST方法调用金蝶云星空API接口,并处理返回结果:
{
api:"batchSave",
effect:"EXECUTE",
method:"POST"
}
此处,effect
设置为EXECUTE
,表示执行操作。调用成功后,需要检查返回结果,以确保所有记录都已正确写入目标系统。
综上所述,通过精细化配置元数据、解析与映射、子对象处理以及批量操作,我们可以高效地将源平台的数据转换并写入金蝶云星空系统,实现不同系统间的数据无缝对接。