提问人:CrazyEight 提问时间:7/6/2020 更新时间:2/10/2021 访问量:2990
如何通过 Camunda Rest-Api 获取表单字段值
How to get form-field values via Camunda Rest-Api
问:
有没有办法显式获取用户任务表单字段的值? 我有一个包含三个枚举值的表单字段。
当我进行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调用呢?
答:
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
评论