我們都知道activiti的act_ge_bytearray表中存放着我們的資源文件,那麼怎麼把它下載下來存放到電腦上呢
從表中讀取資源文件
步驟:
- 獲取processEngine對象
- 獲取RepositryService對象
- 得到ProcessDefinitionQuery
- 設置查詢條件
- 執行查詢操作,查詢出流程定義
- 根據流程定義信息,得到部署的id
- 輸入流InpueStream讀取bpmn文件信息
- 輸出流OutputStream
- IO流轉換
- 關閉流
第一步:提取代碼進行封裝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圖片文件的名稱(其餘步驟一樣)
原創文章,未經允許禁止盜用