在gremlin groovy脚本引擎初始化期间,如何用janus图形导入替换tinkerpop导入?

在gremlin groovy脚本引擎初始化期间,如何用janus图形导入替换tinkerpop导入?,gremlin,janusgraph,javascript-engine,groovyscriptengine,Gremlin,Janusgraph,Javascript Engine,Groovyscriptengine,我使用janus插件以以下方式初始化gremlin脚本引擎: GremlinScriptEngineManager engineManager = new DefaultGremlinScriptEngineManager(); engineManager.addPlugin(JanusGraphGremlinPlugin.instance()); engine = engineManager.getEngineByName("gremlin-groovy"); 引擎通常使用一些janus元素

我使用janus插件以以下方式初始化gremlin脚本引擎:

GremlinScriptEngineManager engineManager = new DefaultGremlinScriptEngineManager();
engineManager.addPlugin(JanusGraphGremlinPlugin.instance());
engine = engineManager.getEngineByName("gremlin-groovy");
引擎通常使用一些janus元素(例如,
multiplity.ONE2MANY
)评估查询:

。。。但对于查询:

qu = "mgmt.makePropertyKey('"+TEST_PROPERTY_KEY+"')"
        + ".dataType(String.class).cardinality(Cardinality.SINGLE).make();";
我得到:

MissingPropertyException: No such property: SINGLE for class: org.apache.tinkerpop.gremlin.structure.VertexProperty$Cardinality
脚本引擎似乎试图使用
org.apache.tinkerpop.gremlin.structure.VertexProperty$Cardinality
,而不是janus one
org.janusgraph.core.Cardinality

PS:如果我在查询中使用类的全名
org.janusgraph.core.Cardinality.SINGLE
,或者只使用
Cardinality
枚举的值(例如,just
SINGLE
),那么一切都可以正常工作


如何删除tinkerpop导入或强制脚本引擎使用插件中的janus导入。。。或者改变小精灵的查询是有意义的

在控制台中,您可以执行以下操作:

gremlin> import org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality as Card
gremlin> Card
==>class org.apache.tinkerpop.gremlin.structure.VertexProperty$Cardinality
但我认为出于某种原因,这对小精灵脚本引擎不起作用。我不认为我们已经暴露了在那里使用别名的能力


我认为您必须使用完整的类名
org.janusgraph.core.Cardinality.SINGLE
。当然,我想知道为什么要这样做模式修改。通常,模式修改是管理功能,您可以在
GremlinScriptEngine
之外处理,更直接地在代码中或作为脚本在控制台中处理。

在控制台中,您可以执行以下操作并别名:

gremlin> import org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality as Card
gremlin> Card
==>class org.apache.tinkerpop.gremlin.structure.VertexProperty$Cardinality
但我认为出于某种原因,这对小精灵脚本引擎不起作用。我不认为我们已经暴露了在那里使用别名的能力

我认为您必须使用完整的类名
org.janusgraph.core.Cardinality.SINGLE
。当然,我想知道为什么要这样做模式修改。通常,模式修改是管理功能,您可以在
GremlinScriptEngine
之外处理,更直接地在代码中或作为脚本在控制台中处理