图表数据库的新手,并尝试使用Neo4j博客中的示例在Java中创建ACL:
Access control lists the graph database way
问题在于提供了ruby代码:
#Here's our function to check the distance between principals (and to see if they're on the same path at all).
def depth_of_principal( principal, reference_principal )
result = reference_principal.outgoing( :IS_MEMBER_OF_GROUP ).depth( :all ).path_to( principal )
return result.nil? ? nil : result.size
end
我应该在java中使用最短路径算法,还是我错了?将此移植到java的正确方法是什么?
PathFinder<Path> finder = GraphAlgoFactory.shortestPath(Traversal.expanderForTypes(RelTypes.IS_MEMBER_OF_GROUP, Direction.OUTGOING), maxDepth);
Path path = finder.findSinglePath(principal, referencePrincipal);
一件不合适的事情是maxDepth,但由于我的路径不会超过15,我想它应该没问题?
答案 0 :(得分:0)
当然,使用最短路径(因为你确实在寻找这两个主体之间的最短路径)是合适的。而且你可以在这里看到最大深度作为安全网,这样你的遍历不会发疯。