调单账号新建上图
2021-02-22 11:39:18 5 举报
AI智能生成
调单账号新建上图逻辑
作者其他创作
大纲/内容
获取链接合并的模式
接口
api/v1/chart/{uuid}/merge-filter/{linkType}
接口逻辑说明
会从LinkMergeGraph 的全局属性 userMergeFilters 根据链接类型获取指定的合并规则,如果为空,使用默认的合并规则(默认的是定向的),不为空一定是上次调用链接合并接口保存的合并的规则
数据样例
代码样例
根据链接类型获取合并规则
链接合并
接口
api/v1/chart/{uuid}/merge-link
接口逻辑说明
从缓存中获取到Chart后,进行链接合并逻辑
数据样例
单一、定向、多重(链接合并取消后,取的链接是实体合并层的Links)对比
代码样例
取消链接合并
接口
api/v1/chart/{uuid}/cancel-merge-link
接口逻辑说明
首先会将链接的合并规则修改成不合并,然后将之前这层的全局属性全部清除,如afterToBefore,nearLinks,链接合并层有个属性graph,实际指向的是实体合并层这个引用,而实体合并层的链接是没有合并处理过的,原始的,直接讲他的links返回即可,从而完成了链接合并的取消
数据样例
代码样例
整体调用流程
调用接口流程
其中部分接口可以忽略不看
调用接口说明
进入hongyingqiang(案件分析服务)
第一步是调用宝盒,获取图数据加载信息(传递参数为调单账号、案件Id、当前的用户信息)
第二步通过宝盒回传的图加载数据(DownLoadGraphInfo),封装成Chart参数(拼接成实体ID-entityIds、链接ID-linkIds)
第三步会将上一步封装好的Chart参数,转化成上图所需要的数据(上图限制最多20000个节点或者40000个链接),然后中间会通过一个HTTP调用的方式,访问图表服务的创建图表接口(/chartService/api/v1/chart/createChart)- 主要逻辑接口,最后返回一个生成此次Chart的id返回给前端。
进入Chart(图表服务)
获取当前用户案件内的resId(每上传一个数据都对应一个resId),获取的是DataGovResource内状态为完成的且未删除的
根据分析服务带过来的 entityIds、linksIds ,分别调用图库服务接口queryLinkProperty、queryEntities,封装各自的properties属性,然后将实体和链接封装到 GraphData
构建SavedChart 信息(主要构建ChartBasicInfo-图表基础信息,ChartData-图表数据)
创建Chart,初始化图表的时候构建了四层图结构(分别是: 当前Chart层、linkMergeGraph -链接合并层 、EntityMergeGraph - 实体合并层、OriginalGraph-原始图层)、将elp数据加入各个图层,最后将Chart保存在ehcache 缓存中
linkMergeGraph -链接合并层 构造函数初始化特别说明
初始化的同时,设置链接合并图层的合并模式
默认合并规则为定向、标签展示选择了 链接类型、次数
添加图数据(主要逻辑)
操作图表加锁,同一个图表当前只能由一个人操作,为chart设置 ElpEntities、ElpLinks
chart 添加数据
addData调用顺序
addData 调用顺序依次为 chart -> linkMergeGraph -链接合并层)-> EntityMergeGraph - 实体合并层 -> OriginalGraph-原始图层
OriginalGraph-原始图层 -> EntityMergeGraph - 实体合并层 -> linkMergeGraph -链接合并层 -> chart)
从最下层开始处理数据,依次传递给上次 改变后的数据 (changedData)
各图层主要逻辑
原始图层(OriginalGraph)
该层主要将原始实体数据与链接数据,添加到对象ChangedData的newEntities、newLinks中(如果当前entities、links中不包含新传递过来的实体和链接才会添加,添加到 OrigianlEntities 和 OrigianlLinks中)。 向邻接关系中添加一条实体数据,向邻接关系中添加一条链接数据
原始图层处理实体
原始图层处理邻接关系: 添加一个实体
原始图层处理链接
原始图层处理邻接关系: 添加一个链接
设置来自父类(GraphAbstract)继承的属性 entities、links、nearLinks
实体合并层(EntityMergeGraph )
本层主要是获取到下层(原始图层) 返回的newEntities和newLinks,进行数据处理,然后添加到添加到本层数据结构中
本层同样会新建一个ChangedData对象的,设置上newEntities、newLinks、设置上下层返回的原始实体、链接
设置来自父类(GraphAbstract)继承的属性 entities、links、nearLinks
链接合并层(linkMergeGraph )
本层主要根据下层返回的newData.getNewEntities(), newData.getNewLinks() 进行链接合并,默认合并规则是定向,第一次走BACK(后端处理) ,没有用户指定的合并格则
本层添加数据只会出新新增数据和需要更新属性的链接数据
合并链接
设置来自父类(GraphAbstract)继承的属性 entities、links、nearLinks
chart层
回到本层的时候,原始图层、实体合并层、链接合并层数据都已经处理好,对应的属性和数据已经装配到chart上
Chart结构
Chart 已经填充好数据,设置到缓存中,对当前图表进行解锁操作,返回给前端该Chart的id
构建好了上图数据 changedData,同时也装配到了Chart中,继而保存到缓存中
保存图表
接口
api/v1/chart/case/{case-id}/charts/{chart-id}
接口逻辑说明
保存的时候,直接从缓存中取出Chart,然后依次将原始图层、链接合并层、实体合并层对象依次序列化到服务器指定路径文件下,然后保存到mongo
代码样例
保存图表主要逻辑
获取图表数据
接口
api/v1/chart/case/{caseid}/getChart/{chartid}
接口逻辑说明
获取图表的时候,会首先清理掉缓存,然后将之前保存的图表的时候,对各层数据序列化后的内容,进行反序列化,每层都会保存序列化id,以此找到服务器上对应路径下的文件内容
代码样例
反序列化
读取指定文件内容进行反序列化
0 条评论
下一页