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图片文件的名称(其余步骤一样)



原创文章,未经允许禁止盗用



 

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