如何通过 Camunda Rest-Api 获取表单字段值

How to get form-field values via Camunda Rest-Api

提问人:CrazyEight 提问时间:7/6/2020 更新时间:2/10/2021 访问量:2990

问:

有没有办法显式获取用户任务表单字段的值? 我有一个包含三个枚举值的表单字段。

enter image description here

当我进行REST调用时,我得到以下输出:/task/{id}/form-variables

{
"pruefungOk": {
        "type": "String",
        "value": null,
        "valueInfo": {}
    }
}

但是我想要的是这样的:

{
"pruefungOk": {
        "type": "String",
        "value": null,
        "valueInfo": {},
        "availableValues": ["ok", "notOk", "helloTest"] <-- Array of the values from first picture
    }
}

在不执行变通方法和脏代码的情况下,这是否可能?为什么没有REST调用呢?

休息 BPMN 卡蒙达

评论

0赞 Mitya 12/24/2022
有人解决这个问题吗?就个人而言,我们使用自定义类型的附加变量来解决问题。
0赞 Mitya 12/24/2022
如果变量 -> creste 新对象并填充此属性 availableValues out with enum values from form variable...

答:

0赞 arp 7/13/2020 #1

请看一下 https://forum.camunda.org/t/how-to-get-form-field-properties-using-rest-api/5981。看起来像相同的用例。

评论

0赞 rob2universe 7/14/2020
不喜欢那里描述的方法,因为它需要将静态值写入每个实例的变量,并且不必要地填满数据库。
0赞 rob2universe 7/14/2020 #2

https://docs.camunda.org/manual/7.13/reference/rest/task/get-rendered-form/ 有帮助吗?我知道它并不完美,但应该包含选项。

要从 bpmn 文件中提取静态信息,您也可以随时求助于 https://docs.camunda.org/manual/7.13/reference/rest/process-definition/get-xml/,然后将 jQuery 应用于响应中的 bpmn20Xml。

1赞 f.trajkovski 2/10/2021 #3

我知道这有点晚了,但也许你会在其他时间使用它,或者它会对其他人有所帮助。我所做的如下:

TaskFormData taskFormData = ProcessEngines.getDefaultProcessEngine().getFormService().getTaskFormData(taskId);

之后获取值:

taskFormData.getFormFields()
            .forEach(formField -> {
                if (formField.getType() instanceof EnumFormType) {
                    ((EnumFormType) (formField.getType())).getValues().forEach((key, value) -> {
                        System.out.println("This is the key:" + key);
                        System.out.println("This is the value:" + value);
                    });
                }
            });

评论

0赞 Mitya 12/13/2022
但是当我们需要传递这段代码时,我们如何才能在 swagger 中获取变量?
0赞 f.trajkovski 12/13/2022
@Митяй我不确定我是否符合你的意思,对于招摇的问题,我没有答案。we need to pass this code