簡體   English   中英

如何將Groovy類加載到Activiti的Groovy腳本引擎中?

[英]How to load Groovy classes into the Groovy script engine of Activiti?

我在Activiti中加載具有以下結構的Groovy項目:

└───src
    └───main
        └───groovy
            ├───classes
            │       Foo.groovy
            │
            └───scripts
                    script.groovy

script.groovy

package scripts

import classes.Foo

Foo.groovy

package classes

class Foo {
  Foo(){
  }
}

我的問題是我的腳本的import語句: import classes.Foo未被Activiti解決。

我正在使用org.activiti:activiti-spring:5.21.0在Spring容器中運行Activiti。 我的腳本是使用org.activiti-engine:5.21.0的groovy腳本引擎評估的。

如何讓Activiti知道我的Foo.groovy課程?

我一直在尋找一種方法來指定類路徑但到目前為止沒有運氣。

我試圖手動解析文件中的導入語句並對其進行評估,但是我對該解決方案不滿意。

我看到Activiti使用腳本引擎GroovyScriptEngineImpl來評估我的腳本。

我設法使用GroovyClassLoader #parseClass()方法。

final GroovyScriptEngineImpl engine = (GroovyScriptEngineImpl) this.scriptingEngines.getEngineByName("groovy");
GroovyClassLoader classLoader = engine.getClassLoader();
Files.walk(...)
    .filter(Files::isRegularFile)
    .forEach(path -> {
        classLoader.parseClass(new GroovyCodeSource(path.toUri()));
    });
engine.setClassLoader(classLoader);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM