天道酬勤,学无止境

如何查询流程定义的运行实例?(How to query running instances of a process definition?)

问题

camunda 引擎是否提供 API 来查询某个进程的所有正在运行的实例? 此查询是否也包括挂起的实例?

回答1

您可以使用以下代码查询流程的所有正在运行的流程实例:

package org.camunda.bpm;

import org.camunda.bpm.engine.ProcessEngine;
import org.camunda.bpm.engine.RepositoryService;
import org.camunda.bpm.engine.RuntimeService;
import org.camunda.bpm.engine.repository.ProcessDefinition;
import org.camunda.bpm.engine.runtime.ProcessInstance;
import java.util.List;

public class AllRunningProcessInstances {

  public List<ProcessInstance> getAllRunningProcessInstances(String processDefinitionName) {
    // get process engine and services
    ProcessEngine processEngine = BpmPlatform.getDefaultProcessEngine();
    RuntimeService runtimeService = processEngine.getRuntimeService();
    RepositoryService repositoryService = processEngine.getRepositoryService();

    // query for latest process definition with given name
    ProcessDefinition myProcessDefinition =
        repositoryService.createProcessDefinitionQuery()
            .processDefinitionName(processDefinitionName)
            .latestVersion()
            .singleResult();

    // list all running/unsuspended instances of the process
    List<ProcessInstance> processInstances =
        runtimeService.createProcessInstanceQuery()
            .processDefinitionId(myProcessDefinition.getId())
            .active() // we only want the unsuspended process instances
            .list();

    return processInstances;
  }

}

如果您想包括甚至暂停的流程实例,那么只需删除 .active() 行。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Activiti工作流从入门到入土:完整Hello World大比拼(Activiti工作流 API
    文章源码托管:https://github.com/OUYANGSIHAI/Activiti-learninig欢迎 star !!! 本来想着闲来无事,前面在项目中刚刚用到了工作流 Activiti 框架,写写博客的,但是,事情总是纷纷杂杂,一直拖延到现在,这一节原本想要写一下关于 Activiti 的 API ,但是,想着太多这样的博客了,而且显得太生硬,难以理解,所以,这些 API 就在实际的 demo 中来讲解。 一、建立流程图 在开始做工作流之前,我们首先应该把具体的业务在工作流的部署流程图体现出来,并且都测试通过,这样就相当于成功了一半,后面的具体业务的开发就相对轻松一些了。 首先,我们先看一看在 idea 中有哪些控件,常用的控件进行了标注。 下面我们讲一下建立一个流程图的具体过程。 首先,我们需要拉入一个开始节点到 bpmn 文件中,这是图像化的界面,只需要拉入即可。 然后,我们从控件中拉入一个 UserTask 用户任务节点到 bpmn 文件中。 这样子就有了两个审批节点了,如果还需要其他的一些业务需求,我们还可以加入一些网关,这里就暂时不加了。 最后,我们只需要一个结束节点 EndEvent 就完成了这个工作流的部署图的绘制。 我们最后看一下完整的例子。 看似已经完成了整个流程图的绘制,但美中不足的是我们目前并没有设置导师审批和辅导员审批到底由谁来审批,所以
  • Activiti5 学习笔记(一)—— 入门
    引用jar包 <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>5.22.0</version> </dependency> 安装流程设计器(eclipse插件) 在线安装: Name: Activiti BPMN 2.0 designer Location: http://activiti.org/designer/update/ 离线安装包:https://github.com/Activiti/Activiti-Designer/releases 在安装离线安装包时,需要下载4个eclipse的插件(放在eclipse的plugin目录下),否则activiti插件包安装时会报错 org.eclipse.emf.transaction-1.8.0.201405281451.jar org.eclipse.emf.validation.ui-1.7.0.201405281429.jar org.eclipse.emf.validation-1.8.0.201405281429.jar org.eclipse.emf.workspace-1.5.1.201405281451.jar 以上四个jar可以在maven仓库https://dist
  • activiti7笔记
    文章目录 一、基础知识1.1activiti核心工作机制1.2BPM1.3BPMN 二、入门案例2.1流程设计器插件安装2.2 创建数据库,名字随意2.3创建maven工程2.4导入pom依赖2.5配置文件activiti.cfg.xml2.6放log4j.properties文件到项目中2.7运行java程序,创建数据库表2.8数据库表说明 三、activiti架构类与接口说明3.1activiti服务架构图3.2ProcessEngine3.3Service 四、流程定义4.1创建bpmn文件4.2画BPMN图4.3分配任务4.4文件备份与重命名4.5导出流程图 五、部署流程定义六、启动流程实例七、任务查询八、当前用户任务处理九、压缩包部署方式十、流程定义查询十一、删除已部署流程的定义十二、流程资源资源查看十三、历史数据查询十四、关联业务系统十五、全部流程实例的挂起与激活十六、单个流程实例的挂起与激活 一、基础知识 1.1activiti核心工作机制 流程变更的时候不需要改变源代码,因为节点的数据是记录在表中的,而对于多一个流程或者少一个流程来说,只是在表中多一条记录或者少一条记录而已,并不需要去改变源代码. 1、画好流程图 2、将流程图的每个节点的数据读取并放入数据库 3、从表中读取第一条记录,处理并删除 1.2BPM BPM(Business Process
  • activity7整合springboot2
    工作流已经广泛使用,如下介绍入门 pom中先引入 <!-- https://mvnrepository.com/artifact/org.activiti/activiti-spring-boot-starter --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter</artifactId> <version>7.1.0.M6</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter<
  • Activiti7工作流学习笔记一 流程定义
    Activiti7工作流学习笔记一 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。 工作流管理系统(Workflow Management System, WfMS)是一个软件系统,它完成工作量的定义和管理,并按照在系统中预先定义好的工作流规则进行工作流实例的执行。工作流管理系统不是企业的业务系统,而是为企业的业务系统的运行提供了一个软件的支撑环境。 工作流管理联盟(WfMC,Workflow Management Coalition)给出的关于工作流管理系统的定义是:工作流管理系统是一个软件系统,它通过执行经过计算的流程定义去支持一批专门设定的业务流程。工作流管理系统被用来定义、管理、和执行工作流程。 工作流管理系统的目标:管理工作的流程以确保工作在正确的时间被期望的人员所执行——在自动化进行的业务过程中插入人工的执行和干预。 Activiti原理分析 使用方式 定义工作流 使用eclipse插件完成,leaveProcess.bpmn(计算机进行流程的执行与信息的传递使用);leaveProcess.png用户使用,查看流程的进度 使用https://demo.bpmn.io/
  • 如何在实例上的所有数据库上运行相同的查询?(How to run the same query on all the databases on an instance?)
    问题 我在SQL Server 2008 R2实例上有(出于测试目的)具有相同架构(基本上是相同的表和列)的许多数据库。 我想要一个查询 SELECT COUNT(*) FROM CUSTOMERS 在实例上的所有数据库上。 我想要作为结果2列: 1-数据库名称 2- COUNT(*)的值 例子: DBName // COUNT (*) TestDB1 // 4 MyDB // 5 etc... 注意:我假设CUSTOMERS表存在于所有数据库中( master除外)。 回答1 试试这个- SET NOCOUNT ON; IF OBJECT_ID (N'tempdb.dbo.#temp') IS NOT NULL DROP TABLE #temp CREATE TABLE #temp ( [COUNT] INT , DB VARCHAR(50) ) DECLARE @TableName NVARCHAR(50) SELECT @TableName = '[dbo].[CUSTOMERS]' DECLARE @SQL NVARCHAR(MAX) SELECT @SQL = STUFF(( SELECT CHAR(13) + 'SELECT ''' + name + ''', COUNT(1) FROM [' + name + '].' + @TableName FROM sys
  • Springboot项目中使用activiti7.0版本
    1.0、为什么使用工作流框架 开发一些工作流相关的系统,为实现代码解耦合将工作流程和业务代码剥离是很有必要的,此处介绍activiti 1.1、介绍activiti 官网地址,国外的网站,您自个去看吧。 2.0、Sringboot项目中集成activiti 2.1、pom中加入依赖 ###此处直接一个依赖就全部都包括了,千万不要搞一堆杂七杂八的依赖再他妈jar包冲突。 <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter</artifactId> <version>7.1.0.M6</version> </dependency> 2.2、yml中加入配置 spring: activiti: database-schema-update: true db-history-used: true check-process-definitions: false history-level: audit 这里加入的目的是为了,在项目启动的时候,activiti框架会自动检查此项目的后台数据库,创建工作流框架的后台表 2.3、数据库表 如上图所示,act开头的表都是activiti所需要的后台表 2.4、接口实现 下面我会介绍一些activiti框架提供的api
  • 详解springBoot集成activiti7,工作流实战案例(三)
    快速使用IDEA搭建SpringBoot项目,集成Activiti7(一) 详解springBoot集成activiti7,使用actiBPM绘制流程图(二) 过程分析: 部署流程启动一个流程实例查询当前流程中等待执行的任务处理任务流程结束 用到activiti的service(ps:记得注入): RepositoryServiceRuntimeServiceTaskService @Autowired private RepositoryService repositoryService; @Autowired private RuntimeService runtimeService; @Autowired private TaskService taskService; 1.部署流程 /** * 部署流程 */ public void prepare() { // 创建一个部署对象 Deployment deployment = repositoryService.createDeployment () .name ("请假流程") .addClasspathResource ("processes/test_bpmn20.xml") .addClasspathResource ("processes/test.png") .deploy (); System.out
  • 网易Spark Kyuubi核心架构设计与源码实现剖析
    版权声明:本文为xpleaf(香飘叶子)博主原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文较为系统、全面并且由浅入深地介绍了网易Spark Kyuubi出现的背景、核心架构设计与关键源码实现,是学习、应用和对Kyuubi进行二次开发不可多得的技术干货,但由于作者认知水平有限,文中难免会出现描述不准确的措辞,还请多多包容和指出。 1 概述 Kyuubi是网易数帆旗下易数大数据团队开源的一个高性能的通用JDBC和SQL执行引擎,建立在Apache Spark之上,Kyuubi的出现,较好的弥补了Spark ThriftServer在多租户、资源隔离和高可用等方面的不足,是一个真正可以满足大多数生产环境场景的开源项目。 通过分析Spark ThriftServer的设计与不足,本文会逐渐带你深入理解Kyuubi的核心设计与实现,同时会选取多个关键场景来剖析其源码,通过本文的阅读,希望能让读者对网易Kyuubi的整体架构设计有一个较为清晰的理解,并能够用在自己的生产环境中解决更多实际应用问题。 本文主要主要选取Kyuubi 1.1.0版本来对其设计与实现进行分析,后续的版本迭代社区加入了数据湖等概念和实现,本文不会对这方面的内容进行探讨。 2 Spark ThriftServer的设计、实现与不足 2.1 产生背景 在最初使用Spark时
  • 工作流中篇
    工作流中篇 1、资源文件保存编码实现2、历史数据查询3、SaaS软件即服务业务系统整合activiti4、关联bussinesskey5、全部流程实例挂起6、单个流程实例激活与挂起7、流程挂起和激活后的测试8、流程定义流程实例总结9、activiti进阶:个人任务(有坑)10、监听器分配11、个人任务查询及办理12、流程变量13、流程变量作用域14、流程变量的使用方法:前期准备15、流程变量实例准备:pojo类 1、资源文件保存编码实现 1、先创建流程定义。部署。恢复到之前的数据表的数据。保证有bpmn和png文件存储在数据库 2、编码实现 package com.ljs.activity; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RepositoryService; import org.activiti.engine.repository.ProcessDefinition; import org.activiti.engine.repository.ProcessDefinitionQuery; import org.apache.commons.io.IOUtils; import java
  • GraphQL及元数据驱动架构在后端BFF中的实践
    GraphQL是Facebook提出的一种数据查询语言,核心特性是数据聚合和按需索取,目前被广泛应用于前后端之间,解决客户端灵活使用数据问题。本文介绍的是GraphQL的另一种实践,我们将GraphQL下沉至后端BFF(Backend For Frontend)层之下,结合元数据技术,实现数据和加工逻辑的按需查询和执行。这样不仅解决了后端BFF层灵活使用数据的问题,这些字段加工逻辑还可以直接复用,大幅度提升了研发的效率。本文介绍的实践方案已经在美团部分业务场景中落地,并取得不错效果,希望这些经验能够对大家有帮助。BFF一词来自Sam Newman的一篇博文《Pattern:Backends For Frontends》,指的是服务于前端的后端。BFF是解决什么问题的呢?据原文描述,随着移动互联网的兴起,原适应于桌面Web的服务端功能希望同时提供给移动App使用,而在这个过程中存在这样的问题:移动App和桌面Web在UI部分存在差异。移动App涉及不同的端,不仅有iOS、还有Android,这些不同端的UI之间存在差异。原有后端功能和桌面Web UI之间已经存在了较大的耦合。因为端的差异性存在,服务端的功能要针对端的差异进行适配和裁剪,而服务端的业务功能本身是相对单一的,这就产生了一个矛盾——服务端的单一业务功能和端的差异性诉求之间的矛盾。那么这个问题怎么解决呢
  • 是否使用Mutex防止同一程序的多个实例安全运行?(Is using a Mutex to prevent multiple instances of the same program from running safe?)
    问题 我正在使用此代码来防止我的程序的第二个实例同时运行,这是否安全? Mutex appSingleton = new System.Threading.Mutex(false, "MyAppSingleInstnceMutx"); if (appSingleton.WaitOne(0, false)) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); appSingleton.Close(); } else { MessageBox.Show("Sorry, only one instance of MyApp is allowed."); } 我担心如果发生异常而应用程序崩溃,则Mutex仍将保留。 真的吗? 回答1 通常,这是可行的。 但是,细节在于魔鬼。 首先,您要在finally块中关闭互斥量。 否则,您的进程可能会突然终止,并使其处于发出信号的状态,例如异常。 这样可以使将来的流程实例无法启动。 但是,不幸的是,即使使用了finally块,您也必须处理进程可能终止而不释放互斥量的可能性。 例如,如果用户通过TaskManager终止了进程,则可能会发生这种情况。
  • 每个子类的继承关系表:如何在不加载任何子类的情况下针对父类进行查询? (休眠)(Table per subclass inheritance relationship: How to query against the Parent class without loading any subclass ??? (Hibernate))
    问题 假设每个子类继承关系的表可以在下面描述(来自wikibooks.org-参见此处) 注意父类不是抽象的 @Entity @Inheritance(strategy=InheritanceType.JOINED) public class Project { @Id private long id; // Other properties } @Entity @Table(name="LARGEPROJECT") public class LargeProject extends Project { private BigDecimal budget; } @Entity @Table(name="SMALLPROJECT") public class SmallProject extends Project { } 我有一种情况,我只需要检索Parent类。 由于性能问题,我应该怎么做才能运行HQL查询以检索Parent类,而只检索Parent类而不加载任何子类? 回答1 解决方法如下所述: 将您的Parent类定义为MappedSuperClass 。 假设父类映射到PARENT_TABLE @MappedSuperClass public abstract class AbstractParent implements Serializable { @Id
  • 工作流学习日志(基础-概念、基本api使用)
    工作流学习日志(基础-概念、基本api使用) 文章目录 工作流学习日志(基础-概念、基本api使用)前言一、工作流是什么?1. 概念2. 实际开发中的具体使用3. 实现方式 二、Activiti7概述1. 介绍2. BPM3. BPM软件4. BPMN 三. Activiti7的使用1. 开发准备2. 流程设计器下载3. 创建activiti数据库4. 使用Activiti7创建出需要的数据库表创建准备activiti表结构介绍 5. Activiti关系流程引擎配置类1. StandaloneProcessEngineConfiguration2. SpringProcessEngineConfiguration 工作引擎创建方式Servcie服务接口 6. ActiBPM插件的使用1. 设置工作流程图2. 将流程图导出为png图片 7. Activiti7基本使用1. 流程部署2. 流程启动3. 查询个人任务列表4. 执行选中的任务5. 查看流程定义查询6. 流程删除7. 获取流程部署资源文件8. 查询历史消息 总结 前言 开发OA人力资源管理系统时在人员调动时、请假审批等需要使用到工作流,以此作为学习契机。 一、工作流是什么? 1. 概念 工作流(Workflow),通过计算机对业务流程自动化执行管理。主要解决“使在多个参与者之间按照某种预定义的规则自动进行传递文档
  • [源码分析] 带你梳理 Flink SQL / Table API内部执行流程
    本文将简述Flink SQL / Table API的内部实现,为大家把 "从SQL语句到具体执行" 这个流程串起来。并且尽量多提供调用栈,这样大家在遇到问题时就知道应该从什么地方设置断点,对整体架构理解也能更加深入。[源码分析] 带你梳理 Flink SQL / Table API内部执行流程目录[源码分析] 带你梳理 Flink SQL / Table API内部执行流程1. SQL 解析阶段(SQL–>SqlNode)2. SqlNode 验证(SqlNode–>SqlNode)3. 语义分析(SqlNode–>RelNode/RexNode)4. 优化阶段(RelNode–>RelNode)5. 生成ExecutionPlan6. 运行时StreamExecUnionRuleStreamExecJoinRule优化器的作用基于成本优化(CBO)VolcanoPlanner相关概念VolcanoPlanner执行步骤优化规则1. TableEnvironment对象2. Catalog3. StreamPlanner4. FlinkPlannerImpl5. Table 和 TableImpl1. Flink关系型API执行原理2. Flink Sql 执行流程3. Flink Table Api 执行流程4. Flink Table/SQL 执行流程的异同1
  • 获取作为给定项目实例的所有Wikidata项目(Get all Wikidata items that are an instance of a given item)
    问题 Wikidata有一个称为智能手机模型的项目。 我想得到它的所有实例。 问题:如何使用实时服务器以编程方式获取实例的标识符? 最好不包括出现在WhatLinksHere中但位于“ Wikidata:”命名空间而不是主命名空间中的误报。 回答1 您的问题指定了“Mediawiki API”,但这是不可能的。 Wikidata在https://query.wikidata.org上具有SPARQL查询服务 您想要的查询是: PREFIX wd: <http://www.wikidata.org/entity/> PREFIX wdt: <http://www.wikidata.org/prop/direct/> SELECT DISTINCT ?item WHERE { ?item wdt:P31/wdt:P279* wd:Q19723451 } 这将列出作为“实例”(P31)“智能手机型号”(Q19723451)或“实例子类”(P279)“智能手机型号”(Q19723451)的项目。 回答2 这还不可能。 (由于新的SPARQL接口解决了此类查询,因此添加它的任务被拒绝了。) 今天,您在Mediawiki API中可能props=linkshere的最好的事情是在props=linkshere使用action=query和props
  • flea-frame-db使用之基于对象池的FleaJPAQuery
    基于对象池的FleaJPAQuery 书接上回JPA封装介绍博文,提到 FleaJPAQuery 在前一个版本(单例模式)下存在并发的问题,下面首先来分析一下,然后再介绍目前基于对象池的解决方案。 问题分析 上个版本 FleaJPAQuery 使用单例模式获取,意味着在同一个服务器中DAO层获取的 FleaJPAQuery 有且仅有一个。如下所示: private static volatile FleaJPAQuery query; private FleaJPAQuery() { } /** * <p> 获取Flea JPA查询对象 </p> * * @return Flea JPA查询对象 * @since 1.0.0 */ public static FleaJPAQuery getQuery() { if (ObjectUtils.isEmpty(query)) { synchronized (FleaJPAQuery.class) { if (ObjectUtils.isEmpty(query)) { query = new FleaJPAQuery(); } } } return query; } DAO层需要频繁获取 FleaJPAQuery ,来实现数据库查询功能,一开始认为单例模式最为适用;但是后来使用发现,FleaJPAQuery 获取之后
  • Kubernetes用了,延迟高了10倍,问题在哪?
    近期,我所在的团队将一项微服务迁移到中央平台。这套中央平台捆绑有 CI/CD,基于 Kubernetes 的运行时以及其他功能。这项演习也将作为先头试点,用于指导未来几个月内另外 150 多项微服务的进一步迁移。而这一切,都是为了给西班牙的多个主要在线平台(包括 Infojobs、Fotocasa 等)提供支持。在将应用程序部署到 Kubernetes 并路由一部分生产流量过去后,情况开始发生变化。Kubernetes 部署中的请求延迟要比 EC2 上的高出 10 倍。如果不找到解决办法,不光是后续微服务迁移无法正常进行,整个项目都有遭到废弃的风险。 为什么 Kubernetes 中的延迟要远高于 EC2?为了查明瓶颈,我们收集了整个请求路径中的指标。这套架构非常简单,首先是一个 API 网关(Zuul),负责将请求代理至运行在 EC2 或者 Kubernetes 中的微服务实例。在 Kubernetes 中,我们仅代表和 NGINX Ingress 控制器,后端则为运行有基于 Spring 的 JVM 应用程序的 Deployment 对象。 EC2 +---------------+ | +---------+ | | | | | +-------> BACKEND | | | | | | | | | +---------+ | | +---------------+ +---
  • Kubernetes用了,延迟高了10倍,问题在哪?
    近期,我所在的团队将一项微服务迁移到中央平台。这套中央平台捆绑有 CI/CD,基于 Kubernetes 的运行时以及其他功能。这项演习也将作为先头试点,用于指导未来几个月内另外 150 多项微服务的进一步迁移。而这一切,都是为了给西班牙的多个主要在线平台(包括 Infojobs、Fotocasa 等)提供支持。在将应用程序部署到 Kubernetes 并路由一部分生产流量过去后,情况开始发生变化。Kubernetes 部署中的请求延迟要比 EC2 上的高出 10 倍。如果不找到解决办法,不光是后续微服务迁移无法正常进行,整个项目都有遭到废弃的风险。 为什么 Kubernetes 中的延迟要远高于 EC2?为了查明瓶颈,我们收集了整个请求路径中的指标。这套架构非常简单,首先是一个 API 网关(Zuul),负责将请求代理至运行在 EC2 或者 Kubernetes 中的微服务实例。在 Kubernetes 中,我们仅代表和 NGINX Ingress 控制器,后端则为运行有基于 Spring 的 JVM 应用程序的 Deployment 对象。 EC2 +---------------+ | +---------+ | | | | | +-------> BACKEND | | | | | | | | | +---------+ | | +---------------+ +---
  • 解决“ ObjectContext实例已被处置,并且不能再用于需要连接的操作” InvalidOperationException(Solving “The ObjectContext instance has been disposed and can no longer be used for operations that require a connection” InvalidOperationException)
    问题 我试图使用Entity Frameworkm填充GridView但是每次遇到以下错误时: “对象'COSIS_DAL.MemberLoan'上的属性访问器'LoanProduct'引发以下异常:ObjectContext实例已被处置,不能再用于需要连接的操作。” 我的代码是: public List<MemberLoan> GetAllMembersForLoan(string keyword) { using (CosisEntities db = new CosisEntities()) { IQueryable<MemberLoan> query = db.MemberLoans.OrderByDescending(m => m.LoanDate); if (!string.IsNullOrEmpty(keyword)) { keyword = keyword.ToLower(); query = query.Where(m => m.LoanProviderCode.Contains(keyword) || m.MemNo.Contains(keyword) || (!string.IsNullOrEmpty(m.LoanProduct.LoanProductName) && m.LoanProduct.LoanProductName.ToLower()