在Camunda (7.12)中,我可以按变量值查询进程:
runtimeService.createProcessInstanceQuery()
.variableValueEquals("someVar", "someValue")
.list();
我甚至可以查询进程中的空值变量:
runtimeService.createProcessInstanceQuery()
.variableValueEquals("someVar", null)
.list();
但是,如何查询没有变量someVar
的进程呢
发布于 2020-06-05 10:41:54
我不确定为什么你不会弄明白这一点,但如果我是正确的,我认为你正在寻找,然后看起来很简单。ProcessInstanceQuery
类还有一个名为variableValueNotEquals(String name, Object value)
的方法,它允许您选择与变量不匹配的进程。在Camunda Java API文档中,它被声明为:
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.
供您参考的文档页面:
所以我相信你可以简单地这样做:
runtimeService.createProcessInstanceQuery()
.variableValueNotEquals("someVar", null)
.list();
如果这对你有帮助,请告诉我。
发布于 2020-06-09 18:31:50
首先,获取所有具有"someVar“的流程实例的ids列表。
第二,获取camunda中所有进程ids的列表
从第二个列表中获取不包含在第一个列表中的ids。
下面是Kotlin示例,因为它比Java代码短,但概念是相同的:
val idsOfProcessesWithVar = runtimeService.createVariableInstanceQuery().variableName("someVar").list().map {
it.processInstanceId
}
val allProcessesIds = runtimeService.createProcessInstanceQuery().list().map { it.id }
allProcessesIds.minus(idsOfProcessesWithVar)
https://stackoverflow.com/questions/61818396
复制相似问题