Camunda:在外部 Groovy 脚本中使用提供的 Class
Camunda: Use in an external Groovy script a provided Class
我想用于编写外部 Groovy 脚本。
为了不抄很多代码,想分享classes.
我有:
- external_test.groovy
- Input.groovy
运行 Intellij 中的 external_test.groovy
有效。
输入很简单 class:
package helpers
class Input {
String serviceConfig
String httpMethod
String path
LinkedHashMap headers = [:]
String payload
Boolean hasResponseJson
}
Camunda执行脚本时,找不到class:
import helpers.Input
...
并抛出异常:
unable to resolve class helpers.Input @ line 16, column 9. new helpers.Input(serviceConfig: "camundaService", ^ 1 error
在部署中列出:
我是不是漏掉了什么,或者这是否不受支持?
我在 Camunda 论坛上找到了 post,它帮助我解决了这个问题:
这是解决方案(不是很令人满意 - 因为它需要大量样板代码):
static def getScript(fileName, execution) {
def processDefinitionId = execution.getProcessDefinitionId()
def deploymentId = execution.getProcessEngineServices().getRepositoryService().getProcessDefinition(processDefinitionId).getDeploymentId()
def resource = execution.getProcessEngineServices().getRepositoryService().getResourceAsStream(deploymentId, fileName)
def scannerResource = new Scanner(resource, 'UTF-8')
def resourceAsString = scannerResource.useDelimiter('\Z').next()
scannerResource.close()
GroovyShell shell = new GroovyShell()
return shell.parse(resourceAsString)
}
def helper = getScript("helpers/helper_classes.groovy", execution)
helper.myFunction("hello")
我想用于编写外部 Groovy 脚本。
为了不抄很多代码,想分享classes.
我有:
- external_test.groovy
- Input.groovy
运行 Intellij 中的 external_test.groovy
有效。
输入很简单 class:
package helpers
class Input {
String serviceConfig
String httpMethod
String path
LinkedHashMap headers = [:]
String payload
Boolean hasResponseJson
}
Camunda执行脚本时,找不到class:
import helpers.Input
...
并抛出异常:
unable to resolve class helpers.Input @ line 16, column 9. new helpers.Input(serviceConfig: "camundaService", ^ 1 error
在部署中列出:
我是不是漏掉了什么,或者这是否不受支持?
我在 Camunda 论坛上找到了 post,它帮助我解决了这个问题:
这是解决方案(不是很令人满意 - 因为它需要大量样板代码):
static def getScript(fileName, execution) {
def processDefinitionId = execution.getProcessDefinitionId()
def deploymentId = execution.getProcessEngineServices().getRepositoryService().getProcessDefinition(processDefinitionId).getDeploymentId()
def resource = execution.getProcessEngineServices().getRepositoryService().getResourceAsStream(deploymentId, fileName)
def scannerResource = new Scanner(resource, 'UTF-8')
def resourceAsString = scannerResource.useDelimiter('\Z').next()
scannerResource.close()
GroovyShell shell = new GroovyShell()
return shell.parse(resourceAsString)
}
def helper = getScript("helpers/helper_classes.groovy", execution)
helper.myFunction("hello")