1

使用 Flowable 6.4.0(也适用于 Activiti 6.0.0)我通过读取任务表单属性在我的应用程序中呈现任务表单:

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

我想用可以在表单设计器中设计并在任务中设置为 formKey 的表单替换它(也是 formReference,似乎 formReference 是选择表单以设置 formKey 并将表单部署到应用程序的 Web 应用程序功能)。问题是我没有看到任何基于表单键读取表单属性的 API 方法。

使用 formKey阅读此问题的答案是正确的方法,因为任务表单属性已“弃用”,但是是否有 API 支持读取给定的表单字段formKeyformService.getFormData(formKey, taskId).getFormProperties();什么?

文档(FlowableActiviti)仅谈论读取已部署的表单资源文件my-custom-form.xml,这是否意味着我必须自己解析表单文件?我还检查了 Flowable Form Documentation and Sources但我看不到如何阅读表单字段。

4

2 回答 2

3

如果您想使用通过 Flowable 表单设计器设计的表单,那么还有其他 API 方法可以在 Flowable 中获取开始表单和任务表单。TaskService 中的 getTaskFormModel(String taskId) 方法为您提供了与具有该 id 的任务相关联的表单定义:

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

如果查看此方法的实现,您会发现它使用 userTask 元素的 formKey 属性来根据键查找表单定义。

要获取流程定义的开始表单,您可以使用以下代码查找 startEvent 元素的 formKey 属性,并从 FormEngine 中按键获取表单定义:

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

当您从getTaskFromModel方法检索FormInfo类时,您可以使用getFormModel方法检索FormModel接口以获取 Form 模型的实例。因为FormModel是可插入的,以便更容易定义您自己的 Form 模型结构,所以您需要将FormModel接口转换为SimpleFormModel。从那里您可以使用getFormFields方法获取表单定义的表单字段。

于 2019-01-09T07:31:47.270 回答
0

根据Tijs Rademakers 的回答TaskListener,在(Flowable )中为我工作的代码:6.7.1

FormInfo taskFormData = Context.getProcessEngineConfiguration().getTaskService().getTaskFormModel(delegateTask.getId());
List<FormField> formFields = ((SimpleFormModel) taskFormData.getFormModel()).getFields();
于 2021-12-08T15:02:35.307 回答