精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用 JSON 格式來定義 Flowable 外置表單

開發 項目管理
在每一個 filed 的定義中,id 表示字段名,name 則是字段的中文名稱,type 表示字段的類型,require 則表示這個字段是否是必填字段,placeholder 不用多說,跟我們日常使用的 input 標簽中的 placeholder 的含義一致。

在前面的案例中,我們定義的表單使用了 HTML,實際上這個表單不僅可以使用 HTML,也可以使用 JSON 來定義表單,可能也有不少小伙伴在網上已經看到過一些使用 JSON 來定義表單的案例,今天這篇文章松哥就來和大家分享一下如何使用 JSON 來定義 Flowable 表單。

1. 默認規則

使用 JSON 來定義 Flowable 表單,我們剛好可以利用 Spring Boot 中的默認機制,即將表單文件置于 classpath:forms 目錄下,那么在系統啟動的時候,表單文件就會被自動部署。并且默認情況下,表單文件的后綴是 .form。

不過對于默認的表單文件位置和表單文件后綴,我們也可以通過在 application.properties 配置文件中添加如下內容進行修改:

# 默認的表單文件后綴
flowable.form.resource-suffixes=**.form
# 默認的表單文件位置
flowable.form.resource-location=classpath*:/forms/

2. 創建表單

還是以我們的請假請求為例,我來創建一個表單文件,文件名為 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 的含義一致。

OK,這樣,我們的表單現在就創建好了。

由于 .form 文件,在 IDEA 中,默認會被當成 Swing 里邊的 form 去處理,所以需要小伙伴提前先用其他的編輯器寫好 .form 文件,然后再拷貝到 IDEA 中即可。

3. 創建流程

接下來我們來創建一個流程圖,流程中中引用這個表單。流程圖如下:

圖片

在流程圖的三個 UserTask 中,分別通過如下方式去配置表單的標識:

圖片

關于流程圖的其他細節我這里就不多說了,前面和大家介紹了很多了。

最后我們下載這個流程圖,將之放在 Spring Boot 項目的 classpath:/processes/ 目錄下,這樣當項目啟動的時候,這個流程圖會被自動部署。

4. 測試

接下來,我們啟動 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 了。

后續的流程就不需要我多說了吧,小伙伴們可以自行嘗試下~

責任編輯:武曉燕 來源: 江南一點雨
相關推薦

2022-11-14 10:44:59

HTMLFlowable外置

2024-08-06 11:17:58

SpringJSON數據

2020-09-02 07:19:41

printf 格式化輸出Unix

2019-07-22 08:49:37

PythonJSON編程語言

2023-03-29 09:01:46

HSBRGB模型

2010-01-06 15:03:34

JSON格式封裝

2022-11-08 10:52:25

Flowable節點表單

2024-11-25 08:14:09

Gin框架格式

2023-11-29 13:59:00

trait定義接口

2022-08-11 11:35:43

Vuev-model?表單

2022-08-01 21:38:25

Linux fmt命令

2010-01-07 17:41:19

JSON定義法

2015-04-15 13:33:23

2023-11-12 11:56:28

Json格式弊端

2011-05-26 13:54:04

Json

2024-03-28 10:17:03

JDK 17字符串十六進制

2023-11-27 08:24:57

FormikReact

2016-11-14 19:45:39

JavaScript

2010-01-05 14:49:03

JSON格式

2010-01-08 15:30:15

JSON格式舉例
點贊
收藏

51CTO技術棧公眾號

久久精品电影| 亚洲福利网站| 亚洲国产精品久久艾草纯爱| 国产乱码精品一区二区三区日韩精品| 动漫精品一区一码二码三码四码| 亚洲女娇小黑人粗硬| 欧美三级韩国三级日本一级| 高清无码视频直接看| 激情小视频在线观看| 国产在线视视频有精品| 欧美一级视频一区二区| 日韩精品一区二区亚洲av性色| 久久a级毛片毛片免费观看| 欧美中文字幕一区二区三区亚洲 | 国产又大又粗又硬| 伊人久久婷婷| 色狠狠av一区二区三区香蕉蜜桃| 性色av蜜臀av浪潮av老女人| 国产精品原创视频| 精品久久久久久国产91| 秋霞在线一区二区| 都市激情一区| 久久午夜电影网| 国产98在线|日韩| 亚洲无码久久久久| 销魂美女一区二区三区视频在线| 欧美大胆在线视频| av免费播放网站| 久久九九热re6这里有精品| 日韩一区二区三区av| av五月天在线| 午夜精品久久久久久久久久蜜桃| 一二三区精品视频| 欧美三级午夜理伦三级老人| 在线免费看黄网站| 久久人人爽爽爽人久久久| 国产福利一区二区三区在线观看| 91影院在线播放| 日本在线不卡视频一二三区| 日韩美女在线播放| 日韩免费黄色片| 精久久久久久| 欧美黄色片免费观看| 成年人一级黄色片| 一区二区免费不卡在线| 日韩中文字幕网| 2014亚洲天堂| 午夜激情久久| 日韩视频免费观看| 欧美一级特黄高清视频| 91亚洲国产| 久久偷看各类女兵18女厕嘘嘘| 国产精品久久国产精麻豆96堂| 成人黄色小视频| 中文字幕亚洲无线码在线一区| 亚洲精品国产熟女久久久| 九九综合在线| 国产小视频国产精品| 欧美另类z0zx974| 北条麻妃国产九九九精品小说 | 蜜臀av一区二区三区有限公司| 欧美五码在线| 亚洲欧美日韩精品久久| 亚洲成人黄色av| 清纯唯美综合亚洲| 两个人的视频www国产精品| 亚洲熟女www一区二区三区| 欧美破处大片在线视频| 国色天香2019中文字幕在线观看| 日本学生初尝黑人巨免费视频| 国产日韩欧美在线播放不卡| 欧洲一区二区视频| 瑟瑟视频在线免费观看| 精品一区二区三区蜜桃| 91网免费观看| 天堂√在线中文官网在线| 久久久影视传媒| 亚洲资源在线网| 在线你懂的视频| 天天综合日日夜夜精品| 五月婷婷狠狠操| 国产激情综合| 日韩精品视频免费| 少妇的滋味中文字幕bd| 国产精品地址| 国产99在线|中文| av在线免费在线观看| 99久久久免费精品国产一区二区| 日本高清视频一区二区三区| 免费av网站在线观看| 亚洲午夜私人影院| 99视频精品免费| 亚洲精品一区国产| 国产香蕉一区二区三区在线视频 | 制服.丝袜.亚洲.中文.综合懂| 国产乱人伦丫前精品视频| 亚洲视屏在线播放| 日日骚一区二区三区| 免费视频久久| 99久久久精品免费观看国产| 国产天堂素人系列在线视频| 亚洲一区二区在线免费看| av视屏在线播放| 国产精品jk白丝蜜臀av小说| 色av中文字幕一区| 国内精品福利视频| 国产91丝袜在线观看| 日本一区二区免费看| 欧美女同一区| 精品视频1区2区| 呦呦视频在线观看| 女人天堂亚洲aⅴ在线观看| 青青久久av北条麻妃黑人| 精品乱子伦一区二区| 国产亚洲综合性久久久影院| av片在线免费| 成人综合日日夜夜| 一区二区三区视频免费| 日韩久久精品视频| 国产做a爰片久久毛片| 欧美下载看逼逼| 操人在线观看| 精品少妇一区二区三区免费观看| 午夜激情福利电影| 天堂蜜桃91精品| 精品一区二区三区自拍图片区| av网址在线| 884aa四虎影成人精品一区| 三上悠亚影音先锋| 国产午夜精品一区二区三区欧美 | 国产精品一区二区三区av麻| 91av国产在线| 天堂av中文字幕| 亚洲视频一区二区在线| 欧美日韩精品区别| 久久精品国产www456c0m| 国产精品99久久久久久久久 | 秋霞精品一区二区三区| 成人av电影免费观看| 美女在线免费视频| 国产精品白丝久久av网站| 中文字幕亚洲欧美在线 | 中文不卡1区2区3区| 日韩av在线资源| 日韩三级一区二区三区| 99久久99久久久精品齐齐| 男人添女荫道口图片| 美国十次av导航亚洲入口| 国外成人在线视频| 性猛交xxxx| 一本大道av一区二区在线播放| av鲁丝一区鲁丝二区鲁丝三区| 国产欧美日本| 欧美日本韩国国产| 欧美日韩精品一区二区三区视频| 国产一区二区三区精品久久久| 中文字幕 日韩有码| 国产精品久久久久一区| 国产女同无遮挡互慰高潮91| 久久久久久影院| 国产精品theporn88| 白白色在线观看| 日韩成人黄色av| 日韩国产亚洲欧美| 亚洲欧美日韩久久| 国产人妖在线观看| 亚洲一区二区毛片| 日韩在线电影一区| 91精品视频一区二区| 久久久久国产精品免费| 肉丝一区二区| 欧美日韩色综合| 青娱乐国产盛宴| 99亚偷拍自图区亚洲| 动漫av免费观看| 综合久久久久| 免费在线成人av电影| 69堂精品视频在线播放| 久久精品国产成人精品| 日日夜夜精品免费| 在线观看日韩精品| 日韩三级在线观看视频| 91天堂素人约啪| 蜜臀一区二区三区精品免费视频 | 精品久久久久久无码国产| 久久精品国产大片免费观看| 国产精品嫩草在线观看| 韩国美女久久| 欧美乱妇高清无乱码| 男人天堂亚洲二区| 在线91免费看| 国产精品男女视频| 亚洲免费观看高清在线观看| 18禁裸乳无遮挡啪啪无码免费| 韩日av一区二区| 中文字幕无码精品亚洲35| 久久一区二区三区电影| 国产美女99p| 亚州精品国产| 国产91久久婷婷一区二区| av在线导航| 亚洲午夜激情免费视频| 亚洲高清在线观看视频| 欧美视频中文字幕| 日韩av女优在线观看| 中文字幕综合网| x88av在线| av资源网一区| 性感美女一区二区三区| 麻豆视频一区二区| 久久精品视频91| 亚洲毛片网站| 国产av熟女一区二区三区| 日韩在线精品| 欧美日韩视频在线一区二区观看视频| 爱爱精品视频| 亚洲一区国产精品| 日本黄色成人| 俺来俺也去www色在线观看| 日韩免费性生活视频播放| 成人黄色片在线观看| 黑人精品xxx一区一二区| 久久久美女视频| 亚洲婷婷综合久久一本伊一区| 国产熟妇久久777777| 波多野结衣精品在线| 爱情岛论坛亚洲自拍| 精品亚洲porn| 亚洲天堂国产视频| 秋霞午夜av一区二区三区| 99久久久无码国产精品6| 亚洲国产网站| 日本中文字幕亚洲| 伊人久久亚洲热| 拔插拔插海外华人免费| 亚洲天堂偷拍| 九色自拍视频在线观看| 黄色成人在线网址| 台湾无码一区二区| 国内综合精品午夜久久资源| 国产精品8888| 国内在线观看一区二区三区| 国产玉足脚交久久欧美| 国产精品v一区二区三区| 日韩国产小视频| 黄色亚洲在线| 日本国产在线播放| 国产精品日韩| 国产一区亚洲二区三区| 日韩高清在线不卡| 国内自拍视频网| 久久av资源站| 韩国一区二区三区四区| 成人免费观看视频| 欧美做受喷浆在线观看| 久久久综合激的五月天| b站大片免费直播| 国产精品久久久久久久久免费相片| 国产极品视频在线观看| 亚洲三级电影网站| av资源吧首页| 色综合久久99| 一区二区视频在线免费观看| 欧美乱妇15p| 性欧美一区二区三区| 亚洲国产精品va在线看黑人| 亚洲三区在线播放| 国产一区二区三区日韩欧美| 欧美人xxx| 欧美第一黄色网| 忘忧草在线日韩www影院| 国产精品九九久久久久久久| 欧美高清xxx| 99re在线视频上| 欧美女优在线视频| 一区二区三区四区免费观看| 亚洲午夜一级| 不卡av免费在线| 国产一区激情在线| 极品粉嫩小仙女高潮喷水久久| 国产精品天美传媒| 久久久综合久久久| 欧美亚洲高清一区| av中文字幕观看| 亚洲美女在线观看| 精品国产丝袜高跟鞋| 4388成人网| 成人免费观看49www在线观看| 国产午夜精品在线| 色婷婷亚洲mv天堂mv在影片| 国产小视频免费| 日日摸夜夜添夜夜添精品视频| 国产精品探花在线播放| 99精品黄色片免费大全| 婷婷伊人五月天| 日韩欧美中文字幕在线播放| 国产农村妇女毛片精品久久| 亚洲精品福利资源站| 欧美jizzhd69巨大| 欧美在线精品免播放器视频| 日韩高清在线观看一区二区| 欧美日韩在线一二三| 欧美午夜影院| 日韩在线不卡一区| 91色在线porny| 欧美精品一区二区蜜桃| 精品视频在线免费观看| 四虎精品成人影院观看地址| 欧美老妇交乱视频| 国产成+人+综合+亚洲欧美| 国内精品视频在线播放| 中文字幕一区二区三区在线视频| 男人插女人下面免费视频| zzijzzij亚洲日本少妇熟睡| 污软件在线观看| 欧美色男人天堂| 日韩欧美电影在线观看| 欧美激情亚洲精品| 成人国产精品久久| 亚洲精品国产精品久久| 丝袜a∨在线一区二区三区不卡| 亚洲日本久久久| 一区二区三区在线视频免费| 在线免费观看一级片| 国产亚洲一区精品| 三上悠亚国产精品一区二区三区| 国产一区二区高清不卡| 国内久久精品| 真实乱偷全部视频| 一区二区三区四区激情| 国产精品视频第一页| 色伦专区97中文字幕| 成人国产一区| 亚洲人成网站在线播放2019| 老牛影视一区二区三区| 成人片黄网站色大片免费毛片| 精品久久久久久中文字幕| 特黄aaaaaaaaa真人毛片| 欧美激情精品久久久久| 免费一区二区三区在线视频| 欧美精品一区二区性色a+v| 国内精品免费**视频| 久草视频手机在线| 日韩视频一区二区三区| 99在线播放| 国产成人免费观看| 亚洲高清二区| 久久精品综合视频| 日韩欧美在线视频免费观看| 头脑特工队2在线播放| 日本久久91av| 成人激情在线| 亚洲欧美日本一区二区三区| 亚洲视频 欧洲视频| 亚洲av无码国产综合专区| 午夜精品一区二区三区在线视| 女人抽搐喷水高潮国产精品| 1024精品视频| 中文字幕乱码久久午夜不卡| 91美女精品网站| 欧美床上激情在线观看| 国产福利一区二区精品秒拍| 国产成人无码精品久久久性色| 久久久精品国产免费观看同学| 中国一区二区视频| 久久韩剧网电视剧| 高清欧美性猛交xxxx黑人猛| 美女福利视频在线| 国产精品免费视频网站| 99久久久久久久| 26uuu亚洲伊人春色| 欧美r级电影| 日韩精品xxx| 欧美性猛交xxxx偷拍洗澡| av中文字幕一区二区三区| 亚洲自拍av在线| 国产模特精品视频久久久久| 色撸撸在线视频| 精品黑人一区二区三区久久 | 亚洲一区二区三区四区在线 | 成人免费性视频| 国产亚洲成aⅴ人片在线观看| 97超碰国产在线| 欧美亚洲国产另类| 四季av一区二区凹凸精品| 亚洲欧洲国产视频| 欧洲视频一区二区| 男人天堂亚洲天堂| 香蕉久久免费影视| 成人在线一区二区三区| 国产在线一级片| 久久免费国产视频| 日韩国产欧美| www.日本高清| 欧美一区二区三区四区久久| 亚洲人成午夜免电影费观看| 福利在线小视频| 欧美精彩视频一区二区三区| 国精产品乱码一区一区三区四区| 国产精品久久激情|