activiti入門-第一天

從年前看activiti相關大約一個多月了,在網上搜索了無數的文章,感謝這個樓主的分享,從他的幾篇文章總算是入門了,自己嘗試寫了比較複雜的流程,總算實現了所有功能和業務,樓主鏈接https://blog.csdn.net/u011320740/article/details/52994361,再次感謝大牛的快速入門。

這次用的是activiti6.x,此次使用的是框架是若依的框架,官網請直接去這裏下載http://ruoyi.vip/,裏面有一個集成mysql版本的工作流項目,不過在使用中有一些問題,做了一些改進,數據庫版本也修改成oracle了,都是血和淚啊,改一個框架太難了啊!!!

言歸正傳,工作流開發第一步就是畫圖,若依的示例給了一個請假的業務,最簡單的業務,可以完全跑通,跟我一樣的小白可以參考這個去入門,畫圖框架自帶了一個工具是官方的Activiti Modeler,不過我嘗試了幾次,最後都是以失敗告終,最後我用的是開發工具帶的插件,一共兩款(idea和eclipse都有對應的插件),idea雖然比較新,但是插件最後一次更新的時間是14年,所以也不是很好用,界面和使用個人都不太喜歡,最後採用的是eclipse的插件,eclipse用的是比較新的19的版本,插件下載這裏就不再說明了,比較簡單。

activiti工作流的流程圖是bpmn的格式,新建之後直接畫圖即可。

這次就介紹一個比較簡單的流程,從開始到結束用到了兩次排他網關,排他網關就是根據條件,當符合條件滿足時進行之後的流程,在流程進行中只需要傳一個寫好的參數,然後在流程圖繪製時寫好對應的判斷條件即可。

流程開始即流程發起,activiti入門的博主也寫了一下,但是沒有配圖,第一步如果需要參數有幾種形式,99%的應該都是動態參數。

activiti的參數傳參形式都是${},這裏可以根據具體的業務進行傳參,如果是單個人完成此節點,則傳一個人即可map.put("jzqr", "a"),也就是承辦人爲a,如果是多人就有兩種形式,可以把多個人用逗號分隔,map.put("jzqr", "a,b,c"),如果是組的話,比較靈活,規定好對應的組名,後期可以把人添加到組內即可辦理此次節點的任務,組的創建和人物綁定就不再敘述了,網上資料一大把,map.put("jzqr", "group"),這裏重點說明一下,如果畫圖時設置了Main config,那麼流程進行中必須要傳對應的參數,否則會報錯,導致流程停滯。

後端對應的代碼也貼上:

Map<String,Object> map = new HashMap<String,Object>();

map.put("jzqr", "小明");

ProcessInstance processInstance = runtimeService .startProcessInstanceByKey("inspect", map);

String processInstanceId = processInstance.getId();

然後說一下排他網關,如圖

條件需要設置到對應的線上,這個對應的條件寫在Condition中,可以寫很多種條件比如大於小於等於之類的,我這裏用的是true和false,當流程需要進行到排他網關前,傳對應的dossierpass即可,後端代碼貼上:

Map<String, Object> map = new HashMap<String,Object>();
map.put("dossierpass", true); 
taskService.complete(taskid, map);

流程進行中只要這麼傳參就可以了,activiti會根據給出的條件自動判斷流程之後的走向,如果是true則流程進入打分,如果是false則流程進入再次維護。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章