一個不用寫代碼的案例,來看看Flowable到底給我們提供了哪些功能(flowable開發(fā))
一個不用寫代碼的案例,來看看Flowable到底給我們提供了哪些功能(flowable開發(fā))
@
- 1. Flowable-UI
- 2. 安裝方式2.1 運行 war 包2.2 Docker 安裝2.3 訪問
- 3. 身份管理(IDM)3.1 用戶管理3.2 組管理3.3 權(quán)限控制
- 4. 流程圖繪制
- 5. 創(chuàng)建應(yīng)用
- 6. 體驗報賬
其實松哥之前已經(jīng)寫過文章和大家介紹了 flowable-ui 的玩法了,這是官方提供的一個工具,這個工具不僅可以用來繪制流程圖,還可以用來部署一個流程應(yīng)用,通過這個流程應(yīng)用我們可以體驗一把 flowable 流程引擎到底是干嘛的,解決了我們的哪些問題,并且這個體驗是不需要寫代碼的,對于一些對 flowable 沒有基礎(chǔ)的小伙伴而言,我覺得這個很好。
所以今天我想再帶大家體驗一把 flowable 的功能,可能有小伙伴說,我們上次不是已經(jīng)體驗過了么,上次體驗的比較簡單,沒有表單功能,今天我想結(jié)合表單功能來和大家捋一捋 flowable-ui 的功能,特別好玩。
1. Flowable-UI
Flowable-UI 說白了就是一堆 Web 應(yīng)用,提供了四方面的功能:
- Flowable IDM: 身份管理應(yīng)用。為所有 Flowable UI 應(yīng)用提供單點登錄認證功能,并且為擁有 IDM 管理員權(quán)限的用戶提供了管理用戶、組與權(quán)限的功能。
- Flowable Modeler: 讓具有建模權(quán)限的用戶可以創(chuàng)建流程模型、表單、選擇表與應(yīng)用定義。
- Flowable Task: 運行時任務(wù)應(yīng)用,這個提供了啟動流程實例、編輯任務(wù)表單、完成任務(wù),以及查詢流程實例與任務(wù)的功能。
- Flowable Admin: 管理應(yīng)用。讓具有管理員權(quán)限的用戶可以查詢 BPMN、DMN、Form 及 Content 引擎,并提供了許多選項用于修改流程實例、任務(wù)、作業(yè)等。管理應(yīng)用通過 REST API 連接至引擎,并與 Flowable Task 應(yīng)用及 Flowable REST 應(yīng)用一同部署。
簡單來說:
- 創(chuàng)建用戶、分配角色用 Flowable IDM。
- 畫流程圖用戶 Flowable Modeler。
- 測試、體驗流程用 Flowable Task。
- 后臺管理相關(guān)的用 Flowable Admin。
2. 安裝方式
在之前的版本中,前面說的這幾個應(yīng)用都是不同的 war 包,部署和訪問都非常麻煩,不過現(xiàn)在,官方將之前的 5 個 war 整合成一個了,所以現(xiàn)在訪問就非常容易了。
2.1 運行 war 包
由于這些應(yīng)用是基于 Spring Boot2.0 開發(fā)的,因此也可以直接作為獨立應(yīng)用來直接運行,通過執(zhí)行 Java -jar xxx.war 的方式來啟動這些應(yīng)用。
這個需要大家首先去 GitHub 上下載最新的 Flowable:
下載成功之后解壓,里邊有一個 wars 文件夾,該文件夾中就有我們需要的 war 包,如下:
然后進入到該目錄中,執(zhí)行如下命令啟動該 war 文件:
java -jar flowable-ui.war
從啟動到日志中我們就可以看出來這是一個 Spring Boot:
既然是一個 Spring Boot,那么如果又一些參數(shù)想改,就可以直接在啟動命令中修改,例如默認的端口號是 8080,現(xiàn)在想改為 8088,那么就在啟動命令中添加參數(shù) –server.port=8088 即可。
所以直接啟動這些應(yīng)用并不是麻煩事,反而是比較簡單的。
2.2 docker 安裝
我看了下他這個還支持 Docker 安裝,所以我還是用 Docker 吧,更省事,將來不想要了刪除也方便(對 Docker 不熟悉的小伙伴可以在微信公眾號后臺回復 docker,有松哥寫的入門教程)。
docker 安裝的話,直接如下命令即可:
docker run -d --name flowableui -p 8086:8080 flowable/flowable-ui
沒什么特別需要配置的地方,指定一下容器名字和端口映射即可。
2.3 訪問
無論是直接運行還是 Docker 運行,運行成功之后,瀏覽器輸入 http://localhost:端口/flowable-ui 進行訪問,此時會彈出來如下頁面:
默認情況下,登錄的用戶名是 admin,密碼是 test,注意別把密碼寫錯了。
登錄成功之后,如果看到如下頁面,就表示安裝成功了(一般來說應(yīng)該不會有安裝問題):
裝好之后,接下來我們就來逐步體驗這里的功能,因為之前和小伙伴們講過這里的大部分功能了,所以今天我主要和大家講講這里的身份管理和流程體驗功能(因為流程體驗中要用到身份管理)。
3. 身份管理(IDM)
身份管理就是用戶、用戶組的管理,我們點進到身份管理頁面之后,可以看到如下內(nèi)容:
可以看到,默認只有一個 admin 用戶,也就是我們剛剛登錄時候的用戶。
3.1 用戶管理
接下來點擊左邊的創(chuàng)建用戶按鈕,我們可以創(chuàng)建新的用戶出來:
填入用戶的基本信息和密碼即可。
我一共創(chuàng)建了四個用戶,最終結(jié)果如下:
3.2 組管理
接下來點擊上面的組,我們可以創(chuàng)建用戶組,這個用戶組相當于我們在 vhr 中所說的角色,給用戶分組,相當于給用戶分配一個角色。
默認情況下,沒有任何組,組是空的:
我們點擊創(chuàng)建組按鈕,先來創(chuàng)建一個經(jīng)理組:
組添加成功之后,點擊添加用戶按鈕,為用戶組中添加用戶:
假設(shè) zhangsan 是經(jīng)理,最終添加結(jié)果如下:
利用相同的方式,我再創(chuàng)建一個主管的組,并為之添加兩個用戶 lisi 和 wangwu。
3.3 權(quán)限控制
我們前面創(chuàng)建的用戶現(xiàn)在是沒有任何權(quán)限的,例如現(xiàn)在如果使用 zhangsan/123 進行登錄,登錄成功后頁面是空的,沒有任何東西:
所以我們要為用戶添加相應(yīng)的權(quán)限。點擊頂部的權(quán)限控制一欄,如下:
我們可以為這五種訪問分別設(shè)置對應(yīng)的用戶/用戶組:
- 訪問 idm 應(yīng)用:這個就是訪問身份管理應(yīng)用,如果用戶沒有訪問這個的權(quán)限,那么用戶在登錄成功的后的首頁上就看不到身份管理應(yīng)用程序這個菜單項。
- 訪問 admin 應(yīng)用:這個是訪問管理員應(yīng)用程式,如果沒有沒有這個的訪問權(quán)限,那么用戶在登錄成功之后的首頁上就看不到管理員應(yīng)用程式這個菜單項。
- 訪問 modeler 應(yīng)用:這個是訪問建模器應(yīng)用程序,如果沒有沒有這個的訪問權(quán)限,那么用戶在登錄成功之后的首頁上就看不到建模器應(yīng)用程序這個菜單項。
- 訪問 workflow 應(yīng)用:這個是訪問任務(wù)應(yīng)用程序,如果沒有沒有這個的訪問權(quán)限,那么用戶在登錄成功之后的首頁上就看不到任務(wù)應(yīng)用程序這個菜單項。
- 訪問 REST API:這個是指用戶通過 REST API 訪問工作流的權(quán)限。
以訪問 idm 應(yīng)用為例,在設(shè)置的時候,我們可以直接設(shè)置用戶,也可以設(shè)置用戶組,設(shè)置用戶組的話,則這個組中的所有用戶都能訪問這個菜單項。
我這里設(shè)置的是經(jīng)理和 javaboy 可以訪問所有應(yīng)用,而主管只可以訪問 workflow 應(yīng)用。
好啦,準備工作完成后,接下來我們就來繪制一個報銷的流程圖,這個流程圖稍微復雜一些,并且?guī)в斜韱危@是松哥之前從未寫過的內(nèi)容。
4. 流程圖繪制
我先大致上用文字描述下我們的報銷流程:
- 啟動一個流程。
- 員工填寫報銷單,然后進行提交。
- 如果報銷金額小于等于 1000 元,則主管審批,主管審批通過后,流程結(jié)束;主管審批拒絕,則回到步驟 2 中員工重新填寫報銷單。
- 如果報銷金額大于 1000 元,則先由經(jīng)理進行審批,經(jīng)理審批通過后,再由 CEO 審批,兩者都審批通過,則流程結(jié)束;經(jīng)理和 CEO 任意一個審批不通過,則流程重新回到步驟 2 中。
好啦,這就是我們一個大致的流程描述,接下來我們就在 Flowable-UI 中來繪制這樣一個流程圖我們來看下。
首先點擊建模器應(yīng)用程序,我們開始繪制:
點擊右上角創(chuàng)建流程,創(chuàng)建一個流程:
然后就開始繪制。
首先第一步是用戶提交報銷材料,報銷材料需要填寫一個表單,所以我們在下面的屬性中,找到表單引用,為這個用戶任務(wù)設(shè)置一個外部表單:
如果有提前繪制好的表單,這里就會顯示出來,那么直接引用即可,如果沒有提前繪制好的表單,那么大家看到的就如同上圖那樣。
現(xiàn)在我們點擊新表單,創(chuàng)建一個新表單:
為新表單設(shè)置名稱、key 等內(nèi)容:
創(chuàng)建成功之后,我們就可以看到表單設(shè)計頁面了:
左邊是表單組件區(qū)域,右邊是表單繪制區(qū)域。思考用戶需要提交哪些信息來報銷,直接將相應(yīng)的表單拖過來即可。
其實大家看最上面一欄的頂部菜單,也自動切換到表單菜單了,這也就意味著,當我們想要創(chuàng)建一個表單的時候,也可以不用從流程繪制那個入口進來,可以直接提前繪制好表單,然后在畫流程的時候直接引用即可。
例如我首先拖一個文本框過來,作為用戶名,然后點擊右邊的編輯按鈕進行編輯,如下:
有如下屬性:
- 標簽:這個文本框?qū)碚故镜男畔ⅰ?/span>
- 覆蓋 id:勾上這個,就可以自定義 id 了,否則 id 和標簽是一樣的。
- id:這個是這個組件的唯一名稱,將來在代碼中,如果我們想要獲取這個表單的值,就需要通過這個 id 去訪問。
- 設(shè)置表單是否只讀或者必填。
- 默認值:這個相當于是這個表單的 placeholder。
好了,理解了這個,我們再來隨便加兩個組件,按照相同的思路進行配置:
報銷金額,這是一個小數(shù)組件:
報銷用途是一個多行文本組件:
最終設(shè)計結(jié)果如下:
標簽后面有一個 * 表示這是一個必填項。
繪制完成后,點擊左上角的保存按鈕,保存成功后,會自動回到流程繪制頁面。
接下來,我們還需要設(shè)置這個用戶任務(wù)由誰來處理,如下:
很明顯,這個流程是誰發(fā)起的,誰就來填寫這個表單,所以,配置如下:
好了,這個用戶任務(wù)就配置完成了,接下來要根據(jù)報銷金額進行劃分了,我一口氣畫完吧,再來和大家逐步分析:
先來看報銷金額小于等于 1000 的那條線。
首先,我們要為這條線設(shè)置條件,也就是流程從互斥網(wǎng)關(guān)中出來之后,什么情況下會進入到主管審批這個節(jié)點中,選中這條出線,配置流條件,配置如下:
這里的 money 就是我們剛剛在表單中填寫的 money,表單中各個字段的值,都會被映射成為一個流程變量,我們可以直接訪問。
接下來配置主管審批,首先我們設(shè)置分配用戶,即由誰來執(zhí)行這個用戶任務(wù):
我們設(shè)置候選組為主管,也就是所有的主管都可以審批這個節(jié)點:
主管審批的時候,無非就是同意或者拒絕,通過表單我們可以定義出同意或者拒絕這兩個按鈕。配置方式如下,首先為主管審批設(shè)置表單引用:
給這個新建的表單取一個名字和 id,這個 id 大家要記牢了,將來我們會用到:
在表單設(shè)計的頁面,有一個結(jié)果選項卡,這個表示表單的輸出內(nèi)容,這個結(jié)果選項卡決定了這個表單上的最終按鈕,默認情況下,只有一個完成按鈕,我們可以自定義配置:
我們?yōu)檫@個表單設(shè)置同意和拒絕兩個按鈕,方式如下:
這塊也有其他設(shè)置方式,我就先以這種方式來和大家演示,將來在視頻中再來和大家聊一聊其他方式。
表單配置完成后,保存即可,保存之后,就會回到流程繪制頁面。
接下來為同意這條出線設(shè)置條件:
大家注意這個表單的命名規(guī)則,是 form_表單名稱_outcome 這個就表示表單的輸出結(jié)果,也就是我們剛剛在表單中配置的結(jié)果選項卡中的內(nèi)容:
配置完成后,相同的方式,將同意改為拒絕,再來配置一下拒絕那條線。
好啦,上面這條線配置好之后,接下來相同的方式配置下面大于 1000 的情況,其中經(jīng)理這個用戶任務(wù)就由經(jīng)理這個組來處理,CEO 審批這個用戶任務(wù)就由指定用戶 javaboy 來審批即可,具體細節(jié)我就不多說了,都跟上面一樣。
繪制完成后,記得點一下左上角的勾,看下流程有沒有漏洞,如下圖:
至此,我們的流程圖就畫好了。
一個流程圖只能有一個開始,但是可以有多個結(jié)束。
5. 創(chuàng)建應(yīng)用
流程圖畫好之后,接下來我們可以下載這個流程圖對應(yīng)的 XML 文件,然后去開發(fā)自己的 Java 代碼。但是,這不是我們本文的工作,本文的工作是直接在 Flowable-UI 這個工具中,創(chuàng)建一個應(yīng)用,然后發(fā)布這個流程。
點擊上面的應(yīng)用程序菜單,然后點擊右上角的創(chuàng)建應(yīng)用程序按鈕,如下:
接下來可以為你的應(yīng)用設(shè)置圖標、主題啥的:
然后點擊編輯包含的模型按鈕,為這個應(yīng)用選擇一個流程:
然后點擊左上角的保存按鈕,保存并發(fā)布這個應(yīng)用,如下:
發(fā)布成功之后,回到首頁,就可以看到這個應(yīng)用了,如下:
6. 體驗報賬
接下來我們就來體驗一把這個報賬流程,我們目前的身份是 admin,也就是說 admin 這個用戶現(xiàn)在要報賬了。
首先點擊應(yīng)用圖標,進入到應(yīng)用中,任務(wù)是空的,也就是目前沒有 admin 需要審批的任務(wù):
然后我們點擊上方的流程菜單,如下:
首先點擊左邊的啟動流程,然后點擊右邊的啟動流程,流程啟動之后,我們可以點擊右上角的顯示圖按鈕,查看流程目前走到哪一步了:
可以看到,流程目前走到用戶提交報銷材料這一步了:
用戶提交報銷材料這一步是由流程的發(fā)起人完成的,也就是 admin 自己完成,此時我們回到任務(wù)菜單,就可以看到 admin 有需要完成的任務(wù)了:
填入報銷資料,然后點擊完成按鈕。
接下來再點擊流程菜單,查看流程圖,可以看到,此時進入到主管審批這一步了:
按照我們第 3 小節(jié)的配置,lisi 和 wangwu 是主管,所以,我們先注銷登錄,然后重新以 lisi 或者 wangwu 的身份登錄,假設(shè)我這里以 lisi 的身份登錄,登錄成功之后,進入到這個應(yīng)用中,進來之后,首先將篩選規(guī)則改為我是其中一個候選人的任務(wù):
然后在任務(wù)中就可以看到自己需要處理的任務(wù)了:
對于這種候選人或者候選組的任務(wù),需要先點擊右上角的認領(lǐng),然后再處理(如果是直接分配給某一個用戶的,就不需要認領(lǐng)了,可以直接處理了),認領(lǐng)之后,就可以選擇同意或者拒絕了,如下圖:
假設(shè)我們點擊拒絕按鈕,拒絕之后,我們點擊流程菜單,查看流程圖,如下:
可以看到,流程在進入到主管審批這個節(jié)點之后,被拒絕了,然后回到了用戶提交報銷材料這個節(jié)點上,現(xiàn)在 admin 要重新登錄,登錄之后,在自己的任務(wù)中又可以看到提交報銷材料了,如下:
隨便改一下,然后繼續(xù)提交。
切換到 wangwu 登錄,同意報銷,流程結(jié)束。
好啦,下面那條超過 1000 塊錢的線,小伙伴們可以自行測試,我就不演示啦~
今天這個文章的目的是讓大家體驗一把流程引擎,看看流程引擎是干嘛的,都有啥功能,松哥在未來的文章中,會逐步教大家如何用 Spring Boot Vue 實現(xiàn)這一套功能。
完結(jié)撒花~