泛微OA-Http到金蝶云星空的数据集成案例:SD001-生产订单审批
在复杂的企业业务流程中,不同系统之间的数据对接和集成往往是技术团队面临的一大挑战。本次分享的案例是一个特别具有代表性的项目,涉及将泛微OA-Http系统中的生产订单审批数据,集成至金蝶云星空的采购订单模块。方案名称为“SD001-生产订单审批 泛微=>金蝶采购订单--开发中,供应商待oa修改为隐藏编号”。
API接口及数据处理详解
获取泛微OA-Http数据
首先,我们通过调用泛微OA-Http提供的API接口/api/workflow/paService/getWorkflowRequest
来获取生产订单相关的数据。在这个过程中,我们面临了两个主要问题,一是如何确保高效、准确地抓取所需数据;二是如何应对API接口返回结果中的分页和限流限制。
为了保证不漏单并实时获取最新数据信息,我们实现了一套定时可靠调度机制,通过配置调度策略,每隔固定时间段自动调用该接口拉取新增或变更的数据。此外,为了解决分页和限流的问题,引入了异常处理与错误重试机制,在超出请求限额或者发生网络故障时能够自动进行重新尝试。
数据转换与格式调整
从泛微OA获取到原始数据后,需要进行一定程度的格式转换,以适应金蝶云星空API batchSave
的要求。在此步骤中,自定义了数据转换逻辑,对字段名、类型等进行了映射。同时,还解决了两种系统间存在的数据结构差异,包括日期格式、数值精度等细节问题。
批量写入至金蝶云星空
在完成必要的数据清洗和转换后,将其批量写入到金蝶云星空。利用平台本身支持高吞吐量、高并发特性,使得大量经过处理的数据能够迅速、安全地传输至目标系统,从而提高整体操作效率。在写入过程中,通过集中监控和告警系统实时跟踪任务状态,并根据可能出现的异常状况(如主键冲突、字段缺失)及时调整策略。例如,当遇到必须唯一但重复出现的记录时,可以选择更新已有记录而不是直接丢弃,以确保所有有效信息都能顺利整合进新环境中。
这只是整个方案设计与实施过程中的一部分,但已经可以看到其中关键环节的重要性,如精准有效地读取源头数据、自定义灵活转译规则以及保证高速稳定的大规模写入等。而下一步,将详细介绍每个部分具体实现的方法与代码示例,以及我们在实践中总结出的最佳经验和技巧。
调用泛微OA-Http接口获取并加工数据的技术案例
在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用泛微OA-Http接口/api/workflow/paService/getWorkflowRequest
来获取并加工数据。
接口调用配置
首先,我们需要配置元数据以便正确调用泛微OA的API接口。以下是具体的元数据配置:
{
"api": "/api/workflow/paService/getWorkflowRequest",
"effect": "QUERY",
"method": "GET",
"number": "requestId",
"id": "requestId",
"name": "id",
"idCheck": true,
"request": [
{"field": "workflowId", "label": "e9流程id", "type": "string", "value": "407"},
{"field": "workflowIdList", "label": "workflowIdList中间方案ID", "type": "string", "value":"8183a586-bdfb-3e93-8573-d5e81803c5ff"}
],
"autoFillResponse": true,
"condition_bk":[
[{"field":"currentNodeName","logic":"like","value":"归档"},{"field":"detail_0.xm","logic":"like","value":"1.wafer"}]
],
"condition":[
[{"field":"detail_0.xm","logic":"like","value":"wafer"}]
]
}
配置解析
-
API路径与请求方式:
api
:/api/workflow/paService/getWorkflowRequest
method
:GET
此配置表明我们将通过GET请求方式访问指定的API路径。
-
请求参数:
workflowId
: 固定值407
workflowIdList
: 固定值8183a586-bdfb-3e93-8573-d5e81803c5ff
请求参数用于指定特定的工作流ID和工作流ID列表。
-
响应自动填充:
autoFillResponse
:true
表示平台将自动处理并填充响应数据,简化后续的数据处理步骤。
-
条件过滤:
condition_bk
:[ {"field":"currentNodeName","logic":"like","value":"归档"}, {"field":"detail_0.xm","logic":"like","value":"1.wafer"} ]
condition
:[ {"field":"detail_0.xm","logic":"like","value":"wafer"} ]
条件过滤用于筛选满足特定条件的数据。例如,
condition_bk
用于备份条件,筛选当前节点名称包含“归档”且细节字段包含“1.wafer”的记录;而condition
则用于筛选细节字段包含“wafer”的记录。
数据获取与加工
在配置好元数据后,我们可以通过轻易云平台发起API请求,并根据返回的数据进行进一步处理。以下是一个典型的数据处理流程:
-
发起API请求: 使用配置好的元数据,通过轻易云平台发起GET请求,获取工作流相关的数据。
-
响应数据解析: 平台会自动填充响应数据,根据预定义的字段进行解析。例如,提取出每个工作流请求的详细信息,包括但不限于:请求ID、当前节点名称、细节字段等。
-
条件过滤与清洗: 根据配置的条件过滤器,对返回的数据进行筛选和清洗。例如,仅保留当前节点名称包含“归档”且细节字段包含“1.wafer”的记录。这一步骤确保了我们只处理符合业务需求的数据。
-
数据转换与写入: 清洗后的数据可以根据业务需求进行转换,并写入目标系统(如金蝶采购订单系统)。这一过程通常涉及字段映射、格式转换等操作,以确保数据在不同系统间的无缝对接。
实际应用案例
假设我们需要从泛微OA系统中获取生产订单审批相关的数据,并将其转换为金蝶采购订单。具体步骤如下:
-
调用API获取原始数据: 发起GET请求,获取所有符合条件的生产订单审批记录。
-
解析与清洗: 对返回的数据进行解析,提取出关键字段,如订单编号、供应商信息、物料详情等。同时,根据预定义的条件进行清洗,仅保留符合要求的记录。
-
转换与写入金蝶系统: 将清洗后的生产订单审批记录转换为金蝶采购订单所需的格式,并通过相应接口写入金蝶系统,实现两个异构系统间的数据集成。
通过上述步骤,我们可以高效地实现泛微OA与金蝶系统间的数据集成,确保业务流程的顺畅运行。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台——金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是详细的技术实现过程。
1. 数据提取与转换
首先,我们从源系统中提取需要的数据。假设我们从泛微OA系统中提取生产订单审批数据,这些数据包括单据编号、采购日期、采购组织、供应商、业务类型、审核人以及明细信息等。
2. 配置元数据
根据金蝶云星空API接口的要求,我们需要配置相应的元数据,以便将提取的数据转换为目标平台能够识别和处理的格式。以下是关键字段及其配置:
- 单据类型(FBillTypeID):标准采购订单,固定值为
CGDD01_SYS
。 - 单据编号(FBillNo):使用泛微OA系统中的工作流主表信息字段
{{workflowMainTableInfo.lcbh}}
。 - 采购日期(FDate):使用泛微OA系统中的申请日期字段
{{workflowMainTableInfo.sqrq}}
。 - 采购组织(FPurchaseOrgId):使用泛微OA系统中的工作流主表信息字段
{{workflowMainTableInfo.wszt}}
,并通过ConvertObjectParser
解析为金蝶系统所需格式。 - 供应商(FSupplierId):使用泛微OA系统中的供应商编号字段
{{workflowMainTableInfo.gysbh}}
,并通过ConvertObjectParser
解析。 - 业务类型(FBusinessType):固定值为标准采购类型
CG
。 - 审核人(FApproverId):通过查询集合获取审核人ID,并通过
ConvertObjectParser
解析。
3. 明细信息配置
对于明细信息,我们需要逐条处理每个明细行的数据:
- 物料编码(FMaterialId):使用明细行中的物料编码字段
{{detail_0.wlbh}}
,并通过ConvertObjectParser
解析。 - 采购数量(FQty):使用明细行中的数量字段
{{detail_0.sl}}
。 - 含税单价(FTaxPrice):使用明细行中的单价字段
{{detail_0.dj}}
。 - 价税合计(FAllAmount):使用明细行中的价格字段
{{detail_0.jg}}
。 - 交货日期(FDeliveryDate):使用工作流主表信息中的发货时间字段
{{workflowMainTableInfo.fhsj}}
- 供应商单号(F_Halo_Text):使用工作流主表信息中的订单号
{{workflowMainTableInfo.ddh_FV}}
4. 财务信息配置
财务信息部分也需要进行相应的配置:
- 结算币别(FSettleCurrId):通过查询集合获取币别编号,并通过
ConvertObjectParser
解析。 - 定价时点(FPriceTimePoint):固定值为1。
- 汇率类型(FExchangeTypeId):固定值为
HLTX01_SYS
,并通过ConvertObjectParser
解析。
5. API请求配置
最后,我们需要将所有配置好的数据打包成一个API请求,并发送到金蝶云星空的接口进行保存。以下是完整的API请求配置示例:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "FBillTypeID",
"label": "单据类型",
"type": "string",
"describe": "单据类型\n标准采购订单:CGDD01 SYS\n标准委外订单:CGDD02 SYS\n直运采购订单:CGDD03 SYS\n资产采购订单:CGDD04 SYS\n费用采购订单:CGDD05 SYS\n补料采购订单:CGDD06 SYS\nVMI采购订单:CGDD07 SYS\n现购订单:CGDD08 SYS\n分销购销采购订单:CGDD09 SYS",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
},
"value": "CGDD01_SYS"
},
{
"field": "FBillNo",
"label": "单据编号",
...
},
...
],
...
}
在这个过程中,我们利用了轻易云数据集成平台提供的全异步、多种异构系统支持以及全透明可视化操作界面,使得整个ETL过程变得高效且易于监控。