3

Tinkerpop 2 曾经通过 Gremlin.defineStep(..) 支持用户定义的步骤

如何使用 Tinkerpop 3 达到同样的效果?

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

任何建议将不胜感激。

谢谢卡尼斯卡

4

1 回答 1

4

TinkerPop 3.x 的 DSL 开发模式尚未完全建立,因此随着时间的推移,建议会有所变化。gremlin-users mailing list上有关于此的相关信息。

如果您正在使用 Gremlin Server(或者可以将 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 Server 的路径上。那么您的初始化脚本只需要调用该静态初始化程序并加载您的 DSL。

于 2016-07-21T12:12:21.453 回答