目标数据脚本处理详解
目标数据脚本处理
使用说明:目标处理脚本最终的返回值应为Map,里面应包含id值和操作类型type,操作类型有SAVE, INSERT, UPDATE, DELETE, NOP,FAILED, UNKNOWN。详情可以参考kd.isc.iscb.util.connector.SaveDataType类。
注意:目标处理脚本、目标处理类、以及原有目标单操作是互斥的。使用了目标处理脚本或目标处理类,原有的目标单操作就失效了,需要在脚本里另外处理。例如:如果需要在目标处理脚本调单据保存操作,可参考$action的用法。
一、功能函数
1 $service(serviceName,params)
2 $action(entity,actions,data,judgeFields)
二、使用场景及配置说明
方案配置示例(以苍穹微服务为例)
一、功能函数
1 $service(serviceName,params)
参数名 | 参数类型 | 必填 | 说明 |
serviceName | String | 是 | 在集成云系统中登记好的服务类型的集成对象, 如在集成云中登记好的苍穹微服务,格式形如 mservice://cloudid.appid.service.method |
params | Map | 否 | 服务方法调用参数 |
函数功能说明:
集成服务调用,可调用苍穹微服务:
格式形如:mservice://cloudid.appid.service.method,
具体例子:mservice://isc.iscb.ISCDataCopyService.queryExecutionLogs
也可以调用eas façade类型服务,
格式形如:facade://façade全限定名:方法名
具体例子:
facade://com.kingdee.eas.basedata.master.cssp.app.SyncSupplierFacade:syncSupplier
2 $action(entity,actions,data,judgeFields)
参数名 | 参数类型 | 必填 | 说明 |
entity | String | 是 | 实体名 |
actions | List | 否 | 操作列表 |
data | Map | 是 | 转换生成的目标数据 |
judgeFields | List | 是 | 候选键,单头的候选键使用 $ 作为 Key,分录的候选键使用分录字段名为key |
函数功能说明:
调用目标系统实体的操作功能,如调用苍穹、eas实体的保存、提交等方法。多个操作列表会被封装在一个事务中进行调用,失败时会全部回滚。
注:如果希望执行操作产生异常时,根据异常信息执行不同逻辑,则可以参考以下脚本
catch(e){
if(e.message contains '编码' && e.message contains '已存在'){
// 执行更新
}
throw e;
}
二、使用场景及配置说明
业务方希望在写数阶段需要完成多个服务或操作的调用,可以在目标脚本处理中完成服务编排逻辑。
方案配置示例(以苍穹微服务为例)
(1)先将服务所需参数作为属性字段配置好结构类型的集成对象
(2)将该集成对象作为目标对象配置好集成方案
(3)在集成方案的目标数据处理脚本中编写需要调用服务的脚本代码
注意:如上图所示,在脚本中调用的微服务
mservice://isc.iscb.ISCDataCopyService.queryExecutionLogs 应先在集成对象中登记如下图
(4)调用脚本编写示例
如在业务中已经注册对应微服务如下所示
则$service函数调用脚本代码编写示例如下:
var params = {“executionId”:”111111111”,”limit”:10};
var result = $service(“mservice://isc.iscb.ISCDataCopyService.queryExecutionLogs”,params);
注意:
在目标脚本编写中只允许访问目标系统;
如果是研发环境调试,可直接断点自己开发的服务实现方法中,执行启动方案后,若能正确调用到方法,则证明已经调通。若进入方法的参数不符合期望,则调整方案配置即可。
如果是希望在目标脚本中调用实体的操作列表,则$action函数脚本调用样例如下:
var entity = "isc_demo_basedata_1";
var actions = ['save'];
var data = tar;
var judgeFields = {'$':['id'],'entryentity':['id']};
var result = $action(entity,actions,data,judgeFields);
return result;
注意:实体要先在集成对象中登记。
目标数据脚本处理详解
本文2024-09-23 00:50:28发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-142081.html