数据流加速秘诀:树形单据集成也能那么快!

企业中的很多树形单据(如组织、部门、辅助资料等)在不同系统之间同步时,为了确保严格的上下游依赖关系,通常会在排好序后,再串行同步。但这也导致了树形单据同步效率较差的问题,而基于集成服务云的数据流功能,我们有了全新的解决方案,大大提升树形单据的同步效率。
让我们通过一个具体案例进一步了解它吧~
方案简介
我们以当前账套的行政组织向组织机构(演示)同步为例,将源系统组织树的根节点作为起点,配置数据流图。当组织数据写入至目标,将判断该节点是否存在下级,如有下级数据,则继续重复上述步骤,直到所有下级组织全部写入目标系统。

那么问题来了,为什么这样配置就可以加速树形单据的同步效率呢?
关键就在于数据流的运行机制,在判断出该条数据存在下级并使用查询组件查询出数据后,这部分数据会暂时缓存到工作区,再由后台任务引擎为每条数据分配一个线程并行执行。简单来说,数据流可以确保上下游没有依赖关系的数据或同层级的数据并行执行,因此能够大大提升数据的同步效率。
场景示例
1. 创建数据流资源
(1)创建资源目录&数据模型
创建资源目录“连接器>ERP>苍穹>基础资料”,并点击<集成对象导入>创建实体模型“组织机构(演示)”和“行政组织”。

(2)创建数据查询模型&事件模型
创建数据查询模型和对应的事件模型,该资源将用于第一个节点查询根组织信息。
如下图,创建行政组织查询模型:

(3)创建字段映射模型&加载模型
创建字段映射模型,该资源将用于将上游节点获取到的行政组织数据映射到组织机构(演示)中。

创建实体操作如下,点击<字段填充>选择刚才创建的字段映射组件,自动带出加载字段。

(4)创建数据过滤模型
创建数据过滤模型,该资源将用于判断上游加载的行政组织是否存在下级,如果不存在则直接结束该条数据线,如果存在继续查询下级组织,并循环执行。

脚本如下:
SELECT @@isleaf = FISLEAF FROM $connection.t_org_structure@sys WHERE FVIEWID=1 AND FORGID=@@$data.id;
if(isleaf==0){
return true;
}else{
return false;
}(5)创建脚本查询&数据读取
创建脚本查询模型,该组件用于查询上游节点组织对应的所有下级组织id,并将查询到的id赋值给步骤2中的数据查询模型的参数。
脚本如下:
var p = L(params.id) SELECT @@leaf_id[] = b.f
数据流加速秘诀:树形单据集成也能那么快!
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



