进入hongyingqiang(案件分析服务)
第一步是调用宝盒,获取图数据加载信息(传递参数为调单账号、案件Id、当前的用户信息)
第二步通过宝盒回传的图加载数据(DownLoadGraphInfo),封装成Chart参数(拼接成实体ID-entityIds、链接ID-linkIds)
<span style="font-size: inherit;">第三步会将上一步封装好的Chart参数,转化成上图所需要的数据(上图限制最多20000个节点或者40000个链接),<b style=""><font color="#55beed">然后中间会通过一个HTTP调用的方式,访问图表服务的创建图表接口(/chartService/api/v1/chart/createChart)- 主要逻辑接口</font></b>,最后返回一个生成此次Chart的id返回给前端。</span><br>
进入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)
<span style="font-size: inherit;">该层主要将原始实体数据与链接数据,添加到对象ChangedData的newEntities、newLinks中(如果当前entities、links中不包含新传递过来的实体和链接才会添加,添加到 OrigianlEntities 和 OrigianlLinks中)。 向邻接关系中添加一条实体数据,</span>向邻接关系中添加一条链接数据<br>
原始图层处理实体
原始图层处理邻接关系: 添加一个实体
原始图层处理链接
原始图层处理邻接关系: 添加一个链接
设置来自父类(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中,继而保存到缓存中