MOM-XSDD-销售订单-表头-状态刷新:金蝶云星空到MySQL的数据集成实现
在现代企业的运营过程中,数据集成是确保各业务系统高效协同的重要环节。本文将介绍一个具体案例,演示如何通过MOM-XSDD方案,将金蝶云星空中的销售订单数据高效、可靠地集成到MySQL数据库中。
金蝶云星空API调用与数据获取
为了从金蝶云星空系统中获取所需的销售订单表头信息,我们使用了executeBillQuery API接口。该接口支持定时抓取和分页处理,有助于我们应对大量数据带来的压力,并保证不漏单。在此过程中,我们还采用了异常检测机制,以便及时发现并解决潜在问题。
数据转换与质量监控
由于金蝶云星空中的数据格式可能与MySQL存在差异,因此我们设计了一套自定义的数据转换逻辑,以适应不同的业务需求和结构。同时,通过轻易云平台提供的数据质量监控功能,可以实时追踪每个数据处理环节,确保传输过程中的高度准确性。
高吞吐量写入与批量操作
在成功获取并转换好需要的数据后,下一步就是将这些信息快速、安全地写入到MySQL数据库中。借助于轻易云平台强大的高吞吐量支持以及批量操作能力,大规模的数据能够迅速进入目标数据库,从而极大提升整体效率。此外,我们还针对MySQL进行了特殊配置,以优化其性能,包括对分页和限流问题的处理,以及定制化的映射对接。
集中监控与告警系统
为了进一步提高任务执行过程中的可控性,本次集成项目引入了集中监控和告警系统。这一系统不仅能实时跟踪每个任务节点的状态,还可以预先设定告警规则,当发生异常情况时立即通知相关人员进行干预。有了这一保障,即使面对复杂多变的实际应用环境,也能确保整个流程平稳运行。
接下来,让我们深入探讨具体实施步骤及技术细节,通过详细讲解来复现这个案例,实现真正意义上的端到端无缝数据集成。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,以获取销售订单表头信息,并对数据进行初步加工。
接口配置与请求参数
在轻易云数据集成平台上,配置元数据是实现接口调用的关键步骤。以下是针对金蝶云星空executeBillQuery
接口的元数据配置:
{
"api": "executeBillQuery",
"effect": "QUERY",
"method": "POST",
"number": "FBillNo",
"id": "FID",
"name": "FBillNo",
"request": [
{"field":"FID","label":"FID","type":"string","describe":"FID","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
{"field":"FDocumentStatus","label":"单据状态","type":"string","describe":"单据状态","value":"FDocumentStatus"},
{"field":"FSaleOrgId_FNumber","label":"销售组织","type":"string","describe":"销售组织","value":"FSaleOrgId.FNumber"},
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"FDate"},
{"field":"FCloseStatus","label":"关闭状态","type":"string","describe":"关闭状态","value":"FCloseStatus"},
{"field":"FCloserId","label":"关闭人","type":"string","describe":"关闭人","value":"FCloserId.fname"},
{"field":"FCloseDate","label":"关闭日期","type":"string","describe":"关闭日期","value":"FCloseDate"},
{"field":"FCancelStatus","label":"作废状态","type":"string","describe":"作废状态","value":"FCancelStatus"},
{"field":"FCancellerId","label":"作废人","type":"","describe":"","value":""},
{"field":"","label":"","type":"","describe":"","value":""}
],
"otherRequest":[
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "5000"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "", "value": "{PAGINATION_START_ROW}"},
{"field": "", "", "", "", ""},
{"field":"","label":"","type":"","describe":"","value":""}
],
...
}
请求参数解析
-
基本字段:
FID
: 唯一标识符,用于唯一确定一条记录。FBillNo
: 单据编号,是业务操作中的关键字段。FDocumentStatus
: 单据状态,用于判断当前单据的处理阶段。FSaleOrgId_FNumber
: 销售组织编号,关联到具体的业务部门。FDate
: 单据日期,记录单据生成或修改的时间。FCloseStatus
: 单据关闭状态,标识单据是否已完成或关闭。FCloserId
: 关闭人,记录执行关闭操作的用户。FCloseDate
: 关闭日期,记录单据被关闭的时间。FCancelStatus
: 作废状态,标识单据是否被作废。
-
其他请求参数:
Limit
: 最大行数,用于分页查询时限制返回的数据量。StartRow
: 开始行索引,用于分页查询时指定起始位置。FilterString
: 过滤条件,用于筛选符合特定条件的数据。例如:"FModifyDate>='{{LAST_SYNC_TIME|dateTime}}' and FDocumentStatus='C'"
。
数据请求与清洗
在配置好元数据后,通过轻易云平台发起POST请求,从金蝶云星空系统中获取销售订单表头信息。示例请求体如下:
{
"FormId": "SAL_SaleOrder",
...
}
响应结果会包含多个字段,根据业务需求,可以对这些字段进行初步清洗和转换。例如,将日期格式统一转换为标准格式,将状态码转换为可读文本等。
数据转换与写入
在获取并清洗完数据后,需要将其转换为目标系统所需的格式,并写入目标数据库或系统。这一步通常包括以下操作:
- 字段映射:将源系统字段映射到目标系统字段。例如,将
FBillNo
映射到目标系统中的订单编号字段。 - 数据类型转换:确保源系统的数据类型与目标系统匹配。例如,将字符串类型的日期转换为目标系统所需的日期格式。
- 批量写入:为了提高效率,可以将处理好的数据批量写入目标系统。
通过上述步骤,可以高效地实现从金蝶云星空获取销售订单表头信息,并将其集成到其他业务系统中。
使用轻易云数据集成平台进行ETL转换并写入MySQL API接口的技术案例
在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台 MySQL API 接口所能够接收的格式,最终写入目标平台。以下是具体的技术实现过程。
数据请求与清洗
首先,我们从源系统中提取数据。这一步已经完成,现在我们关注如何将这些数据转换为目标系统所需的格式,并通过API接口写入MySQL数据库。
数据转换与写入
在本案例中,我们使用的是一个名为“MOM-XSDD-销售订单-表头-状态刷新”的集成方案。该方案涉及多个字段的数据转换和写入操作。以下是元数据配置:
{
"api": "execute",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "main_params",
"label": "main_params",
"type": "object",
"describe": "111",
"value": "1",
"children": [
{"field": "fbillno", "label": "fbillno", "type": "string", "value": "{FBillNo}"},
{"field": "DATE", "label": "DATE", "type": "string", "value": "{FDate}"},
{"field": "KINGDEE_ID", "label": "KINGDEE_ID", "type": "string", "value": "{FID}"},
{"field": "DOCUMENT_STATUS", "label": "DOCUMENT_STATUS",
"type":"string","value":"{FDocumentStatus}"},
{"field":"CLOSE_STATUS","label":"CLOSE_STATUS","type":"string","value":"{FCloseStatus}"},
{"field":"CLOSER_NAME","label":"CLOSER_NAME","type":"string","value":"{FCloserId}"},
{"field":"CLOSE_DATE","label":"CLOSE_DATE","type":"string",
"value":"_function case '{FCloseDate}' when '' then null else '{FCloseDate}' end"},
{"field":"CANCEL_STATUS","label":"CANCEL_STATUS","type":"string","value":"{FCancelStatus}"},
{"field":"CANCELLER_NAME","label":"CANCELLER_NAME","type":"string","value":"{FCancellerId}"},
{"field":"CANCEL_DATE","label":"CANCEL_DATE","type":"string",
"value":"_function case '{FCancelDate}' when '' then null else '{FCancelDate}' end"},
{"field":"SYNC_FLAG","label":"SYNC_FLAG","type":"string","value":"1"}
]
}
],
“otherRequest”: [
{
“field”: “main_sql”,
“label”: “main_sql”,
“type”: “string”,
“describe”: “111”,
“value”: “update ty_mes.mt_so_head set DATE=:DATE,KINGDEE_ID=:KINGDEE_ID,DOCUMENT_STATUS=:DOCUMENT_STATUS,CLOSE_STATUS=:CLOSE_STATUS,CLOSER_NAME=:CLOSER_NAME,CLOSE_DATE=:CLOSE_DATE,CANCEL_STATUS=:CANCEL_STATUS,CANCELLER_NAME=:CANCELLER_NAME,CANCEL_DATE=:CANCEL_DATE,SYNC_FLAG=:SYNC_FLAG where so_number=:fbillno”
}
]
}
元数据解析与配置
-
API接口配置:我们使用
POST
方法调用execute
API接口,确保请求方式和接口名称正确。 -
字段映射:根据元数据配置,将源系统中的字段映射到目标系统所需的字段。例如:
fbillno
映射到{FBillNo}
DATE
映射到{FDate}
KINGDEE_ID
映射到{FID}
DOCUMENT_STATUS
映射到{FDocumentStatus}
- 等等。
-
特殊处理:对于日期字段,如
CLOSE_DATE
和CANCEL_DATE
,需要进行特殊处理。如果原始值为空字符串,则转换为null,否则保留原始值。这通过函数_function case '{FCloseDate}' when '' then null else '{FCloseDate}' end
实现。 -
同步标志:添加一个固定值字段
SYNC_FLAG
,其值为1
,用于标识同步状态。 -
SQL更新语句:构建用于更新MySQL数据库的SQL语句,通过占位符绑定参数,实现动态更新。例如:
update ty_mes.mt_so_head set DATE = :DATE, KINGDEE_ID = :KINGDEE_ID, DOCUMENT_STATUS = :DOCUMENT_STATUS, CLOSE_STATUS = :CLOSE_STATUS, CLOSER_NAME = :CLOSER_NAME, CLOSE_DATE = :CLOSE_DATE, CANCEL_STATUS = :CANCEL_STATUS, CANCELLER_NAME = :CANCELLER_NAME, CANCEL_DATE = :CANCEL_DATE, SYNC_FLAG = :SYNC_FLAG where so_number = :fbillno
实际操作步骤
- 配置API请求参数:根据元数据配置,将所有字段及其对应值封装到请求体中。
- 发送API请求:通过HTTP POST方法发送请求至MySQL API接口。
- 处理响应结果:接收并解析API响应,检查是否成功执行更新操作。如果失败,根据错误信息进行调试和修正。
以上就是将源平台数据经过ETL转换后,通过MySQL API接口写入目标平台的详细技术过程。在实际应用中,根据具体业务需求和系统环境,可以对上述步骤进行适当调整,以实现最佳的数据集成效果。