如何通过插件开发的方式在业务关联中实现自定义的“字段映射”?

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

如何通过插件开发的方式在业务关联中实现自定义的“字段映射”?

问题描述:

现在区块链存证服务是通过【业务关联】模块中的“字段映射”来设置业务数据到链上存证数据之间的对应转换关系。即在启动上链任务时,通过将满足上链条件的业务数据,按照字段映射的设置转换成上链的“存证数据”。当前区块链存证服务中的“字段映射”标准实现只能从业务关联中的“业务对象”中选择业务字段,可以使用有限的“聚合运算”等方法对业务数据上链进行“预处理”,最终形成满足链上数据格式的存证数据。而在某些上链场景中,可能有更加复杂的“字段映射”设置需求,就可以通过插件开发的方式来实现了。

解决方案:

1、进入“区块链存证服务”的业务关联,在“字段映射”切换页签为“自定义”。

 

2、点击并打开“微服务参数”设置弹窗。

其中:

  • “业务云”选择插件所在的云,当为空时默认调用的是平台微服务;

  • “业务应用”选择插件所在的应用;

  • “服务名称”为实现了 kd.bsc.bea.mservice.api.BizModelToDataTypeService 接口的微服务名称;

  • “方法名”固定为 transform,无需填写。

 

3、点击并确认微服务参数后,点击“确定”,并保存业务关联。则采用此“业务关联”的上链任务在启动执行时,将不再调用区块链存证服务的标准“字段映射”,而是通过微服务调用的方式直接调用用户自定义实现的该微服务方法。

 

需要注意的是,如果使用了自定义插件方式来实现“字段映射”,则该业务关联中的标准字段映射设置将不会生效(即使已经设置了)

 

关于微服务:金蝶云·苍穹平台中是以应用为最小单位来提供服务的,因此根据云(cloudid)、应用(appid)即可唯一确定一套服务,所以在业务上可以某服务注册到一个应用下的服务工厂类ServiceFactory中,即可被其他应用所调用。为了实现“字段映射”的自定义插件,必须实现 kd.bsc.bea.mservice.api. BizModelToDataTypeService 接口,即:

public interface BizModelToDataTypeService {
    Map<String, Object> transform(Long mappingPkId, DynamicObject bizModelData);
}


可以看到,transform 方法主要需要实现从“待上链”的业务数据到最终存证数据的格式转换。即通过此接口给定的“输入参数”以及其他自定义实现的方法,生成最终“待存证”的数据。

方法的入参为:

  • mappingPkId 是运行时调用此方法的“业务关联”主键,因此可以通过这个参数查询业务关联的其他基本信息等上下文(例如:“业务关联”所关联的“存证实体”或“业务对象”等);

  • bizModelData 是经过上链条件过滤后的一条业务数据,一般插件需要根据业务数据的单个字段或多个字段,来对应地生成满足“存证实体”数据结构定义的各个字段值。此处也可以使用哈希函数等方法对敏感、隐私数据等进行处理,避免“明文”的数据上链。

最终的返回参数是一个 Map,即满足存证实体数据结构定义的一条“待存证”数据。其中的字段定义需要对照存证实体中的数据结构定义,且必须满足存证字段类型、必选等类型限制。

 

更多关于区块链存证服务的“数据所有权”插件实现,见文章:

https://vip.kingdee.com/questions/227052524379678208/answers/227052524379678208

 

更多关于区块链存证服务的“上链条件”插件实现,见文章:

https://vip.kingdee.com/questions/223164695522962688/answers/223164695539739904

 

更多关于区块链存证服务的“事件触发”存证上链,见文章:

https://club.kdcloud.com/questions/215842974327500032/answers/215842974361054464

 

更多关于苍穹的自定义微服务调用,见文章:https://club.kdcloud.com/article/82065157714706944


如何通过插件开发的方式在业务关联中实现自定义的“字段映射”?

问题描述:现在区块链存证服务是通过【业务关联】模块中的“字段映射”来设置业务数据到链上存证数据之间的对应转换关系。即在启动上链任务...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息