From 747cbf6d9cf421105598fd898a8e5964d76dae3a Mon Sep 17 00:00:00 2001 From: Tijs Rademakers Date: Wed, 3 Sep 2014 11:29:26 +0200 Subject: [PATCH] Added deployment id in query option --- .../history/HistoricProcessInstanceQuery.java | 6 ++ .../history/HistoricTaskInstanceQuery.java | 6 ++ .../HistoricProcessInstanceQueryImpl.java | 14 +++ .../impl/HistoricTaskInstanceQueryImpl.java | 13 +++ .../engine/impl/ProcessInstanceQueryImpl.java | 14 +++ .../activiti/engine/impl/TaskQueryImpl.java | 14 +++ .../engine/runtime/ProcessInstanceQuery.java | 6 ++ .../org/activiti/engine/task/TaskQuery.java | 6 ++ .../activiti/db/mapping/entity/Execution.xml | 16 +++- .../entity/HistoricProcessInstance.xml | 16 +++- .../mapping/entity/HistoricTaskInstance.xml | 16 +++- .../org/activiti/db/mapping/entity/Task.xml | 16 +++- .../test/api/history/HistoryServiceTest.java | 87 +++++++++++++++++++ .../api/runtime/ProcessInstanceQueryTest.java | 32 ++++++- .../engine/test/api/task/TaskQueryTest.java | 55 ++++++++++++ 15 files changed, 312 insertions(+), 5 deletions(-) diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/history/HistoricProcessInstanceQuery.java b/modules/activiti-engine/src/main/java/org/activiti/engine/history/HistoricProcessInstanceQuery.java index 1cb7739f73..8d5e8540e1 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/history/HistoricProcessInstanceQuery.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/history/HistoricProcessInstanceQuery.java @@ -21,6 +21,7 @@ import java.util.Set; import org.activiti.engine.ProcessEngineConfiguration; import org.activiti.engine.query.Query; import org.activiti.engine.runtime.ProcessInstanceQuery; +import org.activiti.engine.task.TaskQuery; /** * Allows programmatic querying of {@link HistoricProcessInstance}s. @@ -56,6 +57,11 @@ public interface HistoricProcessInstanceQuery extends Query deploymentIds); /** Only select historic process instances that are completely finished. */ HistoricProcessInstanceQuery finished(); diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/history/HistoricTaskInstanceQuery.java b/modules/activiti-engine/src/main/java/org/activiti/engine/history/HistoricTaskInstanceQuery.java index e0d913749d..b9997def3f 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/history/HistoricTaskInstanceQuery.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/history/HistoricTaskInstanceQuery.java @@ -96,6 +96,12 @@ public interface HistoricTaskInstanceQuery extends Query deploymentIds); + /** * Only select historic task instances with the given task name. * This is the last name given to the task. diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/HistoricProcessInstanceQueryImpl.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/HistoricProcessInstanceQueryImpl.java index 3be4d3ca3d..39e58287ec 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/HistoricProcessInstanceQueryImpl.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/HistoricProcessInstanceQueryImpl.java @@ -38,6 +38,7 @@ public class HistoricProcessInstanceQueryImpl extends AbstractVariableQueryImpl< protected String processDefinitionId; protected String businessKey; protected String deploymentId; + protected List deploymentIds; protected boolean finished = false; protected boolean unfinished = false; protected boolean deleted = false; @@ -134,6 +135,15 @@ public class HistoricProcessInstanceQueryImpl extends AbstractVariableQueryImpl< } return this; } + + public HistoricProcessInstanceQuery deploymentIdIn(List deploymentIds) { + if (inOrStatement) { + orQueryObject.deploymentIds = deploymentIds; + } else { + this.deploymentIds = deploymentIds; + } + return this; + } public HistoricProcessInstanceQuery finished() { if (inOrStatement) { @@ -582,6 +592,10 @@ public class HistoricProcessInstanceQueryImpl extends AbstractVariableQueryImpl< public String getDeploymentId() { return deploymentId; } + + public List getDeploymentIds() { + return deploymentIds; + } public boolean isFinished() { return finished; diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/HistoricTaskInstanceQueryImpl.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/HistoricTaskInstanceQueryImpl.java index 9e80d89bea..0602c5aaca 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/HistoricTaskInstanceQueryImpl.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/HistoricTaskInstanceQueryImpl.java @@ -41,6 +41,7 @@ public class HistoricTaskInstanceQueryImpl extends AbstractVariableQueryImpl deploymentIds; protected String processInstanceId; protected String processInstanceBusinessKey; protected String processInstanceBusinessKeyLike; @@ -233,6 +234,15 @@ public class HistoricTaskInstanceQueryImpl extends AbstractVariableQueryImpl deploymentIds) { + if (inOrStatement) { + orQueryObject.deploymentIds = deploymentIds; + } else { + this.deploymentIds = deploymentIds; + } + return this; + } public HistoricTaskInstanceQuery taskId(String taskId) { if (inOrStatement) { @@ -1051,6 +1061,9 @@ public class HistoricTaskInstanceQueryImpl extends AbstractVariableQueryImpl getDeploymentIds() { + return deploymentIds; + } public String getProcessInstanceBusinessKeyLike() { return processInstanceBusinessKeyLike; } diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ProcessInstanceQueryImpl.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ProcessInstanceQueryImpl.java index d6e5b839e9..71dcbec737 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ProcessInstanceQueryImpl.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ProcessInstanceQueryImpl.java @@ -45,6 +45,7 @@ public class ProcessInstanceQueryImpl extends AbstractVariableQueryImpl processInstanceIds; protected String processDefinitionKey; protected String deploymentId; + protected List deploymentIds; protected String superProcessInstanceId; protected String subProcessInstanceId; protected boolean excludeSubprocesses; @@ -212,6 +213,15 @@ public class ProcessInstanceQueryImpl extends AbstractVariableQueryImpl deploymentIds) { + if (inOrStatement) { + this.orQueryObject.deploymentIds = deploymentIds; + } else { + this.deploymentIds = deploymentIds; + } + return this; + } + public ProcessInstanceQuery superProcessInstanceId(String superProcessInstanceId) { if (inOrStatement) { this.orQueryObject.superProcessInstanceId = superProcessInstanceId; @@ -576,6 +586,10 @@ public class ProcessInstanceQueryImpl extends AbstractVariableQueryImpl getDeploymentIds() { + return deploymentIds; + } public boolean isIncludeProcessVariables() { return includeProcessVariables; diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/TaskQueryImpl.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/TaskQueryImpl.java index 15c8657171..df03fffbdc 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/TaskQueryImpl.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/TaskQueryImpl.java @@ -79,6 +79,7 @@ public class TaskQueryImpl extends AbstractVariableQueryImpl im protected String processDefinitionName; protected String processDefinitionNameLike; protected String deploymentId; + protected List deploymentIds; protected String processInstanceBusinessKey; protected String processInstanceBusinessKeyLike; protected String processInstanceBusinessKeyLikeIgnoreCase; @@ -808,6 +809,15 @@ public class TaskQueryImpl extends AbstractVariableQueryImpl im return this; } + public TaskQuery deploymentIdIn(List deploymentIds) { + if(orActive) { + orQueryObject.deploymentIds = deploymentIds; + } else { + this.deploymentIds = deploymentIds; + } + return this; + } + public TaskQuery dueDate(Date dueDate) { if(orActive) { orQueryObject.dueDate = dueDate; @@ -1169,6 +1179,10 @@ public class TaskQueryImpl extends AbstractVariableQueryImpl im public String getDeploymentId() { return deploymentId; } + + public List getDeploymentIds() { + return deploymentIds; + } public String getProcessInstanceBusinessKeyLike() { return processInstanceBusinessKeyLike; diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/runtime/ProcessInstanceQuery.java b/modules/activiti-engine/src/main/java/org/activiti/engine/runtime/ProcessInstanceQuery.java index 2f7616409d..7998b40bac 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/runtime/ProcessInstanceQuery.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/runtime/ProcessInstanceQuery.java @@ -13,6 +13,7 @@ package org.activiti.engine.runtime; import java.io.Serializable; +import java.util.List; import java.util.Set; import org.activiti.engine.ProcessEngineConfiguration; @@ -75,6 +76,11 @@ public interface ProcessInstanceQuery extends Query deploymentIds); /** * Select the process instances which are a sub process instance of the given diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/task/TaskQuery.java b/modules/activiti-engine/src/main/java/org/activiti/engine/task/TaskQuery.java index d35fb0bdb1..f98f716e30 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/task/TaskQuery.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/task/TaskQuery.java @@ -434,6 +434,12 @@ public interface TaskQuery extends Query{ */ TaskQuery deploymentId(String deploymentId); + /** + * Only select tasks which are part of a process instance which has one of the given + * deployment ids. + */ + TaskQuery deploymentIdIn(List deploymentIds); + /** * Only select tasks with the given due date. */ diff --git a/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/Execution.xml b/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/Execution.xml index 7b37011f3b..8ed2bd10d1 100644 --- a/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/Execution.xml +++ b/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/Execution.xml @@ -333,7 +333,7 @@ inner join ${prefix}ACT_RU_EXECUTION INST on RES.PROC_INST_ID_ = INST.ID_ - + left outer join ${prefix}ACT_RE_PROCDEF DEPLOY_P ON RES.PROC_DEF_ID_ = DEPLOY_P.ID_ @@ -376,6 +376,13 @@ and DEPLOY_P.DEPLOYMENT_ID_ = #{deploymentId} + + and DEPLOY_P.DEPLOYMENT_ID_ IN + + #{deployment} + + @@ -517,6 +524,13 @@ or DEPLOY_P.DEPLOYMENT_ID_ = #{orQueryObject.deploymentId} + + or DEPLOY_P.DEPLOYMENT_ID_ IN + + #{deployment} + + diff --git a/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/HistoricProcessInstance.xml b/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/HistoricProcessInstance.xml index 63455e703c..ecaa61a2b0 100644 --- a/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/HistoricProcessInstance.xml +++ b/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/HistoricProcessInstance.xml @@ -225,7 +225,7 @@ left outer join ${prefix}ACT_HI_VARINST A_OR${index} on RES.PROC_INST_ID_ = A_OR${index}.PROC_INST_ID_ - + left outer join ${prefix}ACT_RE_PROCDEF DEPLOY_P ON RES.PROC_DEF_ID_ = DEPLOY_P.ID_ @@ -250,6 +250,13 @@ and DEPLOY_P.DEPLOYMENT_ID_ = #{deploymentId} + + and DEPLOY_P.DEPLOYMENT_ID_ IN + + #{deployment} + + and RES.START_TIME_ <= #{startedBefore} @@ -389,6 +396,13 @@ or DEPLOY_P.DEPLOYMENT_ID_ = #{orQueryObject.deploymentId} + + or DEPLOY_P.DEPLOYMENT_ID_ IN + + #{deployment} + + or RES.START_TIME_ <= #{orQueryObject.startedBefore} diff --git a/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/HistoricTaskInstance.xml b/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/HistoricTaskInstance.xml index d8049c92fb..de5de7809a 100644 --- a/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/HistoricTaskInstance.xml +++ b/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/HistoricTaskInstance.xml @@ -265,7 +265,7 @@ inner join ${prefix}ACT_RE_PROCDEF D on RES.PROC_DEF_ID_ = D.ID_ - + left outer join ${prefix}ACT_RE_PROCDEF DEPLOY_P ON RES.PROC_DEF_ID_ = DEPLOY_P.ID_ @@ -315,6 +315,13 @@ and DEPLOY_P.DEPLOYMENT_ID_ = #{deploymentId} + + and DEPLOY_P.DEPLOYMENT_ID_ IN + + #{deployment} + + and RES.PROC_INST_ID_ = #{processInstanceId} @@ -556,6 +563,13 @@ or DEPLOY_P.DEPLOYMENT_ID_ = #{orQueryObject.deploymentId} + + or DEPLOY_P.DEPLOYMENT_ID_ IN + + #{deployment} + + or RES.PROC_INST_ID_ = #{orQueryObject.processInstanceId} diff --git a/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/Task.xml b/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/Task.xml index 1566d05bbf..341a0997d9 100644 --- a/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/Task.xml +++ b/modules/activiti-engine/src/main/resources/org/activiti/db/mapping/entity/Task.xml @@ -315,7 +315,7 @@ inner join ${prefix}ACT_RU_EXECUTION E on RES.PROC_INST_ID_ = E.ID_ - + left outer join ${prefix}ACT_RE_PROCDEF DEPLOY_P ON RES.PROC_DEF_ID_ = DEPLOY_P.ID_ @@ -427,6 +427,13 @@ and DEPLOY_P.DEPLOYMENT_ID_ = #{deploymentId} + + and DEPLOY_P.DEPLOYMENT_ID_ IN + + #{deployment} + + and RES.DUE_DATE_ = #{dueDate} @@ -686,6 +693,13 @@ or DEPLOY_P.DEPLOYMENT_ID_ = #{orQueryObject.deploymentId} + + or DEPLOY_P.DEPLOYMENT_ID_ IN + + #{deployment} + + or RES.DUE_DATE_ = #{orQueryObject.dueDate} diff --git a/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/history/HistoryServiceTest.java b/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/history/HistoryServiceTest.java index 50c0af917b..523d783506 100644 --- a/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/history/HistoryServiceTest.java +++ b/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/history/HistoryServiceTest.java @@ -266,6 +266,31 @@ public class HistoryServiceTest extends PluggableActivitiTestCase { assertEquals(0, processInstanceQuery.count()); } + @Deployment(resources = { "org/activiti/engine/test/api/oneTaskProcess.bpmn20.xml", "org/activiti/engine/test/api/runtime/oneTaskProcess2.bpmn20.xml" }) + public void testHistoricProcessInstanceQueryByDeploymentIdIn() { + org.activiti.engine.repository.Deployment deployment = repositoryService.createDeploymentQuery().singleResult(); + HashSet processInstanceIds = new HashSet(); + for (int i = 0; i < 4; i++) { + processInstanceIds.add(runtimeService.startProcessInstanceByKey("oneTaskProcess", i + "").getId()); + } + processInstanceIds.add(runtimeService.startProcessInstanceByKey("oneTaskProcess2", "1").getId()); + + List deploymentIds = new ArrayList(); + deploymentIds.add(deployment.getId()); + deploymentIds.add("invalid"); + HistoricProcessInstanceQuery processInstanceQuery = historyService.createHistoricProcessInstanceQuery().deploymentIdIn(deploymentIds); + assertEquals(5, processInstanceQuery.count()); + + List processInstances = processInstanceQuery.list(); + assertNotNull(processInstances); + assertEquals(5, processInstances.size()); + + deploymentIds = new ArrayList(); + deploymentIds.add("invalid"); + processInstanceQuery = historyService.createHistoricProcessInstanceQuery().deploymentIdIn(deploymentIds); + assertEquals(0, processInstanceQuery.count()); + } + @Deployment(resources = { "org/activiti/engine/test/api/oneTaskProcess.bpmn20.xml", "org/activiti/engine/test/api/runtime/oneTaskProcess2.bpmn20.xml" }) public void testHistoricTaskInstanceQueryByDeploymentId() { org.activiti.engine.repository.Deployment deployment = repositoryService.createDeploymentQuery().singleResult(); @@ -286,6 +311,34 @@ public class HistoryServiceTest extends PluggableActivitiTestCase { assertEquals(0, taskInstanceQuery.count()); } + @Deployment(resources = { "org/activiti/engine/test/api/oneTaskProcess.bpmn20.xml", "org/activiti/engine/test/api/runtime/oneTaskProcess2.bpmn20.xml" }) + public void testHistoricTaskInstanceQueryByDeploymentIdIn() { + org.activiti.engine.repository.Deployment deployment = repositoryService.createDeploymentQuery().singleResult(); + HashSet processInstanceIds = new HashSet(); + for (int i = 0; i < 4; i++) { + processInstanceIds.add(runtimeService.startProcessInstanceByKey("oneTaskProcess", i + "").getId()); + } + processInstanceIds.add(runtimeService.startProcessInstanceByKey("oneTaskProcess2", "1").getId()); + + List deploymentIds = new ArrayList(); + deploymentIds.add(deployment.getId()); + HistoricTaskInstanceQuery taskInstanceQuery = historyService.createHistoricTaskInstanceQuery().deploymentIdIn(deploymentIds); + assertEquals(5, taskInstanceQuery.count()); + + List taskInstances = taskInstanceQuery.list(); + assertNotNull(taskInstances); + assertEquals(5, taskInstances.size()); + + deploymentIds.add("invalid"); + taskInstanceQuery = historyService.createHistoricTaskInstanceQuery().deploymentIdIn(deploymentIds); + assertEquals(5, taskInstanceQuery.count()); + + deploymentIds = new ArrayList(); + deploymentIds.add("invalid"); + taskInstanceQuery = historyService.createHistoricTaskInstanceQuery().deploymentIdIn(deploymentIds); + assertEquals(0, taskInstanceQuery.count()); + } + @Deployment(resources = { "org/activiti/engine/test/api/oneTaskProcess.bpmn20.xml", "org/activiti/engine/test/api/runtime/oneTaskProcess2.bpmn20.xml" }) public void testHistoricTaskInstanceOrQueryByDeploymentId() { org.activiti.engine.repository.Deployment deployment = repositoryService.createDeploymentQuery().singleResult(); @@ -311,6 +364,40 @@ public class HistoryServiceTest extends PluggableActivitiTestCase { taskInstanceQuery = historyService.createHistoricTaskInstanceQuery().taskDefinitionKey("theTask").or().deploymentId("invalid").endOr(); assertEquals(0, taskInstanceQuery.count()); } + + @Deployment(resources = { "org/activiti/engine/test/api/oneTaskProcess.bpmn20.xml", "org/activiti/engine/test/api/runtime/oneTaskProcess2.bpmn20.xml" }) + public void testHistoricTaskInstanceOrQueryByDeploymentIdIn() { + org.activiti.engine.repository.Deployment deployment = repositoryService.createDeploymentQuery().singleResult(); + HashSet processInstanceIds = new HashSet(); + for (int i = 0; i < 4; i++) { + processInstanceIds.add(runtimeService.startProcessInstanceByKey("oneTaskProcess", i + "").getId()); + } + processInstanceIds.add(runtimeService.startProcessInstanceByKey("oneTaskProcess2", "1").getId()); + + List deploymentIds = new ArrayList(); + deploymentIds.add(deployment.getId()); + HistoricTaskInstanceQuery taskInstanceQuery = historyService.createHistoricTaskInstanceQuery().or().deploymentIdIn(deploymentIds).processDefinitionId("invalid").endOr(); + assertEquals(5, taskInstanceQuery.count()); + + List taskInstances = taskInstanceQuery.list(); + assertNotNull(taskInstances); + assertEquals(5, taskInstances.size()); + + deploymentIds.add("invalid"); + taskInstanceQuery = historyService.createHistoricTaskInstanceQuery().or().deploymentIdIn(deploymentIds).processDefinitionId("invalid").endOr(); + assertEquals(5, taskInstanceQuery.count()); + + deploymentIds = new ArrayList(); + deploymentIds.add("invalid"); + taskInstanceQuery = historyService.createHistoricTaskInstanceQuery().or().deploymentIdIn(deploymentIds).processDefinitionId("invalid").endOr(); + assertEquals(0, taskInstanceQuery.count()); + + taskInstanceQuery = historyService.createHistoricTaskInstanceQuery().or().taskDefinitionKey("theTask").deploymentIdIn(deploymentIds).endOr(); + assertEquals(5, taskInstanceQuery.count()); + + taskInstanceQuery = historyService.createHistoricTaskInstanceQuery().taskDefinitionKey("theTask").or().deploymentIdIn(deploymentIds).endOr(); + assertEquals(0, taskInstanceQuery.count()); + } @Deployment(resources = { "org/activiti/engine/test/api/runtime/concurrentExecution.bpmn20.xml" }) public void testHistoricVariableInstancesOnParallelExecution() { diff --git a/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/runtime/ProcessInstanceQueryTest.java b/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/runtime/ProcessInstanceQueryTest.java index 3b7aa1a757..cf7f0e5439 100644 --- a/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/runtime/ProcessInstanceQueryTest.java +++ b/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/runtime/ProcessInstanceQueryTest.java @@ -227,6 +227,21 @@ public class ProcessInstanceQueryTest extends PluggableActivitiTestCase { assertEquals(5, runtimeService.createProcessInstanceQuery().deploymentId(deployment.getId()).count()); } + public void testQueryByDeploymentIdIn() { + List deploymentIds = new ArrayList(); + deploymentIds.add(deployment.getId()); + List instances = runtimeService.createProcessInstanceQuery().deploymentIdIn(deploymentIds).list(); + assertEquals(5, instances.size()); + + ProcessInstance processInstance = instances.get(0); + assertEquals(deployment.getId(), processInstance.getDeploymentId()); + assertEquals(new Integer(1), processInstance.getProcessDefinitionVersion()); + assertEquals(PROCESS_DEFINITION_KEY, processInstance.getProcessDefinitionKey()); + assertEquals("oneTaskProcessName", processInstance.getProcessDefinitionName()); + + assertEquals(5, runtimeService.createProcessInstanceQuery().deploymentIdIn(deploymentIds).count()); + } + public void testOrQueryByDeploymentId() { List instances = runtimeService.createProcessInstanceQuery().or().deploymentId(deployment.getId()).processDefinitionId("undefined").endOr().list(); assertEquals(5, instances.size()); @@ -235,7 +250,22 @@ public class ProcessInstanceQueryTest extends PluggableActivitiTestCase { assertEquals(new Integer(1), processInstance.getProcessDefinitionVersion()); assertEquals(PROCESS_DEFINITION_KEY, processInstance.getProcessDefinitionKey()); assertEquals("oneTaskProcessName", processInstance.getProcessDefinitionName()); - assertEquals(5, runtimeService.createProcessInstanceQuery().deploymentId(deployment.getId()).count()); + assertEquals(5, runtimeService.createProcessInstanceQuery().or().deploymentId(deployment.getId()).processDefinitionId("undefined").endOr().count()); + } + + public void testOrQueryByDeploymentIdIn() { + List deploymentIds = new ArrayList(); + deploymentIds.add(deployment.getId()); + List instances = runtimeService.createProcessInstanceQuery().or().deploymentIdIn(deploymentIds).processDefinitionId("undefined").endOr().list(); + assertEquals(5, instances.size()); + + ProcessInstance processInstance = instances.get(0); + assertEquals(deployment.getId(), processInstance.getDeploymentId()); + assertEquals(new Integer(1), processInstance.getProcessDefinitionVersion()); + assertEquals(PROCESS_DEFINITION_KEY, processInstance.getProcessDefinitionKey()); + assertEquals("oneTaskProcessName", processInstance.getProcessDefinitionName()); + + assertEquals(5, runtimeService.createProcessInstanceQuery().or().deploymentIdIn(deploymentIds).processDefinitionId("undefined").endOr().count()); } public void testQueryByInvalidDeploymentId() { diff --git a/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/task/TaskQueryTest.java b/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/task/TaskQueryTest.java index 8d6dac68d3..8f8282b0f6 100644 --- a/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/task/TaskQueryTest.java +++ b/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/task/TaskQueryTest.java @@ -2251,6 +2251,61 @@ public class TaskQueryTest extends PluggableActivitiTestCase { .deploymentId("invalid").count()); } + @Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"}) + public void testQueryByDeploymentIdIn() throws Exception { + org.activiti.engine.repository.Deployment deployment = repositoryService.createDeploymentQuery().singleResult(); + runtimeService.startProcessInstanceByKey("oneTaskProcess"); + List deploymentIds = new ArrayList(); + deploymentIds.add(deployment.getId()); + assertNotNull(taskService.createTaskQuery().deploymentIdIn(deploymentIds).singleResult()); + assertEquals(1, taskService.createTaskQuery().deploymentIdIn(deploymentIds).count()); + + deploymentIds.add("invalid"); + assertNotNull(taskService.createTaskQuery().deploymentIdIn(deploymentIds).singleResult()); + assertEquals(1, taskService.createTaskQuery().deploymentIdIn(deploymentIds).count()); + + deploymentIds = new ArrayList(); + deploymentIds.add("invalid"); + assertNull(taskService.createTaskQuery().deploymentIdIn(deploymentIds).singleResult()); + assertEquals(0, taskService.createTaskQuery().deploymentIdIn(deploymentIds).count()); + } + + @Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"}) + public void testQueryByDeploymentIdInOr() throws Exception { + org.activiti.engine.repository.Deployment deployment = repositoryService.createDeploymentQuery().singleResult(); + runtimeService.startProcessInstanceByKey("oneTaskProcess"); + List deploymentIds = new ArrayList(); + deploymentIds.add(deployment.getId()); + assertNotNull(taskService.createTaskQuery() + .or() + .taskId("invalid") + .deploymentIdIn(deploymentIds).singleResult()); + + assertEquals(1, taskService.createTaskQuery() + .or() + .taskId("invalid") + .deploymentIdIn(deploymentIds).count()); + + deploymentIds.add("invalid"); + assertNotNull(taskService.createTaskQuery() + .or() + .taskId("invalid") + .deploymentIdIn(deploymentIds).singleResult()); + + assertEquals(1, taskService.createTaskQuery() + .or() + .taskId("invalid") + .deploymentIdIn(deploymentIds).count()); + + deploymentIds = new ArrayList(); + deploymentIds.add("invalid"); + assertNull(taskService.createTaskQuery().deploymentIdIn(deploymentIds).singleResult()); + assertEquals(0, taskService.createTaskQuery() + .or() + .taskId("invalid") + .deploymentIdIn(deploymentIds).count()); + } + public void testQueryByTaskNameLikeIgnoreCase() { // Runtime -- GitLab