Activiti(十二)從表中讀取資源文件

我們都知道activiti的act_ge_bytearray表中存放着我們的資源文件,那麼怎麼把它下載下來存放到電腦上呢

從表中讀取資源文件


步驟:

  1. 獲取processEngine對象
  2. 獲取RepositryService對象
  3. 得到ProcessDefinitionQuery
  4. 設置查詢條件
  5. 執行查詢操作,查詢出流程定義
  6. 根據流程定義信息,得到部署的id
  7. 輸入流InpueStream讀取bpmn文件信息
  8. 輸出流OutputStream
  9. IO流轉換
  10. 關閉流

 


第一步:提取代碼進行封裝FileToCreateUtil文件創建類

public class FileToCreateUtil {
   
    public static File getOs(String name) throws IOException {

        String fileN="E:\\項目\\csdn\\Activiti\\代碼\\讀取的資源文件存放地址\\";


        File file=new File(fileN+name);

        if (!file.exists()) {
            // 1,先得到文件的上級目錄,並創建上級目錄
            file.getParentFile().mkdirs();
            try {
                // 2,再創建文件
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return file;
    }
}

第二步:創建BpmnFile

public class BpbmFile {

    public static void main(String[] args) throws IOException {
        //1:獲取processEngine對象
        ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
        //2:獲取RepositryService對象
        RepositoryService repositoryService=processEngine.getRepositoryService();
        //3:得到ProcessDefinitionQuery
        ProcessDefinitionQuery processDefinitionQuery=repositoryService.createProcessDefinitionQuery();
        //4:設置查詢條件
        processDefinitionQuery.processDefinitionKey("day");
        //5:執行查詢操作,查詢出流程定義
        ProcessDefinition definitionQuery = processDefinitionQuery.singleResult();
        //6:根據流程定義信息,得到部署的id
        String deploymentId=definitionQuery.getDeploymentId();
        //7:輸入流InpueStream讀取bpmn文件信息
        InputStream bpmnIns=repositoryService.getResourceAsStream(deploymentId,definitionQuery.getResourceName());//參數:部署Id和資源名稱
        //8:輸出流OutputStream  (definitionQuery.getResourceName()可以替換成自定義)
        OutputStream bpmnOs= new FileOutputStream(FileToCreateUtil.getOs(definitionQuery.getResourceName()));
        //9:IO流轉換 
        IOUtils.copy(bpmnIns,bpmnOs);
        //10:關閉流
        bpmnOs.close();
        bpmnIns.close();
    }
}

運行結果:


補充知識點:
definitionQuery.getDiagramResourceName()獲取png圖片文件的名稱(其餘步驟一樣)



原創文章,未經允許禁止盜用



 

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