Коллеги, всем привет!
Появилась необходимость проверять MIME-Type у приложенных файлов в пользовательской задаче.
Используется camunda версии 7.13.0
Как выяснилось при создании формы в Camunda Modeler типа переменной file нет. Поэтому реализовал собственный тип как описано ниже:
и зарегистрировал его в конфигурацинном файле камунды:
@Override
public void preInit(ProcessEngineConfigurationImpl processEngineConfiguration) {
if (processEngineConfiguration.getCustomFormTypes() == null) {
processEngineConfiguration.setCustomFormTypes(new ArrayList<AbstractFormFieldType>());
}
List<AbstractFormFieldType> formTypes = processEngineConfiguration.getCustomFormTypes();
formTypes.add(new FileFormFieldType());
}
Далее создал кастомный валидатор и сделал обращение к нему из формы при помощи вызова бина как в примере ниже:
В конце главы про generated-task-forms
Данный валидатор вызывается при сабмите формы как и положено. Основная задача его проверить, что приложенный файл имеет нужный MIME-type. Но данный файл поступает в метод как inputObject и является экземпляром ByteArrayInputStream. Получить метаданные из variableScope - не получается, т.к. данная переменная еще не находится в скоупе переменных процесса.
Подскажите, где что делаю не так или, может, другой рабочий подход. Но хотелось бы разобраться как делать через кастомные валидаторы