集成平台与OpenAPI联合集成场景(以弹性域集成为例)
1 业务场景
集成方案可以直接调用实体操作完成数据写入,但在某些场景下,业务单据没有提供标准的操作服务,只提供了OpenAPI服务(2.0版本)。因此,可以将集成和开放能力组合起来使用,具体场景包括:
目标有复杂逻辑,没有实体的具体操作,但是对外提供了OepnAPI;
目标业务字段较多,并且接口的默认值很多,一些需要使用接口界面的值转换事件;
目标单据已经开发好了一套API,可以直接复用降低开发成本;
目标单据、单据体、子单据体有弹性域字段。
注意:数据集成方案使用本贴特性需要升级到6.0.10及之后。
2 解决方案
下面介绍如何从零开发一个OpenAPI,并且应用在集成管理中。本文中以im_adjustbill形态转换单为例,介绍如何在集成云中各调用形态转换单的OpenAPI。以下是具体步骤:
2.1 新增API
在开放平台新增一个操作API,实体选择im_adjustbill,在OpenAPI执行API测试成功将单据保存,则API开发成功。这里介绍一个技巧,如果不清楚API保存时需要哪些数据,可以先配置一个操起API读取一个单据,然后仿照读取出的实体来改写,即可生成一份保存数据。
基本信息:
必要字段:
2.2 拷贝测试数据
点击API测试,拷贝API测试数据报文,进入集成管理-集成云数据-数据集中发布一个集成对象。
下图是测试数据的部分截图:
2.3 创建数据集并发布集成对象
在集成服务云下,打开【集成管理】-【集成元数据】-【数据集】,列表新增下拉点击json导入,移除最外层的data部分粘贴API测试数据后参考截图配置保存、发布。
2.4 创建集成方案
使用创建的集成对象im_adjustbill_struct配置服务流程或者启动方案,演示中以启动方案为案例。
注意:如果是服务流程服务流程中组装好{“data”:数据}的格式,使用OpenAPI.invokeOperation(apiUrl, data)调用即可,注意调用oepnAPI时最外层的data需要自己补充以适配API的入参格式
下文演示数据集成方案,源对象按照实际情况自己配置,本文以im_adjustbill实体作为源对象,注意自动映射和近似映射可能不会映射弹性域字段,需要认为写脚本处理。
由于不同的单据转换逻辑不相同,此处假定数据已通过字段映射及转换脚本映射成功,需要进入目标处理脚本进行最后一步的配置。
目标处理脚本中,tar对象是前置转换处理后能拿到的完整对象,此上下文中src未注入,因此需要的对象需要在转换脚本中处理好。
注意:如果有弹性域对象,则需要明确弹性域维度。组装好数据后在目标数据处理脚本中,OpenAPI.invokeOperation(apiUrl, {data:data})调用即可成功写入;
下面提供一个参考文本,组装
{ "billno": "XTZH-240709-000002", "billstatus": "A", "billstatus_title": "暂存", "auditdate": null, "modifytime": "2024-07-09 08:08:28", "createtime": "2024-07-09 08:02:08", "biztime": "2024-07-09 00:00:00", "comment": null, "billcretype": "", "billcretype_title": "", "bookdate": "2024-07-09 00:00:00", "ischargeoffed": false, "ischargeoff": false, "lastupdatetime": "2024-07-09 08:08:28", "unitsrctype": "", "unitsrctype_title": "", "asyncstatus": "B", "asyncstatus_title": "已完成", "billentry": [ { "seq": 1, "materialmasterid_number": "FLEX_BTRIGGER", "material_number": "FLEX_BTRIGGER", "auxpty": { "颜色": { "number": "blue" } }, "lotnumber": "", "producedate": null, "expirydate": null, "qty": 1, "qtyunit2nd": 0, "baseqty": 1, "ownertype": "bos_org", "keepertype": "bos_org", "entrycomment": "", "invaccid": "0", "srcbillentity": "", "srcbillentryid": "0", "srcbillid": "0", "noupdateinvfields": "", "srcbillno": "", "srcbillentryseq": "0", "inspdemandbillid": "0", "inspdemandbillentryid": "0", "groupnumber": "", "groupseq": "", "afterentity": [ { "material1_number": "FLEX_BTRIGGER", "materialmasterid1_number": "FLEX_BTRIGGER", "seq": 1, "auxpty1": { "颜色": { "number": "blue" } }, "lotnumber1": "", "producedate1": null, "expirydate1": null, "qty1": 1, "qtyunit2nd1": 0, "baseqty1": 1, "ownertype1": "bos_org", "keepertype1": "bos_org", "entrycomment1": "", "subsrcbillentity": "", "subsrcbillentryid": "0", "subsrcbillid": "0", "noupdateinvfields1": "", "subsrcbillno": "", "subsrcbillentryseq": "0", "subinspdemandbillid": "0", "subinspdemandbillentryid": "0", "subgroupnumber": "", "subgroupseq": "" } ] } ] }
这是根据上述描述成功保存的形态转换单,其中弹性域字段也成功写入
3 注意事项
启动方案使用本贴特性需要升级到6.0.10及以上版本
以上方案仅供参考,具体业务具体分析
集成平台与OpenAPI联合集成场景(以弹性域集成为例)
本文2024-09-23 00:48:28发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-141866.html