钉钉数据集成到金蝶云星空案例分享:exp-新报销退款单(付款退款)V4.0
在本次技术案例中,我们将详细探讨如何通过轻易云数据集成平台,将钉钉的数据高效地集成到金蝶云星空环境中。具体方案名称为“exp-新报销退款单(付款退款)V4.0”。该解决方案旨在实现两大系统间的数据无缝对接,确保从报销申请到最终审核的流程全程透明、高效且可靠。
技术核心:API接口调用与数据处理
为了完成这一目标,我们主要利用了两个关键API接口:
- 钉钉获取数据的API:
v1.0/yida/processes/instances
- 金蝶云星空写入数据的API:
batchSave
首先,在获取钉钉生成的新报销和退款信息时,通过调用v1.0/yida/processes/instances
API接口,实时抓取相关业务数据。轻易云的平台支持定时、可靠地调度这一请求,有效保证了我们能够及时捕捉到每笔交易记录,从而避免任何漏单现象。
处理分页与限流问题
由于涉及大量数据信息导出和导入操作,必须应对分页和限流的问题。在调用上述API接口过程中,实现自动化分页策略,并结合限流算法,对大批量数据分段处理。这不但提高了吞吐量,还避免了因一次性请求过多引起的网络拥塞或超时情况。
数据转换与质量监控
不同于简单的数据传递,本次集成还需进行复杂的数据转换,以适配特定业务需求及目标系统结构。借助轻易云提供的自定义数据转换逻辑,将从钉钉处获取的数据映射至符合金蝶云星空要求的格式。同时,通过内置的数据质量监控机制,实时检测并校正异常值或格式错误,为后续的批量写入奠定基础。
批量写入与智能告警系统
最后一步是将经过清洗及转化后的数据信息,以较高吞吐量快速批量写入至金蝶云星空,这一过程依赖于batchSave
API实现。此外,集中式监控和告警系统可随时跟踪任务执行状态,一旦出现性能瓶颈或错误,即刻触发告警并启动重试机制,使得整个流程更加稳定和可靠。
通过上述一系列技术手段,本次项目成功实现了多个异构系统间的信息互通,不仅提升了各环节运营效率,还极大程度上保障了业务连续
调用钉钉接口v1.0/yida/processes/instances获取并加工数据
在数据集成生命周期的第一步中,调用源系统接口是至关重要的一环。本文将详细探讨如何使用轻易云数据集成平台调用钉钉接口v1.0/yida/processes/instances
来获取并加工数据。
API接口配置
我们首先需要配置API接口的元数据。以下是具体的配置细节:
- API路径:
v1.0/yida/processes/instances
- 请求方法:
POST
- 关键字段:
number
: 标题id
: 流程实例ID (processInstanceId
)idCheck
:true
请求参数配置
请求参数是API调用成功与否的关键。以下是具体的请求参数及其配置:
-
分页参数:
pageNumber
: 分页页码,类型为字符串,值为{PAGINATION_START_PAGE}
。pageSize
: 分页大小,类型为字符串,值为{PAGINATION_PAGE_SIZE}
。
-
应用信息:
appType
: 应用ID,类型为字符串,值为APP_WTSCMZ1WOOHGIM5N28BQ
。systemToken
: 应用秘钥,类型为字符串,值为IS866HB1DXJ8ODN3EXSVD750RBTK2X72R8MELL4
。
-
用户信息:
userId
: 用户的userid,类型为字符串,值为16000443318138909
。
-
语言设置:
language
: 语言设置,类型为字符串,可选值包括zh_CN
(中文)和en_US
(英文)。
-
表单信息:
formUuid
: 表单ID,类型为字符串,值为FORM-0IA66C71A4V9JSAX6MEV45W77QOO2WI78EHGLQ
。
-
查询条件(嵌套对象):
searchFieldJson
: 查询条件对象,包括以下字段:selectField_lgkiepju
: 是否退还余额,类型为字符串,值为“是”。radioField_lgk9jn2v
: 费用报销类型,类型为字符串,值为“借款核销”。numberField_lgkiepjv
: 退还余额数目,类型为数组(包含一个浮点数),值为[0.0001]
。selectField_lgk9jn35
: 部门过滤。
-
时间范围:
- 创建时间起始值:
createFromTimeGMT
, 类型为字符串, 值通过函数计算_function DATE_FORMAT(DATE_ADD(NOW(),INTERVAL - 25 DAY),'%Y-%m-%d 00:00:00')
- 创建时间终止值:
createToTimeGMT
, 类型为字符串, 值通过函数计算{{CURRENT_TIME|datetime}}
- 创建时间起始值:
-
其他参数:
- 流程发起人工号查询:
originatorId
, 类型为字符串。 - 修改时间起始值:
modifiedFromTimeGMT
, 类型为字符串。 - 修改时间终止值:
modifiedToTimeGMT
, 类型为字符串。 - 任务ID:
taskId
, 类型为字符串。 - 实例状态:
instanceStatus
, 类型为字符串, 值设定为“COMPLETED”。 - 流程审批结果:
approvedResult
, 类型为字符串, 值设定为“agree”。
- 流程发起人工号查询:
数据请求与清洗
在完成上述元数据配置后,我们可以开始进行数据请求和清洗工作。轻易云平台提供了全透明可视化操作界面,使得每一步的数据处理过程都清晰可见。
-
发送请求: 使用POST方法发送请求到钉钉接口,并携带上述配置的所有参数。
-
接收响应: 钉钉接口返回的数据将包含多个流程实例的信息。我们需要对这些数据进行初步清洗和过滤,以确保后续处理的准确性。
-
数据清洗: 对于返回的数据,根据业务需求进行筛选。例如,只保留审批结果同意(agree)的记录,并且实例状态必须是已完成(COMPLETED)。
数据转换与写入
在完成数据请求与清洗之后,我们需要将处理后的数据转换并写入目标系统。这一步通常包括以下几个步骤:
-
格式转换: 将从钉钉获取的数据转换成目标系统所需的格式。例如,将JSON格式的数据转换成CSV或数据库表格式。
-
字段映射: 根据目标系统的要求,对字段进行映射和重命名。例如,将钉钉中的字段名转换成目标系统中的对应字段名。
-
写入操作: 最后,将转换后的数据写入到目标系统中。这可能涉及到数据库插入操作、文件写入操作等。
通过以上步骤,我们实现了从钉钉获取并加工数据的全过程。在整个过程中,通过轻易云平台的全生命周期管理功能,可以实时监控每个环节的数据流动和处理状态,从而确保业务流程的高效运行。
使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,最终转为目标平台金蝶云星空API接口所能够接收的格式,并写入目标平台。本文将详细探讨这一过程中涉及的技术细节和操作步骤。
数据转换与写入过程
在轻易云数据集成平台上,我们可以通过配置元数据来实现对源数据的转换和写入。以下是具体的元数据配置:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "batchArraySave",
"rows": 1,
"rowsKey": "array"
},
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","value":"{serialNumberField_lgk9jn2s}(FKTK)"},
{"field":"FSETTLEORGID","label":"结算组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{tableField_lgk9jn4p.textField_lgk9jn45}}"},
{"field":"FEXCHANGETYPE","label":"汇率类型","type":"string","value":"HLTX01_SYS","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FDATE","label":"业务日期","type":"string","value":"_function FROM_UNIXTIME( ( {dateField_lgkieplu} / 1000 ) ,'%Y-%m-%d' )"},
{"field":"FCURRENCYID","label":"币别","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"PRE001"},
{"field":"FBillTypeID","label":"单据类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"FKTKDLX02_SYS"},
{"field":"FBUSINESSTYPE","label":"业务类型","type":"string","value":"3"},
{"field":"FCONTACTUNITTYPE","label":"往来单位类型","type":"string","value":"BD_Empinfo"},
{"field":"FCONTACTUNIT","label":"往来单位","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value": "{textField_llyjeu7o}"},
{"field": "FPAYUNITTYPE", "label": "付款单位类型", "type": "string", "value": "BD_Empinfo"},
{"field": "FPAYUNIT", "label": "付款单位", "type": "string", "parser":{"name": "ConvertObjectParser", "params": "FNumber"},
"value": "{textField_llyjeu7o}"},
{"field": "FDepartment",
"label":
"部门",
"type":
"string",
"parser":
{"name":
"ConvertObjectParser",
"params":
"FNumber"},
"value":
"{{tableField_lgk9jn4p.textField_lgk9jn46}}"
},
{"field":
"FPAYORGID",
"label":
"付款组织",
"type":
"string",
"parser":
{"name":
"ConvertObjectParser",
"params":
"FNumber"},
"value":
"{textField_lgkieple}"
},
{"field":
"FSETTLECUR",
"label":
"结算币别",
"type":
"string",
"parser":
{"name":
"ConvertObjectParser",
"params":
"FNumber"},
"value":
"PRE001"
},
{"field":
"FREMARK",
"label":
"备注",
"type":
"strings
"value:
"{textareaField_lgkiepk7}"
},
{
“ field”:“ FREFUNDBILLENTRY”,“ label”:“退款单明细”,“ type”:“ array”,“ children”:[
{“ field”:“ FSETTLETYPEID”,“ label”:“结算方式”,“ type”:“ string”,“ parser”:{“ name”:“ ConvertObjectParser”,“ params”:“ FNumber”},“ value”:“ JSFS04_SYS”,“ parent ”:“ FREFUNDBILLENTRY”},
{“ field”:“ FREFUNDAMOUNTFOR”,“ label”:“表体-应退金额”,“ type”:“ string”,“ value”: “ {numberField_lgkiepjv}”,“ parent”: “ FREFUNDBILLENTRY” },
{“ field”:“ FNOTE”,“ label”: “备注”, “ type”: “ string”, “ value”: “ {textareaField_lgkiepk7}”, “ parent”: “ FREFUNDBILLENTRY” },
{“ field”:“ FACCOUNTID”, “ label”: “我方银行账号”, “ type”: “ string”, “ parser”: {“ name”: “ ConvertObjectParser”, “ params”: “ FNumber” },“ value”:“ {selectField_lgkieplh} ”, parent:”“ FREFUNDBILLENTRY ”},
{“ field”:“ FEXPENSEDEPTID_E ”,“ label”:“费用承担部门”,“ type”:“ string”,“ parser”: {“ name”:“ ConvertObjectParser ”,“ params”:“ FNumber ” },“ value”: {{tableField_lgk9jn4p.textField_lgk9jn46}},“ parent”:“ FREFUNDBILLENTRY ” },
{“ field”:“ FPURPOSEID ”,“ label”:“原付款用途”,“ type”:“ string”,“ value”:“ SFKYT23_SYS ”,“ parent ”:”“ FREFUNDBILLENTRY”,解析器:{名称:ConvertObjectParser,参数:FNumber}},
{字段:退款金额,标签:退款金额,类型:字符串,值:numberField_lgkiepjv,父级:退款单明细}
{
parent:退款单明细,标签:承担部门,字段:F_QKZI_Base1,类型:字符串,值:{{tableField_lgk9jn4p.textField_lgk9jn46}},解析器:{名称:ConvertObjectParser,参数:FNumber}
},
{
parent:退款单明细,标签:费用项目,字段:F_QKZI_Base,类型:字符串,值:{{tableField_lgk9jn4p.textField_lgk9jn47}},解析器:{名称:ConvertObjectParser,参数:FNumber}
}
]},
{
label:
往来类型,
field:
F_QKZI_Assistant,
type:
string,
value:
_function case '{selectField_lglw55x0}' when '否' then '\" \"' when '是' then '{selectField_lgkiepl6_id}' end,
parser:
{name:
ConvertObjectParser,
params:
FNumber
}
}],
其他请求:[{
field:
FormId,
label:
业务对象表单Id,
type:
string,
describe:
必须填写金蝶的表单ID如:PUR_PurchaseOrder,
value:
AP_REFUNDBILL
},{
field:
操作,
label:
执行的操作,
type:
string,
value:
批量保存
},{
field:
IsAutoSubmitAndAudit,
label:
提交并审核,
type:
bool,
value:
true
},{
field:
IsVerifyBaseDataField,
label:
验证基础资料,
type:
bool,
describe:
是否验证所有的基础资料有效性,布尔类,默认false(非必录),
value:
false
}]
}
元数据配置详解
-
API接口与方法
配置中指定了使用batchSave
API接口,通过POST
方法进行数据提交。 -
字段映射与转换
- 单据编号(FBillNo):通过序列号生成。
- 结算组织(FSETTLEORGID)、汇率类型(FEXCHANGETYPE)等字段使用
ConvertObjectParser
进行对象转换。 - 业务日期(FDATE)通过函数
FROM_UNIXTIME
进行时间戳转换。 - 币别(FCURRENCYID)等字段直接指定固定值,如
PRE001
。
-
数组处理
对于退款单明细(FREFUNDBILLENTRY
),使用数组结构处理多个子项,并对每个子项进行相应的字段映射和转换。 -
其他请求参数
包括表单Id、操作类型、是否自动提交并审核等,这些参数确保了在调用API时能够正确执行相应操作。
实际应用案例
假设我们从源系统获取了一条新的报销退款单记录,需要将其转换并写入金蝶云星空。首先,我们按照上述元数据配置,将源系统的数据字段映射到目标系统所需的格式。然后,通过轻易云的数据集成平台调用金蝶云星空的API接口,将处理后的数据提交到目标系统中。
例如,对于一个具体的报销退款单记录:
{
"serialNumberField_lgk9jn2s": "12345678",
...
}
经过上述配置和处理后,将生成如下格式的数据:
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
{
...
![数据集成平台API接口配置](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)