activiti前端画图转化_记Activiti入门使用-2 流程绘制、导入及开始一个流程
一、流程繪制與導入
百度啥的找了好多bpmn繪制工具,都不盡如人意,大多數都不能編輯網關出口的跳轉條件,最后還是選擇了activiti官方的那個繪圖的app。。。
啥都好,就是線不能彎,很難受。(后來開發的時候驚訝地發現了方法,雖然感覺操作不是很友好)
要是有好用的希望大家能夠推薦一下~
下面Old Version選擇6.x Download,下載完成后是一個zip包,解壓后把里面的activiti-app.war丟到tomcat下面啟動就行,這邊使用tomcat8.5.49,該war包需要java1.8。
(這邊用idea直接起war包好像會遇到一系列問題,主要是contentPath會變,所以還是直接丟到tomcat下面吧)。
1、
啟動后訪問:http://localhost:8080/activiti-app/#/會跳轉到登錄頁,默認賬號:admin/test即可,登陸后界面如下,選擇第一個:
2、
然后選擇Create Process
3、
新建頁面如下:
Model name為流程名稱(可重復)
Model key為流程Key,實際調用中使用的即為該key,似乎key可以相同,但是后面創建的會有版本號的概念,會自動+1
4、
畫圖就完事了,繪圖規則可以自行了解bpmn
5、
保存后選擇下載,放入工程目錄/resources/processes下,修改后綴為bpmn,其實應該是可以直接解析bpmn20.xml文件的來著,具體的還在學習~
啟動項目出現:The following process definition files will be deployed: [***.bpmn]即說明流程部署成功。
二、如何開始一個流程
我們以上圖的流程為例,這邊先提幾個關鍵的service類
2.1?服務接口
1、TaskService
在流程進行過程中,每個節點的操作方法,經常用的比如:查詢處于“領導審批”這個節點的任務,完成這個任務等等。
2、RuntimeService
流程相關服務,基本的功能例如:開始一個實例流程等等。
3、RepositoryService
流程部署相關的服務
4、HistoryService
歷史流程相關的服務
2.2?開始流程
如上所說,開始流程我們需要用到RuntimeService這個類。
直接上代碼:
@PostMapping(value = "/start")
@ResponseBody
@ApiOperation(value= "啟動某個流程")publicString start(@RequestParam String instanceKey) {//map中放入該流程需要的業務數據
Map map = new HashMap<>();
map.put("createUser", "Test");
map.put("createTime", 1576206360000L);
ProcessInstance instance=runtimeService.startProcessInstanceByKey(instanceKey, map);returninstance.getId();
}
調用runtimeService.startProcessInstanceByKey(),根據部署的流程key來啟動一個流程,RuntimeService里面也有很多根據其他標識啟動流程的方法,具體還需要研究。
其中instanceKey對應項目啟動時日志中部署的流程key,也就是bpmn文件中該行的id。
根據方法返回的id觀察數據庫,可以發現很多表里面都會新建以該id為主鍵的數據,該條id也可以用來標識一條流程實例。
2.3?查詢流程
流程的最基礎的查詢也需要用到RuntimeService這個類:
@PostMapping(value = "/list")
@ResponseBody
@ApiOperation(value= "查詢某個流程實例")public Listlist(@RequestParam String definitionKey) {//創建查詢條件
ProcessInstanceQuery processInstanceQuery =runtimeService.createProcessInstanceQuery();//根據流程實例key來查詢,即查詢該流程有多少個正在進行的實例
List runningList =processInstanceQuery.processDefinitionKey(definitionKey).list();//返回實例的id,這邊需要包裝成自己需要的業務數據返回
List ids = new ArrayList<>();
runningList.forEach(list->ids.add(list.getId()));returnids;
}
這邊是根據2.2中的key來查詢實例,實際觀察該類里面的方法,可以發現很多的其他查詢條件。
這邊如果直接返回List會報懶加載的一些錯誤,所以還是自己封裝一遍比較好,里面不需要的字段也比較多。
總結
以上是生活随笔為你收集整理的activiti前端画图转化_记Activiti入门使用-2 流程绘制、导入及开始一个流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言程序设计第2章,C语言程序设计第2
- 下一篇: 计算机终端网络准入控制要求,计算机网络终