Процесс разработки DSL одинаков для любого случая. Напишите свой DSL, как описано в документации, на которую вы ссылаетесь, а затем скомпилируйте его в файл jar. Скопируйте файл jar в каталог /lib
консоли Gremlin Console. Запустите консоль и используйте команду import
, чтобы ссылаться на ваши классы DSL, чтобы вы могли их использовать.
Оттуда вам нужно будет подключиться к вашему графу, используя обходы на основе удаленного / байт-кода, поэтому предполагая, что ваши конструкции DSL a SocialTraversalSource
, как показано в примере, вы можете:
gremlin> import com.mycompany.gremlin.dsl.SocialTraversalSource
...
gremlin> social = traversal(SocialTraversalSource.class).withRemote(...)
...
gremlin> social.persons("marko").knows("josh")
Если вы хотите разработать свой DSL исключительно в консоли Gremlin, вспомните, что вы просто работаете в среде Groovy и, следовательно, имеете доступ в полном объеме:
gremlin> g = traversal().withRemote('conf/remote-graph.properties')
==>graphtraversalsource[emptygraph[empty], standard]
gremlin> GraphTraversal.metaClass.knows = { String personName ->
......1> return delegate.out("knows").hasLabel("person").has("name", personName)
......2> }
==>groovysh_evaluate$_run_closure1@6a638c79
gremlin> g.V().has('person','name','marko').knows('josh')
==>v[4]
gremlin> g.V().has('person','name','marko').knows('josh').out().elementMap()
==>[id:5,label:software,name:ripple,lang:java]
==>[id:3,label:software,name:lop,lang:java]
Немного метапрограммирования вы можете взломать метод DSL без особых проблем.