GroovyShell
プログラム内で「式エバリュエーター/エンジン」として使用しています。次の2つの入力を受け入れます。(a)1つ以上のinitスクリプト(b)ユーザー定義スクリプト。次に、両方が実行時にスクリプト(テキスト)の大きなチャンクとして連結され、シェルにフィードされます。
String initScripts = getFromDB()
String userScript = getFromUser()
def shell = new GroovyShell()
output = shell.evaluate(initScripts + userScript)
上記のコードはループで実行され、内容userScript
は異なります。
これまでのところ、( eg )で参照される可能性のあるinitScripts
変数定義(eg)のみが含まれています。def $yyyy = new Date().format('yyyy')
userScript
print "$yyyy 001"
これに対するより効率的なアプローチはありますか?(たとえば、シェルを再利用する方法は?)現在は非常に遅いためです。
編集: Groovyは必須です。他のスクリプトエンジンはお勧めしません。
編集: GroovyShellがこれを実行できるかどうかを考えています(擬似コード):
def shell = new GroovyShell()
shell.evaluate(initScripts)
for each userScript in DB {
shell.put(userScript )
def result = shell.evaluateThat()
println "Result is $result"
}
これは可能ですか?(前回グーグルで検索することはできませんが、間違っているといいのですが)