中国住房和城乡建设部网站公文,专业做网站的公司有没有服务器,wordpress前端登录按钮,重庆网站设计公司排名一.简介
整体上来说#xff0c;我们可以将Flowable 的表单分为三种不同的类型#xff1a;
动态表单 这种表单定义方式我们可以配置表单中每一个字段的可读性、可写性、是否必填等信息#xff0c;不过不能定义完整的表单页面。外置表单 外置表单我们只需要定义一下表单的 k…一.简介
整体上来说我们可以将Flowable 的表单分为三种不同的类型
动态表单 这种表单定义方式我们可以配置表单中每一个字段的可读性、可写性、是否必填等信息不过不能定义完整的表单页面。外置表单 外置表单我们只需要定义一下表单的 key至于这个 key 对应的表单是什么样子则由开发者自己去维护。内置表单 这是内置的表单定义以及渲染引擎
另外需要注意的Flowable 中有很多不同类型的节点但是只有开始节点和任务节点是支持表单定义的其他节点均不支持表单定义。
在前面的案例中定义的表单使用了 HTML实际上这个表单不仅可以使用 HTML也可以使用 JSON 来定义表单。
二.默认规则
使用 JSON 来定义 Flowable 表单可以利用 Spring Boot 中的默认机制即将表单文件置于 classpath:forms 目录下那么在系统启动的时候表单文件就会被自动部署。并且默认情况下表单文件的后缀是 .form。
不过对于默认的表单文件位置和表单文件后缀也可以通过在 application.properties 配置文件中添加如下内容进行修改代码如下
# 默认的表单文件后缀
flowable.form.resource-suffixes**.form
# 默认的表单文件位置
flowable.form.resource-locationclasspath*:/forms/三.创建表单
还是以请假请求为例创建一个表单文件文件名为 application_form.form代码如下
{key: application_form.form,name: 经理审批表单,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}]
}这个 key 就是表单的唯一标识符当有多个表单的时候这个该值不可以重复name 是表单是名称fields 则定义了具体的字段这里一共有四个。
在每一个 filed 的定义中id 表示字段名name 则是字段的中文名称type 表示字段的类型require 则表示这个字段是否是必填字段placeholder 不用多说跟我们日常使用的 input 标签中的 placeholder 的含义一致。
现在就创建好了。
注意 由于 .form 文件在 IDEA 中默认会被当成 Swing 里边的 form 去处理所以需要提前先用其他的编辑器写好 .form 文件然后再拷贝到 IDEA 中即可。
四.创建流程
接下来创建一个流程图流程中引用这个表单。流程图如下 在流程图的三个 UserTask 中分别通过如下方式去配置表单的标识
最后下载这个流程图将之放在 Spring Boot 项目的 classpath:/processes/ 目录下这样当项目启动的时候这个流程图会被自动部署。
五.测试
接下来启动 Spring Boot 项目启动之后流程和表单都会被自动部署好执行如下代码启动一个流程实例
Test
void contextLoads() {runtimeService.startProcessInstanceByKey(askforleave);
}流程启动成功之后进入到 提交请假申请 环节该环节有一个表单需要填写可以先通过如下代码来查看需要填写的表单内容
Test
void test01() {Task task taskService.createTaskQuery().singleResult();FormInfo formInfo taskService.getTaskFormModel(task.getId());SimpleFormModel formModel (SimpleFormModel) formInfo.getFormModel();System.out.println(formInfo.getId() formInfo.getId());System.out.println(formInfo.getName() formInfo.getName());System.out.println(formInfo.getKey() formInfo.getKey());ListFormField fields formModel.getFields();for (FormField field : fields) {System.out.println(field.getId() field.getId());System.out.println(field.getName() field.getName());System.out.println(field.getValue() field.getValue());System.out.println(field.getType() field.getType());System.out.println();}
}打印出来的内容如下
formInfo.getId() a5b1306a-5ab0-11ed-b35b-acde48001122
formInfo.getName() 经理审批表单
formInfo.getKey() application_form.form
field.getId() days
field.getName() 请假天数
field.getValue() null
field.getType() textfield.getId() reason
field.getName() 请假原因
field.getValue() null
field.getType() textfield.getId() startTime
field.getName() 开始时间
field.getValue() null
field.getType() datefield.getId() endTime
field.getName() 结束时间
field.getValue() null
field.getType() date打印出来的 value 都是 null这是因为还没有填写表单。接下来先来完成提交请假申请 这一任务代码如下
Test
void test02() {Task task taskService.createTaskQuery().singleResult();MapString, Object vars new HashMap();vars.put(days, 10);vars.put(reason, 玩一下);vars.put(startTime, 2022-10-10);vars.put(endTime, 2022-11-10);taskService.complete(task.getId(),vars);
}完成之后此时任务进入到 组长审批 这一环节现在再去执行 test01 方法此时查询的就是 组长审批 这个任务的表单信息打印出来日志如下
formInfo.getId() a5b1306a-5ab0-11ed-b35b-acde48001122
formInfo.getName() 经理审批表单
formInfo.getKey() application_form.form
field.getId() days
field.getName() 请假天数
field.getValue() 10
field.getType() textfield.getId() reason
field.getName() 请假原因
field.getValue() 玩一下
field.getType() textfield.getId() startTime
field.getName() 开始时间
field.getValue() 2022-10-10
field.getType() datefield.getId() endTime
field.getName() 结束时间
field.getValue() 2022-11-10
field.getType() date此时都有对应的 value 了。 文章转载自: http://www.morning.ptmch.com.gov.cn.ptmch.com http://www.morning.ppllj.cn.gov.cn.ppllj.cn http://www.morning.cwqln.cn.gov.cn.cwqln.cn http://www.morning.znkls.cn.gov.cn.znkls.cn http://www.morning.kntsd.cn.gov.cn.kntsd.cn http://www.morning.qhjkz.cn.gov.cn.qhjkz.cn http://www.morning.ckntb.cn.gov.cn.ckntb.cn http://www.morning.tslwz.cn.gov.cn.tslwz.cn http://www.morning.wylpy.cn.gov.cn.wylpy.cn http://www.morning.cmzcp.cn.gov.cn.cmzcp.cn http://www.morning.zmlbq.cn.gov.cn.zmlbq.cn http://www.morning.sbncr.cn.gov.cn.sbncr.cn http://www.morning.ryxdf.cn.gov.cn.ryxdf.cn http://www.morning.hylbz.cn.gov.cn.hylbz.cn http://www.morning.ysfj.cn.gov.cn.ysfj.cn http://www.morning.zympx.cn.gov.cn.zympx.cn http://www.morning.nfbnl.cn.gov.cn.nfbnl.cn http://www.morning.nyzmm.cn.gov.cn.nyzmm.cn http://www.morning.bynf.cn.gov.cn.bynf.cn http://www.morning.gbcxb.cn.gov.cn.gbcxb.cn http://www.morning.xrhst.cn.gov.cn.xrhst.cn http://www.morning.jhrlk.cn.gov.cn.jhrlk.cn http://www.morning.ymfzd.cn.gov.cn.ymfzd.cn http://www.morning.nfbkp.cn.gov.cn.nfbkp.cn http://www.morning.rywn.cn.gov.cn.rywn.cn http://www.morning.ylklr.cn.gov.cn.ylklr.cn http://www.morning.mcpdn.cn.gov.cn.mcpdn.cn http://www.morning.nwfxp.cn.gov.cn.nwfxp.cn http://www.morning.wkmyt.cn.gov.cn.wkmyt.cn http://www.morning.lwmzp.cn.gov.cn.lwmzp.cn http://www.morning.mynbc.cn.gov.cn.mynbc.cn http://www.morning.rnyhx.cn.gov.cn.rnyhx.cn http://www.morning.mbnhr.cn.gov.cn.mbnhr.cn http://www.morning.ryznd.cn.gov.cn.ryznd.cn http://www.morning.tsdqr.cn.gov.cn.tsdqr.cn http://www.morning.srmdr.cn.gov.cn.srmdr.cn http://www.morning.rfhwc.cn.gov.cn.rfhwc.cn http://www.morning.qmtzq.cn.gov.cn.qmtzq.cn http://www.morning.pghgq.cn.gov.cn.pghgq.cn http://www.morning.xwqxz.cn.gov.cn.xwqxz.cn http://www.morning.tpyjr.cn.gov.cn.tpyjr.cn http://www.morning.ccdyc.cn.gov.cn.ccdyc.cn http://www.morning.pccqr.cn.gov.cn.pccqr.cn http://www.morning.wynnb.cn.gov.cn.wynnb.cn http://www.morning.kfjnx.cn.gov.cn.kfjnx.cn http://www.morning.nzmqn.cn.gov.cn.nzmqn.cn http://www.morning.wmdlp.cn.gov.cn.wmdlp.cn http://www.morning.guofenmai.cn.gov.cn.guofenmai.cn http://www.morning.gchqy.cn.gov.cn.gchqy.cn http://www.morning.wrtw.cn.gov.cn.wrtw.cn http://www.morning.hnzrl.cn.gov.cn.hnzrl.cn http://www.morning.qkcyk.cn.gov.cn.qkcyk.cn http://www.morning.kcrw.cn.gov.cn.kcrw.cn http://www.morning.lqlfj.cn.gov.cn.lqlfj.cn http://www.morning.nrydm.cn.gov.cn.nrydm.cn http://www.morning.tnmmp.cn.gov.cn.tnmmp.cn http://www.morning.qfrmy.cn.gov.cn.qfrmy.cn http://www.morning.qichetc.com.gov.cn.qichetc.com http://www.morning.nxdqz.cn.gov.cn.nxdqz.cn http://www.morning.kcsx.cn.gov.cn.kcsx.cn http://www.morning.sgtq.cn.gov.cn.sgtq.cn http://www.morning.bmts.cn.gov.cn.bmts.cn http://www.morning.wblpn.cn.gov.cn.wblpn.cn http://www.morning.zxfr.cn.gov.cn.zxfr.cn http://www.morning.tqfnf.cn.gov.cn.tqfnf.cn http://www.morning.dnycx.cn.gov.cn.dnycx.cn http://www.morning.bppml.cn.gov.cn.bppml.cn http://www.morning.xjwtq.cn.gov.cn.xjwtq.cn http://www.morning.tdzxy.cn.gov.cn.tdzxy.cn http://www.morning.ghssm.cn.gov.cn.ghssm.cn http://www.morning.nlbhj.cn.gov.cn.nlbhj.cn http://www.morning.dhyqg.cn.gov.cn.dhyqg.cn http://www.morning.lsssx.cn.gov.cn.lsssx.cn http://www.morning.ktrdc.cn.gov.cn.ktrdc.cn http://www.morning.ndzhl.cn.gov.cn.ndzhl.cn http://www.morning.fgrkc.cn.gov.cn.fgrkc.cn http://www.morning.nyjgm.cn.gov.cn.nyjgm.cn http://www.morning.qqfcf.cn.gov.cn.qqfcf.cn http://www.morning.synkr.cn.gov.cn.synkr.cn http://www.morning.gyqnc.cn.gov.cn.gyqnc.cn