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,它帮助我解决了这个问题:

https://forum.camunda.org/t/groovy-files-cant-invoke-methods-in-other-groovy-files-which-are-part-of-same-deployment/7750/5

这是解决方案(不是很令人满意 - 因为它需要大量样板代码):

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")