使用Flowable 6.4.0(也适用于Activiti 6.0.0),我正在通过读取任务表单属性在应用程序中呈现任务表单:
for (FormProperty formProperty : formService.getTaskFormData(taskId).getFormProperties()) {
//... render form field
}
我想用可以在表单设计器中设计并在任务上设置为formKey的Forms替换它(也是formReference,似乎formReference是Web应用程序的功能,用于选择表单以设置formKey并将表单部署到应用程序)。问题是我看不到任何用于根据表单密钥读取表单属性的API方法。
由于“不建议使用”任务表单属性,因此使用formKey在this question中读取答案是正确的方法,但是是否有API支持读取给定formKey
的表单字段?像formService.getFormData(formKey, taskId).getFormProperties();
一样?
文档(Flowable,Activiti)仅讨论读取已部署的表单资源文件my-custom-form.xml
,这是否意味着我必须自己解析表单文件?我还检查了Flowable Form Documentation和Sources,但看不到如何读取表单字段。
答案 0 :(得分:2)
如果要使用由Flowable Form Designer设计的表单,则还有其他API方法可在Flowable中获取启动表单和任务表单。 TaskService中的getTaskFormModel(String taskId)方法为您提供了与具有以下ID的Task相关联的表单定义:
如果查看此方法的实现,您会发现它使用userTask元素的formKey属性来基于键查找表单定义。
要获取流程定义的开始表单,可以使用以下代码查找startEvent元素的formKey属性,并通过FormEngine的键获取表单定义:
从 getTaskFromModel 方法检索 FormInfo 类时,可以使用 getFormModel 方法检索 FormModel 接口以获取Form模型的实例。因为 FormModel 可插拔,以便更轻松地定义自己的Form模型结构,所以您需要将 FormModel 接口转换为 SimpleFormModel 。从那里可以使用 getFormFields 方法访问表单定义的表单字段。