• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Y-wee
博客园    首页    新随笔    联系   管理     

Activiti 流程资源文件下载及历史信息查询

Activiti 流程资源文件下载及历史信息查询

流程部署之后相关资源文件(bpmn 和 png)已经上传到数据库(act_ge_bytearray表)了,如果其他用户想要查看这些资源文件,可以从数据库中把资源文件下载到本地

/**
  * 流程资源文件下载
  */
@Test
public void resourceDownload() throws IOException {
    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    RepositoryService repositoryService = processEngine.getRepositoryService();
    ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
        .processDefinitionKey("evection").singleResult();
    // 获取流程部署ID
    String deploymentId = processDefinition.getDeploymentId();
    // 获取流程图片对应的输入流
    InputStream pngInput = repositoryService.getResourceAsStream(deploymentId, processDefinition.getDiagramResourceName());
    // 获取流程文件的输入流
    InputStream bpmnInput = repositoryService.getResourceAsStream(deploymentId, processDefinition.getResourceName());

    File filePng = new File("e:/evectionflow01.png");
    File fileBpmn = new File("e:/evectionflow01.bpmn");
    FileOutputStream bpmnOut = new FileOutputStream(fileBpmn);
    FileOutputStream pngOut = new FileOutputStream(filePng);
    FileCopyUtils.copy(pngInput,pngOut);
    FileCopyUtils.copy(bpmnInput,bpmnOut);

    pngOut.close();
    bpmnOut.close();
    pngInput.close();
    bpmnInput.close();
}

注意:保存下来的 png 图片不要使用系统默认名称,最好自己修改名称后再保存到本地进行流程部署,不然可能会导致流程部署后 act_re_procdef 表的DGRM_RESOURCE_NAME(图片名称) 字段为空

删除或执行完的流程定义依然保存在activiti的act_hi_*相关的表中,所以我们还是可以查询流程执行的历史信息,可以通过HistoryService来查看相关的历史记录

/**
  * 流程历史信息查询
  */
@Test
public void selectHistory(){
    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    HistoryService historyService = processEngine.getHistoryService();
    HistoricActivityInstanceQuery instanceQuery = historyService.createHistoricActivityInstanceQuery();
    // 根据InstanceId(对应PROC_INST_ID_字段)查询act_hi_actinst表
    //        instanceQuery.processInstanceId("2501");
    // 根据DefinitionId(对应PROC_DEF_ID_)查询act_hi_actinst表
    instanceQuery.processDefinitionId("evection:1:4");
    // 排序-根据开始时间升序
    instanceQuery.orderByHistoricActivityInstanceStartTime().asc();
    // 查询所有内容
    List<HistoricActivityInstance> activityInstanceList = instanceQuery.list();

    for (HistoricActivityInstance hi : activityInstanceList) {
        System.out.println(hi.getActivityId());
        System.out.println(hi.getActivityName());
        System.out.println(hi.getProcessDefinitionId());
        System.out.println(hi.getProcessInstanceId());
        System.out.println("<==========================>");
    }
}
记得快乐
posted @ 2020-11-02 19:26  Y-wee  阅读(1265)  评论(1)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3