Gremlin 如何在Tinkerpop 3中定义自定义步骤?

Gremlin 如何在Tinkerpop 3中定义自定义步骤?,gremlin,tinkerpop3,Gremlin,Tinkerpop3,Tinkerpop 2用于支持用户定义的Gremlin.defineStep(..)步骤 如何使用Tinkerpop 3实现同样的效果 是否有任何gremlinapi来创建自定义步骤并组合一组遍历步骤 如有任何建议,将不胜感激 谢谢 迦腻色迦(Kaniska)对于Tinkerpop3.x来说,DSL开发模式还没有完全建立起来,所以随着时间的推移,建议可能会有一些变化。网上有这方面的相关信息 如果您使用的是Gremlin服务器(或者可以将Groovy合并到您的项目中),我认为没有理由不做一些Gro

Tinkerpop 2用于支持用户定义的Gremlin.defineStep(..)步骤

如何使用Tinkerpop 3实现同样的效果

是否有任何gremlinapi来创建自定义步骤并组合一组遍历步骤

如有任何建议,将不胜感激

谢谢
迦腻色迦(Kaniska)

对于Tinkerpop3.x来说,DSL开发模式还没有完全建立起来,所以随着时间的推移,建议可能会有一些变化。网上有这方面的相关信息

如果您使用的是Gremlin服务器(或者可以将Groovy合并到您的项目中),我认为没有理由不做一些Groovy元编程来实现这一点。使用标准的Gremlin Server zip发行版编辑generate-modern.groovy文件,使其在开头包含以下行:

GraphTraversal.metaClass.knows = { delegate.out('knows') }
然后用以下命令启动服务器:

bin/gremlin-server.sh conf/gremlin-server-rest-modern.yaml
然后是一个简单的卷曲:

$ curl "http://localhost:8182?gremlin=g.V(1).knows().values('name')"
{"requestId":"66c2c929-9cc2-491d-acb0-ae4d7eef6b00","status":{"message":"","code":200,"attributes":{}},"result":{"data":["vadas","josh"],"meta":{}}}
如果您有一个复杂的DSL,您可能不希望所有的逻辑都被困在groovy脚本中。非常简单-只需构建一个标准groovy项目,构造一个jar,包含某种形式的静态初始值设定项来调用元编程代码,并将其放置在Gremlin服务器的路径上。然后您的init脚本只需要调用静态初始值设定项,就可以加载DSL了