目录
(2)调用JanusGraphStep类中的executeGraphCentricQuery,可以从字面意思看出这个一个以图为中心的查询过程
一、以图为中心
我们从toList方法一路看到其与Hbase交互的部分,我将这个过程分为五部分
(1)获取最后一个step,调用他的next方法
// Traversal step
g.V().toList()
Traversal.toList ==> this.fill();
Traversal.fill ==> endStep.next();
(2)调用JanusGraphStep类中的executeGraphCentricQuery,可以从字面意思看出这个一个以图为中心的查询过程
// Step step
AbstractStep.next ==> this.processNextStart;
GraphStep.processNextStart ==> this.iteratorSupplier.get;
JanusGraphStep.setIteratorSupplier ===> executeGraphCentricQuery
// 此处的lambda表达式中的q的走向
JanusGraphStep
queries.entries().forEach(q -> executeGraphCentricQuery(builder, responses, q));
q : GraphCentricQuery
QueryProcessor.iterator
BackendQueryHolder<B> subquery = query.getSubQuery(i);
i : if (position == 0) return indexQuery;
QueryProcessor.getNewIterator
this.backendQuery = backendQueryHolder.getBackendQuery();
executor.execute(query, backendQuery, executionInfo, profiler);
executor : StandardJanusGraphTx
(2.1)this.iteratorSupplier
public JanusGraphStep(final GraphStep<S, E> originalStep) {
super(originalStep.getTraversal(), originalStep.getReturnClass(), originalStep.isStartStep(), originalStep.getIds());
originalStep.getLabels().forEach(this::addLabel);