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