flowable实战(三)flowable流程实例管理接口
生活随笔
收集整理的這篇文章主要介紹了
flowable实战(三)flowable流程实例管理接口
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 一、流程實(shí)例的管理接口常見功能:
- 1.啟動(dòng)一個(gè)流程(即創(chuàng)建一個(gè)流程實(shí)例)
- 2.本人發(fā)起的流程實(shí)例
- 3.本人參與的流程實(shí)例
- 4.掛起/激活流程實(shí)例
- 5.提前終止流程實(shí)例(或又叫撤銷流程)
- 6.徹底刪除流程實(shí)例
- 7.流程圖查看
- 8.判斷流程實(shí)例的狀態(tài)(運(yùn)行中/已結(jié)束)
- 二、主要接口:
- 2.1. 啟動(dòng)流程:
- 2.2. 提前終止流程實(shí)例:
- 2.3. 本人發(fā)起的流程實(shí)例:
- 2.4. 掛起與激活流程實(shí)例:
- 2.5. 生成流程圖
- 2.6. 判斷流程實(shí)例在運(yùn)行中是否存在
- 2.7. 查詢歷史實(shí)例中流程實(shí)例是否存在
一、流程實(shí)例的管理接口常見功能:
1.啟動(dòng)一個(gè)流程(即創(chuàng)建一個(gè)流程實(shí)例)
2.本人發(fā)起的流程實(shí)例
3.本人參與的流程實(shí)例
4.掛起/激活流程實(shí)例
5.提前終止流程實(shí)例(或又叫撤銷流程)
6.徹底刪除流程實(shí)例
7.流程圖查看
8.判斷流程實(shí)例的狀態(tài)(運(yùn)行中/已結(jié)束)
二、主要接口:
2.1. 啟動(dòng)流程:
public ProcessInstance strartFlow(String processKey, Map<String, Object> paras){//啟動(dòng)前必須開啟,這樣才能取得流程發(fā)起人String userId=paras.get("AuthenticatedUserId").toString();//設(shè)置流程實(shí)例的發(fā)起人是當(dāng)前用戶Authentication.setAuthenticatedUserId(userId);// 取得業(yè)務(wù)idString busiKey = paras.get("busiKey").toString();if (StringUtils.isEmpty(processKey)){logger.error("錯(cuò)誤:流程定義未找到!");}if (null == paras){paras = new HashMap<>();}Deployment deployment = repositoryService.createDeploymentQuery().processDefinitionKey(processKey).singleResult();if (deployment == null) {logger.error("錯(cuò)誤:啟動(dòng)流程實(shí)例:" + processKey);}ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processKey, busiKey, paras); // 同時(shí)設(shè)置業(yè)務(wù)的id到流程實(shí)例中的BUSINESS_KEY_logger.info("成功:啟動(dòng)流程實(shí)例:" + processInstance.getProcessDefinitionName() + ":" + processInstance.getId());Authentication.setAuthenticatedUserId(null); // 這個(gè)方法最終使用一個(gè)ThreadLocal類型的變量進(jìn)行存儲(chǔ),也就是與當(dāng)前的線程綁定,所以流程實(shí)例啟動(dòng)完畢之后,需要設(shè)置為null,防止多線程的時(shí)候出問題。return processInstance; }2.2. 提前終止流程實(shí)例:
public void deleteProcessInstanceById(String processInstanceId){// ""這個(gè)參數(shù)本來可以寫刪除原因runtimeService.deleteProcessInstance(processInstanceId,""); }2.3. 本人發(fā)起的流程實(shí)例:
/*** @Description: 我發(fā)起的流程實(shí)例列表*** @Date: 2019/5/12 20:31* @Param:userId 用戶id* @return: List<Zjm_gflowTask> 流程實(shí)例列表**/ public List<HistoricProcessInstance> getMyStartProcint(String userId){List<HistoricProcessInstance> list=processEngine.getHistoryService() // 歷史相關(guān)Service.createHistoricProcessInstanceQuery().startedBy(userId).orderByProcessInstanceStartTime().asc().list();return list; }2.4. 掛起與激活流程實(shí)例:
/*** @Description: 掛起流程實(shí)例* ** @Date: 2019/5/15 1:19 * @Param: processInstanceId 當(dāng)前流程實(shí)例id* @return: 無**/ public void handUpProcessInstance(String processInstanceId){runtimeService.suspendProcessInstanceById(processInstanceId); }/*** @Description:恢復(fù)(喚醒)被掛起的流程實(shí)例* ** @Date: 2019/5/15 1:22 * @Param: processInstanceId 流程實(shí)例id* @return: 無**/ public void activateProcessInstance(String processInstanceId){runtimeService.activateProcessInstanceById(processInstanceId); }2.5. 生成流程圖
// 將生成圖片放到文件夾下 String deploymentId = "801"; // 獲取圖片資源的名稱 List<String > list = processEngine.getRepositoryService().getDeploymentResourceNames(deploymentId); // 定義圖片資源的名稱 String resourceName = ""; if (list !=null && list.size()>0){for (String name:list){if (name.indexOf(".png")>=0){resourceName = name;}} }// 獲取圖片的輸入流 InputStream in = processEngine.getRepositoryService().getResourceAsStream(deploymentId,resourceName); // 將圖片生成到D盤的根目錄下 File file = new File ("D:/" + resourceName); // 將輸入流的圖片寫到d盤下 FileUtils.copyInputStreamToFile(in,file);2.6. 判斷流程實(shí)例在運(yùn)行中是否存在
/*** @Description: 判斷流程實(shí)例在運(yùn)行中存不存在* ** @Date: 2019/5/26 19:24 * @Param: procInstanceId 流程實(shí)例* @return: true表示存在,false表示不存在**/ public Boolean isExistProcIntRunning(String procInstanceId){ProcessInstance pi= runtimeService.createProcessInstanceQuery().processInstanceId(procInstanceId).singleResult();if (pi==null){return false;}else{return true;} }2.7. 查詢歷史實(shí)例中流程實(shí)例是否存在
/*** @Description: 查詢歷史實(shí)例中流程實(shí)例是否存在* ** @Date: 2019/5/26 19:35 * @Param: procInstanceId 流程實(shí)例* @return: true表示存在,false表示不存在**/ public Boolean isExistProcHistory(String procInstanceId){HistoricProcessInstance hpi= historyService.createHistoricProcessInstanceQuery().processInstanceId(procInstanceId).singleResult();if (hpi==null){return false;}else{return true;} }總結(jié)
以上是生活随笔為你收集整理的flowable实战(三)flowable流程实例管理接口的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS之前台参数提交到后台,双引号转义为解
- 下一篇: VMVare 虚拟机使用桥接模式