activiti6教程四
本節(jié)將結(jié)合官方繪圖工具和API進(jìn)行一次整合
- 首先繪制流程圖如下
?圖中${pass==1}和${pass==0}為網(wǎng)關(guān)執(zhí)行條件,當(dāng)pass==1時候執(zhí)行t2任務(wù)當(dāng)pass==0時t4路線,設(shè)置方法為點擊那條連接線,選擇Flow condition輸入?${pass==1},那么在后續(xù)中只要我們將activiti中改變pass的變量的值就能控制流程的走向
?
?
?
設(shè)置message事件,點擊圖中空白處,選擇message definitions 添加一個消息事件,這邊添加了一個mes1事件
點擊圖中t3里面邊界消息事件圖標(biāo)
?
?點擊message reference 下拉框選擇上一步添加的mes1事件,這樣這個邊界消息事件就和mes1消息做了綁定,當(dāng)流程走到t3時我們就可以手動發(fā)出mes1消失,由于t3訂閱了mes1消息那么流程就會完成回退,回到t2節(jié)點
?
-
設(shè)置監(jiān)聽器
將監(jiān)聽器所在路徑填入t1的
?
?
選擇Event事件類型為complete,同理你可以設(shè)置為create,在任務(wù)到達(dá)這個節(jié)點時觸發(fā)監(jiān)聽器,這里設(shè)置的是任務(wù)完成時候觸發(fā)監(jiān)聽器
?
?
-
接下來把流程打包發(fā)布?
?點擊頂部Apps按鈕,點擊create App按鈕
設(shè)置發(fā)布的包名
點擊下圖按鈕將你剛才保存的流程圖導(dǎo)入,然后點擊左上角的保存即可
?點擊右上角publish既完成發(fā)布,現(xiàn)在后端管理流程維護(hù)基本結(jié)束
回到首頁點擊 Task App模塊
點擊方面的Processes按鈕,再點擊 start a process就可以看見我們之前發(fā)布的atest流程我們可以在這個模塊中開啟流程,完成流程,接下來這些步驟我們通過調(diào)用官方提供的API來實現(xiàn)
?
?
?
?
?
調(diào)用前端API步驟
首先新建一個maven工程,在pom中引入
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>1.5.19.RELEASE</version><scope>test</scope> </dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.44</version> </dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starters</artifactId><version>6.0.1-SNAPSHOT</version> </dependency>?
注入如果你使用的是中央倉庫,則無法引入6.0.1這個activiti版本的starter,需要參考前面章節(jié)自行下載便也打包
接下來是設(shè)置SpringBoot配置文件中的數(shù)據(jù)源,這個數(shù)據(jù)源必須和前面不是的activiti-app工程的數(shù)據(jù)源相同,因為這兩個工程是公用一個數(shù)據(jù)庫(不然在后端部署的流程前端怎么看的見)。
接下來編寫測試代碼
-
第一步我們先剛才我們部署的流程是否成功
我們可以通過debug模式查看Deployment中的數(shù)據(jù)結(jié)構(gòu),可以發(fā)現(xiàn)里面包含了一些部署信息
-
接下來我們設(shè)置流程的發(fā)起人并且開始一個這個流程 ,并返回一個流程實例,由于我們這個流程的key設(shè)置為atest所以我們把atest傳入api,api中還提供了很多種開啟流程的方法,這個可以自行去RuntimeService接口中查找
?
-
?接下來我們根據(jù)任務(wù)發(fā)起人去查詢該用戶下有多少任務(wù),并且去完成任務(wù)
我們看到當(dāng)執(zhí)行complete方法時之前設(shè)置的監(jiān)聽器已經(jīng)生效并且打印出代碼?
我們執(zhí)行最后一段代碼發(fā)現(xiàn)現(xiàn)在任務(wù)已經(jīng)到達(dá)一下個節(jié)點t2
-
?下面我們繼續(xù)進(jìn)行回退
調(diào)用API taskService.complete()方法將任務(wù)執(zhí)行到t3任務(wù)節(jié)點,現(xiàn)在我們要發(fā)起回退,現(xiàn)在流程已經(jīng)到達(dá)t3節(jié)點
?
調(diào)用api發(fā)起一個回退時間mes1
接下來調(diào)用查詢方法發(fā)現(xiàn)現(xiàn)在流程已經(jīng)回退到t2節(jié)點
最后附上代碼github地址
https://github.com/liushprofessor/activititest
總結(jié)
以上是生活随笔為你收集整理的activiti6教程四的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 100个最常用的PHP函数(建议收藏)
- 下一篇: 声明为指针,定义为数组,声明为数组,定义