精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

午夜精品久久久内射近拍高清| 45www国产精品网站| 色www免费视频| 中文字幕免费高清电视剧网站在线观看| 国产精品自拍av| 孩xxxx性bbbb欧美| 成年人在线免费看片| aa亚洲一区一区三区| 亚洲电影在线免费观看| 日韩欧美99| 亚洲AV午夜精品| 久久久噜噜噜| 欧美成人高清视频| 亚洲综合色一区| 经典三级久久| 91豆麻精品91久久久久久| 色哟哟免费网站| 久青草国产在线| 国产精一品亚洲二区在线视频| 日本精品久久电影| 亚洲国产精品免费在线观看| 久久99久久人婷婷精品综合 | 91精品啪在线观看国产爱臀| 色先锋资源久久综合| 久久久99精品视频| 91在线视频免费看| 99精品视频在线免费观看| 成人免费在线网址| 波多野结衣电车痴汉| 亚洲婷婷在线| 久热99视频在线观看| 中文字幕在线1| 国产精品调教| 日韩欧美国产电影| 五月天开心婷婷| 日本肉肉一区| 日韩欧美国产黄色| 日韩亚洲欧美视频| 欧美videosex性欧美黑吊| 国产精品乱人伦| 日本一区二区在线视频| 午夜小视频免费| 懂色av噜噜一区二区三区av| 亚洲va国产va天堂va久久| 波多野结衣视频在线看| 国产欧美一区二区色老头 | 天堂а√在线最新版中文在线| 亚洲欧美乱综合| 26uuu成人| 日本www在线观看| 国产精品情趣视频| 亚洲激情一区二区三区| 高清av电影在线观看| 久久久91精品国产一区二区三区| 老牛影视免费一区二区| 午夜视频www| 久久这里都是精品| 欧美精品中文字幕一区二区| 免费a在线观看| 久久久蜜臀国产一区二区| 欧美一区二区在线| 国产香蕉视频在线看| 亚洲精品人妻无码| 欧美专区在线| 欧美在线中文字幕| 天堂中文在线网| 久久三级福利| 国产精品久久久久久久久久东京| 亚洲精品国产精品乱码视色| 久久精品国产成人一区二区三区 | 91成人短视频在线观看| 四虎精品成人影院观看地址| 成人免费高清在线| 精品久久久久久一区二区里番| 无码国产色欲xxxx视频| 久久婷婷成人综合色| 日本免费高清一区| 三区四区在线视频| 一卡二卡欧美日韩| 国产综合av在线| 国产人妻大战黑人20p| 日本动漫理论片在线观看网站 | 狠狠色丁香久久婷婷综合丁香| 国产欧美日韩免费| 国产视频在线观看免费| 高清不卡一二三区| 久久资源亚洲| 毛片在线看片| 亚洲福利视频一区| 午夜精品久久久内射近拍高清| 美女视频一区| 精品国产一区二区三区久久久蜜月| 日本国产精品视频| 亚洲午夜18毛片在线看| 青娱乐精品视频| 91成人伦理在线电影| 韩国av电影在线观看| 久久久久99精品国产片| 糖心vlog在线免费观看| 黑森林国产精品av| 欧美色图12p| 天堂www中文在线资源| 视频精品在线观看| 欧美精品一本久久男人的天堂| 天天操天天干视频| 精品一二线国产| 麻豆91蜜桃| а√天堂8资源在线官网| 欧美日韩亚洲系列| 日本特黄在线观看| 国产一区二区精品久| 欧美日韩电影在线观看| 艳妇乳肉豪妇荡乳av无码福利| 国产91丝袜在线观看| 色视频一区二区三区| 第一av在线| 欧美久久久一区| 中文字幕影片免费在线观看| 午夜激情久久| 国产精品成熟老女人| 国产1区在线观看| 中文字幕一区二区三区精华液| 看av免费毛片手机播放| 成人av综合网| 欧美日本啪啪无遮挡网站| 最近中文字幕在线观看| 2023国产精品自拍| 一二三四视频社区在线| 日本免费精品| 日韩在线中文字| 日韩黄色一级视频| 91蝌蚪porny| 亚洲熟妇无码一区二区三区导航| **国产精品| 中文字幕日韩综合av| 亚洲精品中文字幕乱码三区91| www.欧美色图| 国产精品高潮粉嫩av| 99久久亚洲精品日本无码| 99久久久精品| 久久久久免费看黄a片app| 一本色道69色精品综合久久| 久久成人18免费网站| 国产视频在线观看免费| 综合中文字幕亚洲| 日韩 国产 一区| 91精品啪在线观看国产81旧版| 国产成人精品日本亚洲专区61| 天堂av在线免费观看| 精品人伦一区二区三区蜜桃免费| 永久免费未满蜜桃| 亚洲日本黄色| 久久影视中文粉嫩av| 筱崎爱全乳无删减在线观看| 日韩av在线精品| 久久精品国产成人av| 久久久久久免费网| 成人亚洲精品777777大片| 久久国产影院| 亚洲xxx视频| av在线私库| 亚洲女同性videos| 中文字幕第99页| 亚洲视频小说图片| www.欧美com| 亚洲日本国产| 亚洲国产另类久久久精品极度| 日韩制服一区| 久久成人在线视频| 天天操天天舔天天干| 色综合天天性综合| 国精产品一区一区二区三区mba | 日韩av男人的天堂| 成人在线观看一区| 欧美一区二区三区视频免费| 国产精品2020| 国产亚洲一本大道中文在线| 日本中文字幕精品—区二区| 欧美日韩1区| 久久99国产精品| av成人亚洲| 欧美高清视频在线观看| 福利视频一区二区三区| 成人区精品一区二区不卡| 欧美xxxxxxxx| 日韩av免费播放| 一区二区在线观看av| 免费中文字幕av| 精品无人码麻豆乱码1区2区| 给我免费播放片在线观看| 欧美影院三区| 国产伦一区二区三区色一情| 国产亚洲一区二区手机在线观看 | 国产在线88av| 中文字幕亚洲欧美日韩2019| 午夜精品在线播放| 欧美在线观看视频一区二区| 久草视频免费在线| 国产丝袜美腿一区二区三区| 无码人妻久久一区二区三区蜜桃| 丝袜脚交一区二区| 成人一级生活片| 色综合久久网| 欧洲精品在线一区| 成人台湾亚洲精品一区二区| 国产精品三级网站| 色是在线视频| 欧美精品成人在线| www视频在线免费观看| 亚洲人成绝费网站色www| 亚洲精品国产一区二| 欧美亚洲国产一区在线观看网站 | 国产伦精品一区二区三区免| 欧美91在线|欧美| 国产不卡精品视男人的天堂 | 国产成人精品一区| 9999在线视频| 欧美国产中文字幕| 超鹏97在线| 日韩在线观看免费高清| 国自产拍在线网站网址视频| 亚洲成人xxx| 国内精品国产成人国产三级| 欧美日韩国产系列| 进去里视频在线观看| 色综合天天综合色综合av| 国产一级视频在线播放| 一区二区视频在线| 欧美日韩色视频| 一区在线观看免费| 黄色av免费播放| 国产人成亚洲第一网站在线播放| 亚洲精品视频大全| 97久久久精品综合88久久| 亚洲日本久久久| 顶级嫩模精品视频在线看| 无码人妻少妇色欲av一区二区| 精品一区二区三区久久久| 狠狠躁狠狠躁视频专区| 欧美aaa在线| www.com操| 裸体一区二区三区| 亚洲精品性视频| 国内精品久久久久影院色 | 无码日韩精品一区二区| 色婷婷综合久色| 国产99免费视频| 欧美影视一区二区三区| 国产女优在线播放| 欧美丰满一区二区免费视频| 国产手机av在线| 日韩精品专区在线| 欧性猛交ⅹxxx乱大交| 日韩va亚洲va欧洲va国产| 男生女生差差差的视频在线观看| 亚洲欧美在线一区| 国产二区视频在线观看| 日韩亚洲欧美中文高清在线| 免费在线毛片网站| 九九精品在线视频| 成人在线黄色电影| 国产成人激情小视频| 中文字幕系列一区| 91在线视频九色| 国产精品17p| 国产伦精品一区二区三| 国产中文字幕一区二区三区 | 色一情一交一乱一区二区三区| 国产精品日日摸夜夜摸av| 亚洲熟女www一区二区三区| 一区二区三区四区在线播放| 日韩精品视频免费看| 在线一区二区视频| 99国产精品久久久久99打野战| 精品久久久久一区二区国产| 少妇性bbb搡bbb爽爽爽欧美| 中文字幕亚洲一区| 日本一本在线免费福利| 欧美亚洲国产成人精品| 欧美系列精品| 国产一区二区精品免费| av亚洲免费| 青青草综合在线| 老司机精品久久| 人妻巨大乳一二三区| 99re热这里只有精品视频| 欧美色视频一区二区三区在线观看| 亚洲国产色一区| 中文字幕人妻一区二区三区视频| 精品国产乱码久久久久久牛牛| 欧美xxx.com| 色综合天天综合网国产成人网| 国精产品一区一区三区四川| 97se亚洲综合| 欧美色图在线播放| 日韩视频在线视频| 久久电影网电视剧免费观看| 182在线视频| 亚洲欧美一区二区三区久本道91| 日韩精品1区2区| 日韩欧美国产成人一区二区| 国产精品四虎| 亚州国产精品久久久| 国产视频一区二| 日韩欧美一区二区三区四区五区| 欧美激情综合| 中文字幕精品一区二区三区在线| 91在线观看地址| 免费在线观看黄视频| 欧美日韩在线观看一区二区| 香蕉av一区二区三区| 欧美久久精品一级黑人c片| 日本精品裸体写真集在线观看| 国产在线一区二区三区四区| 欧美在线免费一级片| 国产aaaaa毛片| 久久人人爽爽爽人久久久| 日本天堂在线视频| 日韩一级片网址| 国产日产一区二区三区| 国产精品欧美日韩| 欧美男gay| 黄色网页免费在线观看| 国产乱码精品1区2区3区| 蜜桃av.com| 欧美日韩亚洲高清一区二区| 国产高清免费在线播放| 国产999精品久久久| 蜜桃精品wwwmitaows| 18岁网站在线观看| av日韩在线网站| 99免费在线观看| 日韩精品一区二区三区在线| av片在线观看免费| 亚洲a在线播放| 一本一道久久a久久精品蜜桃| av中文字幕网址| 日韩美女视频19| 国产特黄一级片| 欧美大奶子在线| 亚洲午夜精品| 青草网在线观看| av不卡免费电影| 中文字幕亚洲高清| 日韩精品免费在线观看| av日韩电影| 欧美一区免费视频| 免费成人小视频| 一级免费黄色录像| 日韩一区二区电影网| 国语对白在线刺激| 精品综合久久久| 羞羞答答国产精品www一本| 草草影院第一页| 在线精品亚洲一区二区不卡| 在线视频婷婷| 91色p视频在线| 激情综合亚洲| 亚洲av无码国产精品久久| 色狠狠桃花综合| 免费观看在线黄色网| 97久久天天综合色天天综合色hd| 欧美日一区二区在线观看 | 黄色美女一级片| 奇米成人av国产一区二区三区| 国产一区网站| ass极品水嫩小美女ass| 欧美日韩激情美女| 国产69久久| 91在线在线观看| 老司机精品视频网站| 日本午夜在线观看| 亚洲第一视频网站| 国产麻豆一区| 国产av熟女一区二区三区| 99精品欧美一区二区三区综合在线| 精品无码一区二区三区的天堂| 久久精品亚洲国产| 日韩高清影视在线观看| 国产九九热视频| 亚洲一二三四在线| 国产对白叫床清晰在线播放| 亚洲在线免费视频| 美女被久久久| 永久久久久久久| 亚洲免费视频在线观看| 精品国产乱码久久久久久樱花| av7777777| 亚洲精品午夜久久久| 免费在线黄色网址| 97久久夜色精品国产九色| 日韩精品每日更新| 18精品爽视频在线观看| 一区三区二区视频| 国产精品视频3p| 亚洲综合激情视频| 色综合视频在线观看| 少女频道在线观看高清 | 亚洲激情另类| 伊人在线视频观看|