Tinkerpop 2用于通过Gremlin.defineStep(..)支持用户定义的步骤
如何使用Tinkerpop 3实现相同目标?
是否有任何Gremlin API可以创建自定义步骤并组合一组遍历步骤?
任何建议都将受到高度赞赏。
由于 Kaniska
答案 0 :(得分:3)
TinkerPop 3.x并未完全建立DSL开发模式,因此随着时间的推移,建议会有一些建议的变化。 gremlin-users mailing list上有关于此的周边信息。
如果您正在使用Gremlin Server(或者可以将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 Server的路径上。那么你的init脚本只需要调用那个静态初始化器并加载你的DSL。