4.4【函数组件】数据中间表开放接口能力

映射关系:对象映射关系、人员映射关系、系统

自定义函数可以插入/修改/查询数据映射表

函数例子如下:
Map header=[:] //创建数据映射 Map param1=["ployDetailId":"155bd981457343f291e0edc13776217f",//策略明细id,如果策略被删除重新建了,这里需要改动 "sourceObjectApiName":"AccountObj",//源对象apiName,如果对象apiName变了,这里要改动 "destObjectApiName":"BD_Customer.BillHead",//目标对象apiName(虚拟的),如果对象apiName变了,这里要改动 "sourceDataId":"sourceDataId123",//源对象数据id "destDataId":"destDataId123666",//目标对象数据id "sourceDataName":"sourceDataName3666",//源对象数据name属性 "destDataName":"destDataName66",//目标对象数据name属性 "masterDataId":"sourceMasterDataId",//源主对象数据id(如果有) "remark":"remark1341"//备注, "enableUpdateSourceDataId": false // 允许修改源数据id,默认值:false ]; def result1=Fx.proxy.callAPI("erp.syncData.createSyncDataMapping",header,param1); //[false, HttpResult(statusCode=200, content={"errCode":"s106240000","errMsg":"成功"}, bytes=null), ] s106240000成功,其他失败 log.info(result1)

根据源对象数据id更新目标对象数据id

Map param2=["sourceObjectApiName":"AccountObj",//源对象apiName,如果对象apiName变了,这里要改动 "destObjectApiName":"BD_Customer.BillHead",//目标对象apiName(虚拟的),如果对象apiName变了,这里要改动 "sourceDataId":"sourceDataId123",//源对象数据id "destDataId":"destDataId123666"]//目标对象数据id def result2=Fx.proxy.callAPI("erp.syncData.updateSyncDataMapping",header,param2); //[false, HttpResult(statusCode=200, content={"errCode":"s106240000","errMsg":"成功"}, bytes=null), ] s106240000成功,其他失败 log.info(result2)

查询源对象数据id是否存在映射关系

Map param3=["sourceObjectApiName":"AccountObj",//源对象apiName,如果对象apiName变了,这里要改动 "destObjectApiName":"BD_Customer.BillHead",//目标对象apiName(虚拟的),如果对象apiName变了,这里要改动 "sourceDataId":["sourceDataId123"]]//源对象数据ids,List //如果需要查询目标对象数据id是否存在映射关系,把sourceDataId改成destDataId,如果两个都传只会根据源数据id查询 def result3=Fx.proxy.callAPI("erp.syncData.getSyncDataMappingBySourceDataId",header,param3); // [false, HttpResult(statusCode=200, content={"data":{"sourceDataId123": //{"sourceDataId":"sourceDataId123","isCreated":true,"destDataId":"destDataId123666","sourceDataName":"sourceDataName1233","updateTime":1611047455451,"lastSyncStatus":6, //"destDataName":"destDataName123","destTenantId":"81138","sourceObjectApiName":"AccountObj","destObjectApiName":"BD_Customer.BillHead","sourceTenantId":"81138", //"statusName":"新增成功","id":"aa46ed320312476485e932a1ca4b4263","lastSyncDataId":"92c86fb175254e54b990bd86b6ce1145","status":1}},"errCode":"s106240000","errMsg":"成功"}, bytes=null), ] //s106240000成功,其他失败 //data是一个Map,存储着存在映射关系的数据,key是源数据id,value是已存在的对应关系, log.info(result3)

自定义函数删除中间表:

删除后的中间表,会在集成流的日志记录删除的数据id
//必填,源对象apiName,erp的对象需要填写中间对象apiName. //删除主对象的时候,是会一起删除从对象,并在操作日志记录 def sourceObjectApiName = "BD_MATERIAL.BillHead"; //必填,目标对象apiName,erp的对象需要填写中间对象apiName def destObjectApiName = "ProductObj"; //必填,同步方向 crm->erp : 1 erp->crm : 2 def syncDirection = 1; //sourceDataIds跟destDataIds不能全为空 //sourceDataIds源对象的id列表,destDataIds目标对象列表 def sourceDataIds = ["20230316-000014"] //该类型用于触发ERP往CRM数据同步,使用crm数据id def type = "deleteDataMapping" def params = ["sourceObjectApiName":sourceObjectApiName, "destObjectApiName":destObjectApiName, "sourceDataIds":sourceDataIds, "syncDirection":syncDirection] def arg = ["type":type, "params":Fx.json.toJson(params)] def ret = Fx.proxy.callAPI("erp.syncData.executeCustomFunction", [:], arg) //同步结果处理逻辑: log.info(ret)

自定义函数新建erp字段映射表(系统字段映射、员工映射)

//channel合法值有 ERP_K3CLOUD,ERP_SAP,ERP_U8,OA,STANDARD_CHANNEL //"dataType":"employee" 表示新建的是人员 //dataCenterId是数据中心id //fsDataId是crm上的数据id.对于人员,这里是员工ID,不是crm人员对象的数据id. //erpDataId是erp上的数据id //fsDataName是crm的数据名称 //erpDataName是erp上的数据名称 Map data = ["dataCenterId":"数据中心id", "channel":"ERP_K3CLOUD","dataType":"employee", "fsDataId":"fsDataId","fsDataName":"fsDataName","erpDataId":"erpDataId","erpDataName":"erpDataName"]; def ret = Fx.proxy.callAPI("erp.syncData.createErpfieldmapping", [:], data); //同步结果处理逻辑: log.info(ret)

自定义函数查询erp字段映射表(系统字段映射、员工映射)

//系统字段映射、员工映射 //连接器id,数据中心id def dataCenterId = "xxxx"; //查询的类型:country、province、city、district、category、employee、employee_oa def dataType = "employee"; //fsDataId跟erpDataId不能全为空,如果都不为空以fsDataId查询,只有fsDataId为空时才会以erpDataId查询 def fsDataId = ["zzzz"] def erpDataId = ["xxx"] def type = "queryFieldMapping" def params = ["dataCenterId":dataCenterId, "dataType":dataType, "fsDataId":fsDataId, "erpDataId":erpDataId] def arg = ["type":type, "params":Fx.json.toJson(params)] def ret = Fx.proxy.callAPI("erp.syncData.executeCustomFunction", [:], arg) //同步结果处理逻辑: log.info(ret)
2024-01-22
98 1