在前面的案例中,我们使用HTML定义了表单。其实这个表单不仅可以使用HTML,还可以使用JSON来定义表单。可能有很多小伙伴在网上看到过一些使用JSON定义表单的案例。今天,在这篇文章中,宋哥将与大家分享如何使用JSON来定义Flowable表单。1.默认规则使用JSON来定义Flowable表单。我们可以利用SpringBoot的默认机制,将表单文件放在classpath:forms目录下,系统启动时会自动部署表单文件。默认情况下,表单文件的后缀为.form。不过对于默认的表单文件位置和表单文件后缀,我们也可以修改,在application.properties配置文件中添加如下内容:#默认表单文件后缀flowable.form.resource-suffixes=**.form#Default表单文件位置flowable.form.resource-location=classpath*:/forms/2。创建表单仍然以我们的请假申请为例,我创建一个名为application_form.form的表单文件,如下:{"key":"application_form.form","name":"ManagerApprovalForm","fields":[{"id":"days","name":"请假天数","type":"string","required":true,"placeholder":"empty"},{"id":"reason","name":"请假原因","type":"string","required":true,"placeholder":"empty"},{"id":"startTime","name":"开始时间","type":"date","required":true,"placeholder":"empty"},{"id":"endTime","name":"结束时间","type":"date","required":true,"placeholder":"empty"}]}这个键是表单的唯一标识符。当有多种形式时,该值不能重复。name是表单的名称,fields定义具体的字段。每个filed中有四个字段的定义,id代表字段名,name是字段的中文名称,type代表字段的类型,require代表字段是否为必填字段。placeholder不用多说,类似于我们日常使用的input标签中的placeholder。意思是一样的。好的,我们的表单现在已经创建了。由于.form文件在IDEA中默认是作为Swing中的表单来处理的,所以需要事先使用其他编辑器编写好.form文件,然后复制到IDEA中。3.创建流程接下来我们创建一个流程图,流程中引用了这个表单。流程图如下:在流程图的三个UserTasks中,表单的标识是通过以下方式配置的:流程图的其他细节这里就不说了,给大家介绍了很多更早。最后我们把这个流程图下载下来,放到SpringBoot项目的classpath:/processes/目录下,这样在项目启动的时候,流程图就会自动部署。4.测试接下来,我们启动SpringBoot项目。启动后会自动部署流程和表单。我们执行以下代码启动一个流程实例:@TestvoidcontextLoads(){runtimeService.startProcessInstanceByKey("askforleave");}process启动成功后,进入提交请假申请的环节。在这个环节中,有一个需要填写的表单,我们可以先通过下面的代码查看需要填写的表单内容:@Testvoidtest01(){Tasktask=taskService.createTaskQuery().singleResult();FormInfoformInfo=taskService.getTaskFormModel(task.getId());SimpleFormModelformModel=(SimpleFormModel)formInfo.getFormModel();System.out.println("formInfo.getId()="+formInfo.getId());System.out.println("formInfo.getName()="+formInfo.getName());System.out.println("formInfo.getKey()="+formInfo.getKey());List
