Как определить пользовательский шаг в Tinkerpop 3?

Tinkerpop 2 используется для поддержки пользовательского шага через Gremlin.defineStep(..)

Как я могу добиться того же, используя Tinkerpop 3?

Есть ли какой-нибудь Gremlin API для создания пользовательского шага и объединения набора шагов обхода?

Любое предложение будет высоко оценено.

Спасибо Каниска

1 ответ

Шаблоны для разработки DSL не полностью установлены для TinkerPop 3.x, поэтому ожидайте некоторые изменения в советах с течением времени. Об этом есть информация в списке рассылки gremlin-users.

Если вы используете Gremlin Server (или можете включить Groovy в свой проект), я не вижу причин, чтобы не просто использовать метапрограммирование Groovy, чтобы заставить это работать. Используя стандартный zip-дистрибутив Gremlin Server, отредактируйте файл 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, создайте jar, включите некоторую форму статического инициализатора, чтобы вызвать код метапрограммирования и поместить его в путь Gremlin Server. тогда ваш скрипт инициализации просто должен вызвать этот статический инициализатор, и ваш DSL загружен.

Другие вопросы по тегам