Получение данных о процессной форме
Бин io.jmix.bpm.processform.ProcessFormDataExtractor предоставляет программный доступ к информации о форме процесса. Ниже показан пример REST‑контроллера, который использует этот бин для получения данных формы, связанной с запущенным экземпляром процесса.
@RestController
@RequestMapping("rest/bpm/process-form-data")
public class FormDataController {
@Autowired
private ProcessFormDataExtractor processFormDataExtractor;
@GetMapping(produces = "application/json")
public FormData getTaskFormData(
@RequestParam(required = false) String taskId,
@RequestParam(required = false) String processDefinitionId) {
if (Strings.isEmpty(taskId) && Strings.isEmpty(processDefinitionId)) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "The taskId or processDefinitionId parameter has to be provided");
}
if (!Strings.isEmpty(taskId) && !Strings.isEmpty(processDefinitionId)) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "The request cannot contain both taskId and processDefinitionId.");
}
if (Strings.isEmpty(taskId)) {
return processFormDataExtractor.getStartFormData(processDefinitionId); (1)
} else {
return processFormDataExtractor.getTaskFormData(taskId); (2)
}
}
}
| 1 | При указании processDefinitionID будут возвращены данные стартовой формы процесса. |
| 2 | При указании taskID возвращаются данные формы соответствующей задачи. |
Тело успешного ответа:
{
"type": "jmix-screen",
"screenId": "FormExample",
"openMode": "DIALOG",
"businessKey": null,
"businessKeySource": null,
"allowedProcessKeys": [],
"fields": [],
"outcomes": [],
"formParams": [],
"outputVariables": []
}
| Обязательно защищайте эндпоинты приложения. Используйте примеры кода из раздела Кастомные эндпойнты в качестве руководства. |