У меня есть скрипт с именем /tmp/scripts/a.gremlin, который содержит одну функцию filterOver.
def filterOver(age) {
return g.V.filter{it.age > age}
}
Моя конфигурация rexster conf/rexster-cassandra.xml содержит правильный раздел расширений.
<extensions>
<allows>
<allow>tp:gremlin</allow>
</allows>
<extension>
<namespace>tp</namespace>
<name>gremlin</name>
<configuration>
<scripts>/tmp/scripts</scripts>
<allow-client-script>true</allow-client-script>
<cache-scripts>true</cache-scripts>
</configuration>
</extension>
</extensions>
Я запустил свой сервер rexster, запустив
bin/titan.sh start
Теперь, когда я выполняю
http://localhost:8182/graphs/graph/tp/gremlin?script=filterOver(30)&load=[a]
я получаю исключение
{"success":false,"api":{"description":"оценить специальный сценарий Gremlin для графика.","parameters":{"rexster.showTypes":"отображает свойства элементов с их родной тип данных (по умолчанию false)", "load": "список хранимых процедур, которые нужно выполнить до "скрипта" (если "скрипт" не указан, последний скрипт в этом аргументе вернет значения) ,"returnTotal":"если установлено значение true, будет повторен полный набор результатов и возвращены результаты (по умолчанию - false)","language":"используемый вариант языка гремлинов (по умолчанию - groovy)","params" :"карта параметров для привязки к обработчику скриптов","сценарий":"сценарий Gremlin для оценки","rexster.returnKeys":"массив возвращаемых ключей свойств элементов (по умолчанию возвращаются все свойства элементов )","rexster.offset.start":"начальный индекс для выгружаемого набора данных, который будет возвращен","rexster.offset.end":"конечный индекс для выгружаемого набора данных, который будет возвращен"}}," сообщение":"","ошибка":"javax.script.ScriptExce ption: groovy.lang.MissingMethodException: Нет подписи метода: com.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.filterOver() применимо для типов аргументов: (java.lang.Integer) значений: [30]"}
я тоже пробовал
http://localhost:8182/graphs/graph/tp/gremlin?params={%22age%22:30}&script=filterOver(age)&load=[a]
и даже следующее
http://localhost:8182/graphs/graph/tp/gremlin?age=30&script=filterOver(age)&load=[a]
Так как же правильно передавать параметры функциям?