2015-04-28 41 views
1

我正在测试ArangoDb使用框架提供的图形功能。ArangoDb中Web界面上的Visulaization不能按预期工作

我想创建一个非常简单的图形像下面,类似于这里提供的Java驱动程序例子,https://github.com/arangodb/arangodb-java-driver/

List<EdgeDefinitionEntity> edgeDefinitions = new ArrayList<EdgeDefinitionEntity>(); 
    EdgeDefinitionEntity edgeDefinition = new EdgeDefinitionEntity(); 

    edgeDefinition.setCollection("myEdgeCollection"); 
    List<String> from = new ArrayList<String>(); 
    from.add("myCollection1"); 
    edgeDefinition.setFrom(from); 

    List<String> to = new ArrayList<String>(); 
    to.add("myCollection2"); 
    edgeDefinition.setTo(to); 


    edgeDefinitions.add(edgeDefinition); 

    GraphEntity graph = arangoDriver.createGraph("myGraph", 
      edgeDefinitions, null, true); 


    User myObject1 = new User("Homer", 38); 
    User myObject2 = new User("Bart", 36); 

    User myObject3 = new User("Marge", 39); 
    User myObject4 = new User("Lisa", 40); 

    DocumentEntity<User> vertexFrom1 = arangoDriver.graphCreateVertex(
      "myGraph", "myCollection1", myObject1, true); 
    DocumentEntity<User> vertexFrom2 = arangoDriver.graphCreateVertex(
      "myGraph", "myCollection1", myObject2, true); 

    DocumentEntity<User> vertexTo1 = arangoDriver.graphCreateVertex(
      "myGraph", "myCollection2", myObject3, true); 

    DocumentEntity<User> vertexTo2 = arangoDriver.graphCreateVertex(
      "myGraph", "myCollection2", myObject4, true); 

    EdgeEntity<?> edge1 = arangoDriver.graphCreateEdge("myGraph", 
      "myEdgeCollection", null, vertexFrom1.getDocumentHandle(), 
      vertexTo1.getDocumentHandle(), null, null); 
    EdgeEntity<?> edge2 = arangoDriver.graphCreateEdge("myGraph", 
      "myEdgeCollection", null, vertexFrom2.getDocumentHandle(), 
      vertexTo2.getDocumentHandle(), null, null); 

边缘收集似乎有一个正确的映射,

{"_from":"myCollection1/1544266710","_to":"myCollection2/1544987606"} 
{"_from":"myCollection1/1544528854","_to":"myCollection2/1545249750"} 

我正试图在Web界面中显示此图。图形可视化显示出一些我不明白的奇怪行为。在上面的设置中,我预计图中有四个节点,其边缘位于“Homer” - “Marge”和“Bart” - “Lisa”之间,但我只看到两个节点和一个边,即Homer - Marge。

Visulaization视图本身有时会显示没有节点并且在重新访问相同的页面时出现节点。

回答

4

图形查看器以随机顶点开始。这意味着它可能在打开时使用完全不同的起始顶点。

这是因为一般情况下的图表可以包含许多顶点并且将它们全部显示在一起不是一个选项,因为它可能需要很长时间才能渲染甚至崩溃浏览器。在起始处放入显示屏中心的顶点也不是很容易确定,因为这需要图形浏览器知道哪个顶点比其他顶点更重要或最重要。因为它不知道,所以有随机起点顶点选择。

您可以通过单击图形查看器右上角的过滤器图标来选择不同的起始/中心顶点。这将显示一个搜索输入字段,您可以使用该字段通过任何属性选择起始顶点(例如,如果顶点包含name属性,则为name == Homer)。

如果存在这样的顶点,它将与其所有直接连接的顶点一起放入屏幕的中心。请注意,只会显示从起始顶点到其直接连接的顶点的关系/边。间接连接默认情况下不会显示在图形浏览器中。点击任何显示的顶点将扩展(或缩小)它们,并可能引起进一步的关系。

所有这些都完成了,因为它可能无法在开始时显示整个图形(想象一个有几百万个节点的图形)。但正如你的问题所表明的那样,目前的解决方案可能并不直观。

+0

感谢您的回复,我现在更了解工作流程。我希望在这种情况下保持一致性,在这种情况下,重新访问图形选项卡,不会改变我之前看到的节点和边缘(在我的情况下,有时会显示根本没有显示重新访问图形选项卡的节点) – sat

+1

I也认为目前的行为可能有点混乱。我曾经提议改变图形查看器的行为,但是,我不知道这将如何适应进度。 – stj

+1

更新:ArangoDB 2.6中的图形查看器已经通过几种方式进行了修改:首先,它将向用户明确表示它只显示图形的一部分,其次,如果图形非常小,它会完全显示它。 2.6即将推出。 – stj