事件目标(WebAPI)
变更记录
产品版本 | 更新内容 | 更新日期 |
V6.0.13 | 初始版本 | 2024年6月13日 |
1 简介
1.1 功能介绍
事件触发时,通过调用第三方系统的API服务将事件消息准确传递至第三方系统。
1.2 应用场景
跨系统数据同步、跨系统关联交易等需要将事件消息实时同步到第三方系统的场景。
1.3 系统路径
【集成服务云】→【事件网格】→【事件订阅(事件目标-WebAPI)】
1.4 关键字段/按钮说明
1.4.1 关键字段说明
字段名称 | 详细解释 |
基本信息 | |
目标API | 事件目标需要调用的API,由目标系统提供API服务,可从【WebAPI登记】列表中选择 |
目标数据源 | 事件需要触达的目标系统环境 |
请求类型 | 目标API的请求类型,根据所选API自动带出 |
域名端口 | 目标API的请求域名和端口,根据所选目标数据源自动带出 |
URI | 目标API的URI地址,根据所选API自动带出 |
参数赋值 | |
参数名称 | 需要赋值的API请求参数名称,根据所选API自动带出 |
参数类型 | API请求参数的类型,根据所选API自动带出 |
参数描述 | API请求参数的描述,根据所选API自动带出 |
多值 | API请求参数是否多值,根据所选API自动带出 |
必填 | API请求参数是否必填,根据所选API自动带出 |
参数赋值 | 给API请求参数赋参数值,支持常量值、事件参数变量、函数表达式 |
赋值脚本 | 通过脚本代码编写API请求参数的赋值逻辑,主要面向复杂的赋值场景 |
请求断言 | |
断言脚本 | 通过脚本代码编写API请求结果断言 |
2 主要操作
2.1 配置WebAPI事件目标
前提条件
目标API已经在【事件网格】->【连接资源】->【WebAPI登记】列表中维护,操作指引详见:WebAPI登记
操作步骤
步骤1:选择目标API。
步骤2:检查API带出的目标数据源是否指向目标系统环境,此处可重新选择目标数据源。
步骤3:进行API参数赋值,确保运行时API能正常调用,事件正常传递至事件目标。需要赋值的参数已自动显示在列表,URL参数、请求头、请求体都可能需要赋值,请切换Tab进行检查避免赋值遗漏。
API参数赋值参数赋值、赋值脚本、参数赋值和赋值脚本同时使用。
1)参数赋值:填写列表中“参数赋值”字段,支持录入常量值、事件参数变量、简单的函数表达式。
特别注意:
1、API请求参数中如涉及树形单据体,赋值时建议先赋值父属性再赋值子属性,才能确保正常按行赋值。如果不赋值父属性直接赋值子属性,则只会取某个参数值赋给子属性。
举个例子:被赋值对象 A=[{"a":"xxx","b":"xxx"}],赋值对象 B= [{"c":"x1","d":"y1"},{"c":"x2","d":"y2"}]
【方式一】赋值父属性:A = B,a =c,b = d
赋值结果为:A = [{"a":"x1","b":"y1"},{"a":"x2","b":"y2"}]
【方式二】不赋值父属性:a=c,b =d
赋值结果为:A = [{"a":["x1","x2"],"b":["y1","y2"]}]
2)赋值脚本:对于复杂的赋值场景,如复杂的逻辑运算、调用微服务、调用WebAPI等,可通过编写脚本代码对API请求参数赋值。
脚本可用变量包括事件参数($data)、上下文参数($event)、API请求头参数($header)、API请求体参数($body)、API请求URL参数($queryString)。
脚本直接编写逻辑,对 $header/$body/$queryString 进行赋值即可,无需Return。
注意:脚本中取到$header、$body、$queryString这几个变量时,已包含上面列表参数赋值结果。
运行顺序为 列表参数赋值 > 赋值脚本 > 拿$header、$body、$queryString进行WebAPI调用。
若某个参数同时被列表参数赋值和脚本赋值,脚本中的赋值将覆盖列表参数赋值,最终调用API时采用脚本中的赋值结果。
【参考案例】
某订阅需要调用“销售出库单保存”API接口,若其API请求体中的销售订单单据体使用列表参数赋值完成,但物料分录需要调用另外的“查询物料信息”接口获取。所以拆解赋值脚本中关键步骤包括:
① 调用“获取销售订单明细”API,根据单据号查询完整物料分录。
② 整合返回的物料分录,适配“销售出库单保存”请求体格式。
③ 补充物料分录至请求体$body,确保数据完整准确后执行保存API调用。
赋值脚本如下:
//通过微服务调用WebAPI,获取销售订单物料明细 var number = "getOrderProduct"; var body ={ "data":{ "search_query_info":{ "orders":[ {} ], "filters":[ { "field_values":[ //传入事件参数中销售订单ID $data.dataId ] } ] } } }; var realDataSourceNumber = "fxiaoke"; var result = invokeMicroService2("isc","iscb","IscWebApiService","invokeWithRealDataSource", [number,body,realDataSourceNumber]); //获取返回的物料明细 var fxiaokeOrderProducts = result.data.dataList; //按请求体格式,进行参数转换 var productList = []; var product = {}; for(var i = 0; i < fxiaokeOrderProducts.length; i++) { product = { "unit_number" : "psc", "warehouse_number" :"003", "linetype_numbe":"010", "entrysettleorg_number":fxiaokeOrderProducts[i].owner_department, "qty":fxiaokeOrderProducts[i].quantity, "discounttype":fxiaokeOrderProducts[i].discount, "material_number":fxiaokeOrderProducts[i].name, }; productList += product; }; //对API请求体参数补充物料分录赋值 $body.billentry = productList;
步骤4:编写断言脚本。
未填写断言脚本时,系统默认API请求不抛错即视为请求成功,不会判断返回结果中的错误码或错误消息,实例和日志都会记录目标执行成功。如需根据API响应结果中错误码或错误信息等判定API调用失败,需在断言脚本中编写逻辑在特定条件下抛出异常(如throw xxx)。
断言脚本支持内置变量包括事件参数($data)、上下文($event)、请求头($header)、请求体($body)、URL参数($queryString)及响应结果($result)。
断言脚本示例:
if($result.errorCode != "0" || $result.status == fasle){ throw "错误码为:"+ $result.errorCode +",错误信息为:"+ $result.message; };
步骤5:点击“确定”按钮,即完成WebAPI类型事件目标维护。
3、注意事项
1、编写脚本时,可前往【事件网格->其他->脚本帮助手册】查看在线帮助手册,里面有很多函数的使用教程和案例。
2、脚本编写完,可先使用【事件网格->其他->脚本执行工具】进行脚本执行,看是否符合预期。如果执行出现错误,可使用【事件网格->其他->脚本调试工具】进行脚本的调试和优化。
3、更详细的脚本编写教程请参考:脚本基本语法、脚本开发指南、脚本优化实例。
事件目标(WebAPI)
本文2024-09-23 00:54:01发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-142469.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf