首页 > 其他分享 >activiti:流程定义管理 ProcessDefifinition

activiti:流程定义管理 ProcessDefifinition

时间:2023-02-28 16:44:25浏览次数:58  
标签:定义 activiti 流程 System servcie ProcessDefifinition println out

activiti:流程定义管理 ProcessDefifinition

上文链接:https://www.cnblogs.com/wangshaoyun/p/17150560.html

部署好流程定义后,则可以进行查询、激活(启动)、挂起(暂停)、删除流程定义数据(上面讲的删除流程定义部署信息就是),下载流程定义对应的 xml文件和 png 文件。

按条件分页查询流程定义数据

@Autowired
RepositoryService servcie;
​
//查询的是act_re_procdef表
@Test
public void getProcDefList() {
    ProcessDefinitionQuery query = servcie.createProcessDefinitionQuery();
    String name = "请假";
    if (StringUtils.isNotBlank(name)) {
        query.processDefinitionNameLike("%" + name + "%");//条件查询
    }
​
    query.latestVersion()//如果多个相同的key,只查询最新版本的流程定义
            .orderByProcessDefinitionKey().desc();//按照key降序
​
    int current = 1;//当前页
    int size = 5;//每页显示的条数
    int firstResult = (current - 1) * size;//当前页第一条数据的下标
    List<ProcessDefinition> pages = query.listPage(firstResult, size);
    for (ProcessDefinition page : pages) {
        System.out.println("流程部署id:" + page.getDeploymentId());
        System.out.println("流程定义id:" + page.getId());
        System.out.println("流程定义key:" + page.getKey());
        System.out.println("流程定义名称:" + page.getName());
        System.out.println("流程版本号:" + page.getVersion());
        System.out.println("流程状态:" + (page.isSuspended() ? "挂起" : "激活"));
    }
​
    long count = query.count();
    System.out.println("满足条件的总记录数:" + count);
}

激活或挂起流程定义

@Autowired
RepositoryService servcie;
​
//查询的是act_re_procdef表 挂起之后,所有流程实力不允许继续往后流转,激活之后可以继续流转 (SUSPENSION_STATE_:1,激活;2,挂起)
@Test
public void updateProcDefState() {
    String processDefinitionId = "leave:1:8dc3d29b-b66b-11ed-8ced-38f3abe10e1d";
    ProcessDefinition processDefinition = servcie.createProcessDefinitionQuery()
            .processDefinitionId(processDefinitionId)
            .singleResult();
    //判断是否挂起,true:挂起 false:激活
    if (processDefinition.isSuspended()) {
        //挂起 -> 激活
        //参数说明:参数1,流程定义id 参数2,是否激活 参数3,什么时候激活,如果为null则立即激活,如果为具体时间,则到达此时间后激活
        servcie.activateProcessDefinitionById(processDefinitionId,true,null);
    }else {
        //激活 -> 挂起
        servcie.suspendProcessDefinitionById(processDefinitionId,false,null);
    }
}

下载流程定义的xml和png文件

@Autowired
RepositoryService servcie;
​
@Test
public void exportProcDefFile() throws Exception {
    String id = "leave:1:19095e64-b70f-11ed-beb7-38f3abe10e1d";
    //查询流程定义数据
    ProcessDefinition processDefinition = servcie.getProcessDefinition(id);
    //获取的是xml和资源名
    String resourceName = processDefinition.getResourceName();
    //获取png图片资源名
    resourceName = processDefinition.getDiagramResourceName();
    //查询到相关的输入流
    InputStream input = servcie.getResourceAsStream(processDefinition.getDeploymentId(), resourceName);
    File file = new File("C:/study/activiti/" + resourceName);
    FileOutputStream output = new FileOutputStream(file);
​
    IOUtils.copy(input, output);
    input.close();
    output.close();
    System.out.println("流程定义资源文件导出成功:" + resourceName);
}

标签:定义,activiti,流程,System,servcie,ProcessDefifinition,println,out
From: https://www.cnblogs.com/wangshaoyun/p/17164959.html

相关文章

  • 谷歌Gmail邮箱开启SMTP/IMAP服务流程[转载]
    前言:本篇专门定向讲解谷歌Gmail邮箱,如何开通SMTP协议的流程,在讲篇幅前,我需要你确定3件事:1.你已经有谷歌账号了2.你很清楚自己为什么想要开通SMTP服务3.你已经掌握一定......
  • 基于jeecgboot的flowable流程增加节点自动跳过功能
    为了满足有时候需要在某个节点没有人员处理的时候需要自动跳过,所以增加了这个功能。一、FlowComment意见里增加一个类型8,跳过流程/***流程意见类型**/publicenumF......
  • 基于jeecgboot的flowable流程支持定时捕获事件
     Flowable事件  事件(event)通常用于为流程生命周期中发生的事情建模。事件总是图形化为圆圈。在BPMN2.0中,有两种主要的事件分类:*捕获(catching)与抛出(throwing)*事件。捕获:......
  • 基于jeecgboot的flowable流程支持定时边界事件
    Flowable事件  事件(event)通常用于为流程生命周期中发生的事情建模。事件总是图形化为圆圈。在BPMN2.0中,有两种主要的事件分类:*捕获(catching)与抛出(throwing)*事件。捕获:......
  • 基于jeecgboot的flowable流程支持online表单审批线上发布
        基于jeecgboot的flowable流程支持online表单审批线上临时发布一个版本,还有很多东西不完善,所以代码暂时不上传,等大家测试完善后考虑上传。    因为online......
  • 专利撰写 为什么要申请专利 申请专利对个人有什么利益关系 专利申请实例 如何申请专利
      专利撰写专利是对发明者或创造者所创造的发明或设计提供一定期限的独占权的法律保护。撰写专利需要考虑到多方面的因素,包括发明或设计的技术性、可行性、独创性、......
  • jsp执行流程
    Jsp执行流程jsp-----java----classE:\student\apache-tomcat-8.5.30\work\Catalina\localhost\JspProject(orglapache\jsp因为第一请求服务端会......
  • Luffy项目:1、软件开发流程,路飞项目需求
    目录Luffy项目一、软件开发流程二、路飞项目需求1、pip永久换源2、虚拟环境3、路飞项目前后端创建Luffy项目一、软件开发流程软件开发全流程:1、项目立项-立项:确......
  • #跟着小白一起学鸿蒙#WebSocket的使用和流程分析
    作者:王石WebSocket是一种网络通讯协议,很多网络开发工作者都需要它。本文介绍在OpenHarmony上WebSocket协议的使用方法。WebSocket有什么不同很多人会问,有了HTTP协议,尤其......
  • JSP执行流程
    JSP执行流程 第一次访问:服务端将jsp翻译成java,再将Java编译成class文件第二次访问的时候:就i相对速度就会变快,并且它不需要在进行转变,但是如果服务端修改了代码。......