Как читать поля формы с помощью formKey из Activiti / Flowable API - PullRequest
0 голосов
/ 08 января 2019

Использование Flowable 6.4.0 (также относится к Activiti 6.0.0) Я отображаю форму задачи в своем приложении, читая свойства формы задачи:

for (FormProperty formProperty : formService.getTaskFormData(taskId).getFormProperties()) {
//... render form field
}

Я хотел бы заменить это формами, которые могут быть разработаны в конструкторе форм и установлены для задачи как formKey (также formReference, кажется, formReference - это функция веб-приложения, позволяющая выбирать форму для установки formKey и развертывать форму в приложении). Проблема в том, что я не вижу метода API для чтения свойств формы на основе ключа формы.

Чтение ответов в этот вопрос с использованием formKey является правильным способом, поскольку свойства формы задачи «устарели», но есть ли поддержка API для чтения полей формы для заданного formKey? Что-то как formService.getFormData(formKey, taskId).getFormProperties();?

Документация ( Flowable , Activiti ) говорит только о чтении файла ресурса развернутой формы my-custom-form.xml, значит ли это, что я должен сам анализировать файл формы? Я также проверил Flowable Form Документация и Sources , но я не вижу, как читать поля формы.

1 Ответ

0 голосов
/ 09 января 2019

Если вы хотите использовать формы, разработанные с помощью Flowable Form Designer, то есть дополнительные методы API для извлечения начальной формы и формы задачи в Flowable. Метод getTaskFormModel (String taskId) в TaskService предоставляет, например, определение формы, связанное с задачей, с таким идентификатором:

https://github.com/flowable/flowable-engine/blob/master/modules/flowable-engine/src/main/java/org/flowable/engine/TaskService.java#L323

Если вы посмотрите на реализацию этого метода, то увидите, что он использует атрибут formKey элемента userTask для поиска определения формы на основе ключа.

Чтобы получить начальную форму определения процесса, вы можете использовать следующий код для поиска атрибута formKey элемента startEvent и получить определение формы по ключу из FormEngine:

https://github.com/flowable/flowable-engine/blob/master/modules/flowable-rest/src/main/java/org/flowable/rest/service/api/repository/ProcessDefinitionResource.java#L145

Когда вы извлекли класс FormInfo из метода getTaskFromModel , вы можете использовать метод getFormModel , чтобы получить интерфейс FormModel для получения экземпляр модели Form. Поскольку FormModel сделан подключаемым, чтобы упростить определение вашей собственной структуры модели Form, вам необходимо привести интерфейс FormModel к SimpleFormModel . Оттуда вы можете использовать метод getFormFields , чтобы получить доступ к полям формы определения формы.

...