activiti的一些記錄

1、根據task的id獲取task:

       TaskService taskService = getTaskService();
       Task task = taskService.createTaskQuery().taskId(taskId).singleResult();

2、獲取圖片的方式:

       public static InputStream getProcessDefinitionPicture(String deploymentId, String resourceName) {
            RepositoryService service = getRepositoryService();
            ProcessDefinitionQuery processDefQuery = service.createProcessDefinitionQuery().deploymentId(deploymentId);
            ProcessDefinition def = processDefQuery.singleResult();
            String resName = def.getDiagramResourceName();
            return service.getResourceAsStream(deploymentId, resName);
        }

        InputStream io = ProcessUtil.getProcessDefinitionPicture(tempDef.getDeploymentId(), tempDef.getResourceName());
        //得到圖片的二進制數據,以二進制封裝得到數據,具有通用性  
        byte[] data = readInputStream(io);  
         //new一個文件對象用來保存圖片,默認保存當前工程根目錄  
         File imageFile = new File("d://test.png");  
         //創建輸出流  
         FileOutputStream outStream = new FileOutputStream(imageFile);  
         //寫入數據  
         outStream.write(data);  
         //關閉輸出流  
         outStream.close();  

        public static byte[] readInputStream(InputStream inStream) throws Exception{  
            ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
            //創建一個Buffer字符串  
            byte[] buffer = new byte[1024];  
            //每次讀取的字符串長度,如果爲-1,代表全部讀取完畢  
            int len = 0;  
            //使用一個輸入流從buffer裏把數據讀取出來  
            while( (len=inStream.read(buffer)) != -1 ){  
                //用輸出流往buffer裏寫入數據,中間參數代表從哪個位置開始讀,len代表讀取的長度  
                outStream.write(buffer, 0, len);  
            }  
           //關閉輸入流  
           inStream.close();  
           //把outStream裏的數據寫入內存  
           return outStream.toByteArray();  
       }  

 3、根據流程定義Key和版本號獲取該流程所有Task定義,這個可以獲取流程定義中Task節點的名稱和ID等,代碼如下:

          /**
        * 根據流程定義ID獲取該流程所有任務定義
        * @param processDefinitionId  流程定義ID
        * @param processDefinitionVersion 版本號
        * @return
        */
        public static List<TaskDefinition> getUserTaskByProcessDefinitionId(String processDefinitionId, int processDefinitionVersion) {
            List<TaskDefinition> taskDefList = new ArrayList<TaskDefinition>();  
            RepositoryService repositoryService = getRepositoryService();   
            ProcessDefinition def = repositoryService.createProcessDefinitionQuery()
            processDefinitionKey(processDefinitionId).processDefinitionVersion(processDefinitionVersion).singleResult();  
            ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService)
  .getDeployedProcessDefinition(def.getId());    
            List<ActivityImpl> activityImplList = processDefinitionEntity.getActivities();  
            for(ActivityImpl tempActivity : activityImplList) {
                  Object type =  tempActivity.getProperty("type");
                  if("userTask".equals(type)) {
                       TaskDefinition taskDefinition = ((UserTaskActivityBehavior)tempActivity.getActivityBehavior()).getTaskDefinition();
                       taskDefList.add(taskDefinition);
                  }
           }   
           return taskDefList;
   }

     測試代碼如下:

     List<TaskDefinition> taskDefList = TaskUtil.getUserTaskByProcessDefinitionId("myProcess", 1);

    for(TaskDefinition tempTaskDef : taskDefList) {
          System.out.println("任務名稱:" + tempTaskDef.getNameExpression().getExpressionText());
          System.out.println("任務ID:" + tempTaskDef.getKey());
    }

發佈了132 篇原創文章 · 獲贊 708 · 訪問量 102萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章