如何通过 formKey 从 Activiti/Flowable API 读取表单字段
How to read form fields by formKey from Activiti/Flowable API
使用 Flowable 6.4.0(也适用于 Activiti 6.0.0)我通过读取任务表单属性在我的应用程序中呈现任务表单:
for (FormProperty formProperty : formService.getTaskFormData(taskId).getFormProperties()) {
//... render form field
}
我想将其替换为可以在表单设计器中设计并在任务中设置为 formKey 的表单(还有 formReference,似乎 formReference 是 select 表单的 Web 应用程序功能,用于设置 formKey 和部署表单应用程序)。问题是我没有看到任何 API 方法来读取基于表单键的表单属性。
使用 formKey 阅读 this question 中的答案是正确的方法,因为任务表单属性是 "deprecated",但是 是否 API 支持读取给定 formKey
? 类似于 formService.getFormData(formKey, taskId).getFormProperties();
?
文档(Flowable, Activiti) talks only about reading deployed form resource file my-custom-form.xml
, does that mean I have to parse form file myself? I also checked Flowable Form Documentation and Sources但我不知道如何阅读表单字段。
如果你想使用用Flowable Form Designer设计的表单,那么有额外的API方法来获取Flowable中的开始表单和任务表单。
TaskService 中的 getTaskFormModel(String taskId) 方法为您提供例如与具有该 ID 的任务关联的表单定义:
如果查看此方法的实现,您会发现它使用 userTask 元素的 formKey 属性来查找基于键的表单定义。
要获取流程定义的启动表单,您可以使用以下代码查找 startEvent 元素的 formKey 属性,并通过 FormEngine 中的键获取表单定义:
当您从 getTaskFromModel 方法中检索 FormInfo class 时,您可以使用 getFormModel 方法检索 FormModel 接口以获取 Form 模型的实例。因为 FormModel 是可插入的,以便更容易定义自己的表单模型结构,所以您需要将 FormModel 接口转换为 SimpleFormModel。从那里您可以使用 getFormFields 方法获取表单定义的表单字段。
基于:
TaskListener
(Flowable 6.7.1
) 对我有用的代码
FormInfo taskFormData = Context.getProcessEngineConfiguration().getTaskService().getTaskFormModel(delegateTask.getId());
List<FormField> formFields = ((SimpleFormModel) taskFormData.getFormModel()).getFields();
使用 Flowable 6.4.0(也适用于 Activiti 6.0.0)我通过读取任务表单属性在我的应用程序中呈现任务表单:
for (FormProperty formProperty : formService.getTaskFormData(taskId).getFormProperties()) {
//... render form field
}
我想将其替换为可以在表单设计器中设计并在任务中设置为 formKey 的表单(还有 formReference,似乎 formReference 是 select 表单的 Web 应用程序功能,用于设置 formKey 和部署表单应用程序)。问题是我没有看到任何 API 方法来读取基于表单键的表单属性。
使用 formKey 阅读 this question 中的答案是正确的方法,因为任务表单属性是 "deprecated",但是 是否 API 支持读取给定 formKey
? 类似于 formService.getFormData(formKey, taskId).getFormProperties();
?
文档(Flowable, Activiti) talks only about reading deployed form resource file my-custom-form.xml
, does that mean I have to parse form file myself? I also checked Flowable Form Documentation and Sources但我不知道如何阅读表单字段。
如果你想使用用Flowable Form Designer设计的表单,那么有额外的API方法来获取Flowable中的开始表单和任务表单。 TaskService 中的 getTaskFormModel(String taskId) 方法为您提供例如与具有该 ID 的任务关联的表单定义:
如果查看此方法的实现,您会发现它使用 userTask 元素的 formKey 属性来查找基于键的表单定义。
要获取流程定义的启动表单,您可以使用以下代码查找 startEvent 元素的 formKey 属性,并通过 FormEngine 中的键获取表单定义:
当您从 getTaskFromModel 方法中检索 FormInfo class 时,您可以使用 getFormModel 方法检索 FormModel 接口以获取 Form 模型的实例。因为 FormModel 是可插入的,以便更容易定义自己的表单模型结构,所以您需要将 FormModel 接口转换为 SimpleFormModel。从那里您可以使用 getFormFields 方法获取表单定义的表单字段。
基于
TaskListener
(Flowable 6.7.1
) 对我有用的代码
FormInfo taskFormData = Context.getProcessEngineConfiguration().getTaskService().getTaskFormModel(delegateTask.getId());
List<FormField> formFields = ((SimpleFormModel) taskFormData.getFormModel()).getFields();