自定义函数可以插入/修改/查询数据映射表
函数例子如下:
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)