在 camunda 中定义表达式

define expression in camunda

我有一个具有自定义模型的流程,类似于以下模型(通过调用 http://localhost:8080/engine-rest/task/{id}/variables/ 获得):

{
    "Title": {
        "type": "String",
        "value": "aaa",
        "valueInfo": {
          
        }
      },
    "247f3af4-36cf-72cc-1a95-601f07640674": {
        "type": "String",
        "value": "{\"Title\":\"AA\",\"Value\":\"BB\"}",
        "valueInfo": {
      
        }
    }
}

我想在门口定义一个表达式。我应该怎么做?

我试试这些:

${ "247f3af4-36cf-72cc-1a95-601f07640674".Value == "AA"}

${ JSON("247f3af4-36cf-72cc-1a95-601f07640674").prop("Value") == "AA"}

${S(247f3af4-36cf-72cc-1a95-601f07640674).prop("Value").stringValue() == "AA"}

但出现以下错误:

Unknown property used in expression: ${ "247f3af4-36cf-72cc-1a95-601f07640674".Value == "AA"}. Cause: Could not find property Value in class java.lang.String
Error while evaluating expression: ${ JSON("247f3af4-36cf-72cc-1a95-601f07640674").prop("Value") == "AA"}. Cause: Error invoking function 'JSON'
ENGINE-01009 Error while parsing process. Error parsing '${S(247f3af4-36cf-72cc-1a95-601f07640674).prop("Value").stringValue() == "AA"}': syntax error at position 15, encountered 'c7', expected ')'.

您显示的是存储在过程数据中的 JSON 对象的值,对吗?过程数据的名称是什么?

在Java中使用JSON(),在过程中(JavaScript)使用S() (参见 https://docs.camunda.org/manual/7.17/reference/spin/json/01-reading-json/

将 S() 放在过程数据的名称周围以创建对象。然后你可以使用 .prop() 来导航它。 ${S(myData).prop("xyz")}.

在此示例中,我使用方法读取 REST 调用的 JSON 响应,然后提取字段:

https://github.com/rob2universe/camunda-http-connector-example

您在流程数据的名称周围使用 JSON(),然后您可以访问属性

终于找到答案了 我必须使用这样的东西:

${S(a247f3af4_36cf_72cc_1a95_601f07640674).prop("Value").stringValue() == "AA"}

变量名必须以字符开头,不要使用-.