当前位置: 首页 > news >正文

茂名免费做网站赣州九一人才网最新招聘

茂名免费做网站,赣州九一人才网最新招聘,学生网站建设首页,软件开发自学需要一.简介 整体上来说,我们可以将Flowable 的表单分为三种不同的类型: 动态表单 这种表单定义方式我们可以配置表单中每一个字段的可读性、可写性、是否必填等信息,不过不能定义完整的表单页面。外置表单 外置表单我们只需要定义一下表单的 k…

一.简介

整体上来说,我们可以将Flowable 的表单分为三种不同的类型:

  1. 动态表单
    这种表单定义方式我们可以配置表单中每一个字段的可读性、可写性、是否必填等信息,不过不能定义完整的表单页面。
  2. 外置表单
    外置表单我们只需要定义一下表单的 key,至于这个 key 对应的表单是什么样子,则由开发者自己去维护。
  3. 内置表单
    这是内置的表单定义以及渲染引擎,

另外需要注意的,Flowable 中有很多不同类型的节点,但是只有开始节点和任务节点是支持表单定义的,其他节点均不支持表单定义

在前面的案例中,定义的表单使用了 HTML,实际上这个表单不仅可以使用 HTML,也可以使用 JSON 来定义表单

二.默认规则

使用 JSON 来定义 Flowable 表单,可以利用 Spring Boot 中的默认机制,即将表单文件置于 classpath:forms 目录下,那么在系统启动的时候,表单文件就会被自动部署。并且默认情况下,表单文件的后缀是 .form。

不过对于默认的表单文件位置和表单文件后缀,也可以通过在 application.properties 配置文件中添加如下内容进行修改,代码如下:

# 默认的表单文件后缀
flowable.form.resource-suffixes=**.form
# 默认的表单文件位置
flowable.form.resource-location=classpath*:/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());List<FormField> 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() = text
===============
field.getId() = reason
field.getName() = 请假原因
field.getValue() = null
field.getType() = text
===============
field.getId() = startTime
field.getName() = 开始时间
field.getValue() = null
field.getType() = date
===============
field.getId() = endTime
field.getName() = 结束时间
field.getValue() = null
field.getType() = date

打印出来的 value 都是 null,这是因为还没有填写表单。接下来先来完成提交请假申请 这一任务,代码如下:

@Test
void test02() {Task task = taskService.createTaskQuery().singleResult();Map<String, 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() = text
===============
field.getId() = reason
field.getName() = 请假原因
field.getValue() = 玩一下
field.getType() = text
===============
field.getId() = startTime
field.getName() = 开始时间
field.getValue() = 2022-10-10
field.getType() = date
===============
field.getId() = endTime
field.getName() = 结束时间
field.getValue() = 2022-11-10
field.getType() = date

此时都有对应的 value 了。

http://www.yayakq.cn/news/807968/

相关文章:

  • 帝国手机网站cms系统做的网站出现404
  • 做网页的软件做网站长春网站建设策划方案
  • 如何做家乡网站深圳西乡
  • 企业的做网站做导航网站赚钱
  • 推荐几个看黄的网站房地产网信息
  • 绍兴市建设局网站树状结构wordpress模板
  • 网站建设选择哪种开发语言最好互联网协会是干嘛的
  • 地方网站网站建设需要些什么设备
  • 网站文章后台写完前台不显示瑞金网络推广
  • 网站建设实施步骤产品策划方案怎么做
  • 淮南市网站建设wordpress相册滑动
  • 正规的国内网站建设公司wordpress搬家乱码
  • 哪个网站做网销更好网站数据库空间
  • 怎么做站旅游网站上泡到妞佛山做优化的网络公司
  • 许昌网站建设汉狮怎么样大数据营销心得体会
  • 温州网站开发html5网站建设
  • 中国建设银行假网站网络公司做网站后期注意
  • 营销型网站建设公司方法和技巧网站点击图片放大
  • 吴江建设银行网站女的有没有做网站的
  • 有没有做生物科技相关的网站现在做网站有前途吗
  • 一分钟做网站南昌做兼职的网站设计
  • 常州模板网站建设企业怎么做网站营销
  • 打电话问网站建设推广四川建设工程交易信息网站
  • 广州电子商务网站建设 v信阳网站建设找汉狮
  • 网站 开发 工具淘宝营销网站建设
  • 网站 不 备案公众号开发者是什么意思
  • 怎么建做网站商务网站建设与维护
  • 网站建设的前期准备能打开各种网站的浏览器下载合集
  • 开心消消乐官方网站开发公司自己做网站麻烦吗
  • 做精品课程网站需要啥素材提卡网站怎么做