首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Camunda:没有特定变量的查询进程

Camunda:没有特定变量的查询进程
EN

Stack Overflow用户
提问于 2020-05-15 19:44:39
回答 2查看 559关注 0票数 2

在Camunda (7.12)中,我可以按变量值查询进程:

代码语言:javascript
代码运行次数:0
运行
复制
runtimeService.createProcessInstanceQuery()
  .variableValueEquals("someVar", "someValue")
  .list();

我甚至可以查询进程中的空值变量:

代码语言:javascript
代码运行次数:0
运行
复制
runtimeService.createProcessInstanceQuery()
  .variableValueEquals("someVar", null)
  .list();

但是,如何查询没有变量someVar的进程呢

EN

回答 2

Stack Overflow用户

发布于 2020-06-05 18:41:54

我不确定为什么你不会弄明白这一点,但如果我是正确的,我认为你正在寻找,然后看起来很简单。ProcessInstanceQuery类还有一个名为variableValueNotEquals(String name, Object value)的方法,它允许您选择与变量不匹配的进程。在Camunda Java API文档中,它被声明为:

代码语言:javascript
代码运行次数:0
运行
复制
variableValueNotEquals(String name, Object value)
Only select process instances which have a global variable with the given name, but with a different value than the passed value.

供您参考的文档页面:

https://docs.camunda.org/javadoc/camunda-bpm-platform/7.12/?org/camunda/bpm/engine/RuntimeService.html

所以我相信你可以简单地这样做:

代码语言:javascript
代码运行次数:0
运行
复制
runtimeService.createProcessInstanceQuery()
  .variableValueNotEquals("someVar", null)
  .list();

如果这对你有帮助,请告诉我。

票数 0
EN

Stack Overflow用户

发布于 2020-06-10 02:31:50

首先,获取所有具有"someVar“的流程实例的ids列表。

第二,获取camunda中所有进程ids的列表

从第二个列表中获取不包含在第一个列表中的ids。

下面是Kotlin示例,因为它比Java代码短,但概念是相同的:

代码语言:javascript
代码运行次数:0
运行
复制
    val idsOfProcessesWithVar = runtimeService.createVariableInstanceQuery().variableName("someVar").list().map {
        it.processInstanceId
    }

    val allProcessesIds = runtimeService.createProcessInstanceQuery().list().map { it.id }

    allProcessesIds.minus(idsOfProcessesWithVar)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61818396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档