代码之家  ›  专栏  ›  技术社区  ›  Piro

如何通过formKey从Activiti/Flowable API读取表单字段

  •  1
  • Piro  · 技术社区  · 6 年前

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

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

    阅读英文答案 this question 使用formKey是正确的方法,因为任务表单属性“已弃用”,但 formKey ? 差不多 formService.getFormData(formKey, taskId).getFormProperties(); ?

    Flowable , Activiti )仅讨论读取已部署的表单资源文件 my-custom-form.xml ,这是否意味着我必须自己解析表单文件?我还检查了流动表单 Documentation Sources

    1 回复  |  直到 6 年前
        1
  •  3
  •   Tijs Rademakers    6 年前

    如果您想使用使用可流动表单设计器设计的表单,那么还有其他API方法来获取可流动表单中的开始表单和任务表单。

    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

    FormInfo 来自 getTaskFromModel 方法,您可以使用 getFormModel 方法来检索 接口以获取表单模型的实例。因为 FormModel 是可插入的,为了更容易定义自己的表单模型结构,您需要强制转换 FormModel 接口到 方法来获取表单定义的表单字段。