提交 c8ebab58 编写于 作者: J Joram Barrez

Merge pull request #518 from m4ng0/query-multiple-pids

Added a method (processInstanceIdIn) in TaskInfoQuery
...@@ -45,6 +45,7 @@ public class HistoricTaskInstanceQueryImpl extends AbstractVariableQueryImpl<His ...@@ -45,6 +45,7 @@ public class HistoricTaskInstanceQueryImpl extends AbstractVariableQueryImpl<His
protected String deploymentId; protected String deploymentId;
protected List<String> deploymentIds; protected List<String> deploymentIds;
protected String processInstanceId; protected String processInstanceId;
protected List<String> processInstanceIds;
protected String processInstanceBusinessKey; protected String processInstanceBusinessKey;
protected String processInstanceBusinessKeyLike; protected String processInstanceBusinessKeyLike;
protected String processInstanceBusinessKeyLikeIgnoreCase; protected String processInstanceBusinessKeyLikeIgnoreCase;
...@@ -145,6 +146,28 @@ public class HistoricTaskInstanceQueryImpl extends AbstractVariableQueryImpl<His ...@@ -145,6 +146,28 @@ public class HistoricTaskInstanceQueryImpl extends AbstractVariableQueryImpl<His
return this; return this;
} }
@Override
public HistoricTaskInstanceQueryImpl processInstanceIdIn(List<String> processInstanceIds) {
if(processInstanceIds == null) {
throw new ActivitiIllegalArgumentException("Process instance id list is null");
}
if(processInstanceIds.isEmpty()) {
throw new ActivitiIllegalArgumentException("Process instance id list is empty");
}
for (String processInstanceId : processInstanceIds) {
if (processInstanceId== null) {
throw new ActivitiIllegalArgumentException("None of the given process instance ids can be null");
}
}
if (inOrStatement) {
this.orQueryObject.processInstanceIds = processInstanceIds;
} else {
this.processInstanceIds = processInstanceIds;
}
return this;
}
public HistoricTaskInstanceQueryImpl processInstanceBusinessKey(String processInstanceBusinessKey) { public HistoricTaskInstanceQueryImpl processInstanceBusinessKey(String processInstanceBusinessKey) {
if (inOrStatement) { if (inOrStatement) {
this.orQueryObject.processInstanceBusinessKey = processInstanceBusinessKey; this.orQueryObject.processInstanceBusinessKey = processInstanceBusinessKey;
...@@ -1189,6 +1212,9 @@ public class HistoricTaskInstanceQueryImpl extends AbstractVariableQueryImpl<His ...@@ -1189,6 +1212,9 @@ public class HistoricTaskInstanceQueryImpl extends AbstractVariableQueryImpl<His
public String getProcessInstanceId() { public String getProcessInstanceId() {
return processInstanceId; return processInstanceId;
} }
public List<String> getProcessInstanceIds() {
return processInstanceIds;
}
public String getProcessInstanceBusinessKey() { public String getProcessInstanceBusinessKey() {
return processInstanceBusinessKey; return processInstanceBusinessKey;
} }
......
...@@ -67,6 +67,7 @@ public class TaskQueryImpl extends AbstractVariableQueryImpl<TaskQuery, Task> im ...@@ -67,6 +67,7 @@ public class TaskQueryImpl extends AbstractVariableQueryImpl<TaskQuery, Task> im
protected String tenantIdLike; protected String tenantIdLike;
protected boolean withoutTenantId; protected boolean withoutTenantId;
protected String processInstanceId; protected String processInstanceId;
protected List<String> processInstanceIds;
protected String executionId; protected String executionId;
protected Date createTime; protected Date createTime;
protected Date createTimeBefore; protected Date createTimeBefore;
...@@ -550,6 +551,28 @@ public class TaskQueryImpl extends AbstractVariableQueryImpl<TaskQuery, Task> im ...@@ -550,6 +551,28 @@ public class TaskQueryImpl extends AbstractVariableQueryImpl<TaskQuery, Task> im
return this; return this;
} }
@Override
public TaskQuery processInstanceIdIn(List<String> processInstanceIds) {
if(processInstanceIds == null) {
throw new ActivitiIllegalArgumentException("Process instance id list is null");
}
if(processInstanceIds.isEmpty()) {
throw new ActivitiIllegalArgumentException("Process instance id list is empty");
}
for (String processInstanceId : processInstanceIds) {
if (processInstanceId == null) {
throw new ActivitiIllegalArgumentException("None of the given process instance ids can be null");
}
}
if (orActive) {
orQueryObject.processInstanceIds = processInstanceIds;
} else {
this.processInstanceIds = processInstanceIds;
}
return this;
}
public TaskQueryImpl processInstanceBusinessKey(String processInstanceBusinessKey) { public TaskQueryImpl processInstanceBusinessKey(String processInstanceBusinessKey) {
if(orActive) { if(orActive) {
orQueryObject.processInstanceBusinessKey = processInstanceBusinessKey; orQueryObject.processInstanceBusinessKey = processInstanceBusinessKey;
...@@ -1238,6 +1261,9 @@ public class TaskQueryImpl extends AbstractVariableQueryImpl<TaskQuery, Task> im ...@@ -1238,6 +1261,9 @@ public class TaskQueryImpl extends AbstractVariableQueryImpl<TaskQuery, Task> im
public String getProcessInstanceId() { public String getProcessInstanceId() {
return processInstanceId; return processInstanceId;
} }
public List<String> getProcessInstanceIds() {
return processInstanceIds;
}
public String getExecutionId() { public String getExecutionId() {
return executionId; return executionId;
} }
......
...@@ -175,6 +175,11 @@ public interface TaskInfoQuery<T extends TaskInfoQuery<?, ?>, V extends TaskInfo ...@@ -175,6 +175,11 @@ public interface TaskInfoQuery<T extends TaskInfoQuery<?, ?>, V extends TaskInfo
*/ */
T processInstanceId(String processInstanceId); T processInstanceId(String processInstanceId);
/**
* Only select tasks for the given process ids.
*/
T processInstanceIdIn(List<String> processInstanceIds);
/** Only select tasks foe the given business key */ /** Only select tasks foe the given business key */
T processInstanceBusinessKey(String processInstanceBusinessKey); T processInstanceBusinessKey(String processInstanceBusinessKey);
......
...@@ -339,6 +339,13 @@ ...@@ -339,6 +339,13 @@
<if test="processInstanceId != null"> <if test="processInstanceId != null">
and RES.PROC_INST_ID_ = #{processInstanceId} and RES.PROC_INST_ID_ = #{processInstanceId}
</if> </if>
<if test="processInstanceIds != null &amp;&amp; processInstanceIds.size() &gt; 0">
and RES.PROC_INST_ID_ IN
<foreach item="processInstance" index="index" collection="processInstanceIds"
open="(" separator="," close=")">
#{processInstance}
</foreach>
</if>
<if test="processInstanceBusinessKey != null"> <if test="processInstanceBusinessKey != null">
and HPI.BUSINESS_KEY_ = #{processInstanceBusinessKey} and HPI.BUSINESS_KEY_ = #{processInstanceBusinessKey}
</if> </if>
...@@ -615,6 +622,13 @@ ...@@ -615,6 +622,13 @@
<if test="orQueryObject.processInstanceId != null"> <if test="orQueryObject.processInstanceId != null">
or RES.PROC_INST_ID_ = #{orQueryObject.processInstanceId} or RES.PROC_INST_ID_ = #{orQueryObject.processInstanceId}
</if> </if>
<if test="orQueryObject.processInstanceIds != null &amp;&amp; orQueryObject.processInstanceIds.size() &gt; 0">
or RES.PROC_INST_ID_ IN
<foreach item="processInstance" index="index" collection="orQueryObject.processInstanceIds"
open="(" separator="," close=")">
#{processInstance}
</foreach>
</if>
<if test="orQueryObject.processInstanceBusinessKey != null"> <if test="orQueryObject.processInstanceBusinessKey != null">
or HPI.BUSINESS_KEY_ = #{orQueryObject.processInstanceBusinessKey} or HPI.BUSINESS_KEY_ = #{orQueryObject.processInstanceBusinessKey}
</if> </if>
......
...@@ -393,6 +393,13 @@ ...@@ -393,6 +393,13 @@
<if test="processInstanceId != null"> <if test="processInstanceId != null">
and RES.PROC_INST_ID_ = #{processInstanceId} and RES.PROC_INST_ID_ = #{processInstanceId}
</if> </if>
<if test="processInstanceIds != null &amp;&amp; processInstanceIds.size() &gt; 0">
and RES.PROC_INST_ID_ IN
<foreach item="processInstance" index="index" collection="processInstanceIds"
open="(" separator="," close=")">
#{processInstance}
</foreach>
</if>
<if test="processInstanceBusinessKey != null"> <if test="processInstanceBusinessKey != null">
and E.BUSINESS_KEY_ = #{processInstanceBusinessKey} and E.BUSINESS_KEY_ = #{processInstanceBusinessKey}
</if> </if>
...@@ -691,6 +698,13 @@ ...@@ -691,6 +698,13 @@
<if test="orQueryObject.processInstanceId != null"> <if test="orQueryObject.processInstanceId != null">
or RES.PROC_INST_ID_ = #{orQueryObject.processInstanceId} or RES.PROC_INST_ID_ = #{orQueryObject.processInstanceId}
</if> </if>
<if test="orQueryObject.processInstanceIds != null &amp;&amp; orQueryObject.processInstanceIds.size() &gt; 0">
or RES.PROC_INST_ID_ IN
<foreach item="processInstance" index="index" collection="orQueryObject.processInstanceIds"
open="(" separator="," close=")">
#{processInstance}
</foreach>
</if>
<if test="orQueryObject.processInstanceBusinessKey != null"> <if test="orQueryObject.processInstanceBusinessKey != null">
or E.BUSINESS_KEY_ = #{orQueryObject.processInstanceBusinessKey} or E.BUSINESS_KEY_ = #{orQueryObject.processInstanceBusinessKey}
</if> </if>
......
...@@ -1986,6 +1986,59 @@ public class TaskQueryTest extends PluggableActivitiTestCase { ...@@ -1986,6 +1986,59 @@ public class TaskQueryTest extends PluggableActivitiTestCase {
.taskId("invalid") .taskId("invalid")
.processCategoryNotIn(Collections.singletonList("Examples")).count()); .processCategoryNotIn(Collections.singletonList("Examples")).count());
} }
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessInstanceIdIn() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
final Task task = taskService.createTaskQuery().processInstanceIdIn(Arrays.asList(processInstance.getId())).singleResult();
assertNotNull(task);
assertEquals("theTask", task.getTaskDefinitionKey());
assertEquals(processInstance.getId(), task.getProcessInstanceId());
assertEquals(0, taskService.createTaskQuery().processInstanceIdIn(Arrays.asList("unexisting")).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessInstanceIdInOr() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
final Task task = taskService.createTaskQuery()
.or()
.taskId("invalid")
.processInstanceIdIn(Arrays.asList(processInstance.getId())).singleResult();
assertNotNull(task);
assertEquals("theTask", task.getTaskDefinitionKey());
assertEquals(processInstance.getId(), task.getProcessInstanceId());
assertEquals(0, taskService.createTaskQuery()
.or()
.taskId("invalid")
.processInstanceIdIn(Arrays.asList("unexisting")).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessInstanceIdInMultiple() throws Exception {
ProcessInstance processInstance1 = runtimeService.startProcessInstanceByKey("oneTaskProcess");
ProcessInstance processInstance2 = runtimeService.startProcessInstanceByKey("oneTaskProcess");
assertEquals(2, taskService.createTaskQuery().processInstanceIdIn(Arrays.asList(processInstance1.getId(), processInstance2.getId())).count());
assertEquals(2, taskService.createTaskQuery().processInstanceIdIn(Arrays.asList(processInstance1.getId(), processInstance2.getId(), "unexisting")).count());
assertEquals(0, taskService.createTaskQuery().processInstanceIdIn(Arrays.asList("unexisting1", "unexisting2")).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessInstanceIdInOrMultiple() throws Exception {
ProcessInstance processInstance1 = runtimeService.startProcessInstanceByKey("oneTaskProcess");
ProcessInstance processInstance2 = runtimeService.startProcessInstanceByKey("oneTaskProcess");
assertEquals(2, taskService.createTaskQuery().or().taskId("invalid").processInstanceIdIn(Arrays.asList(processInstance1.getId(), processInstance2.getId())).count());
assertEquals(2, taskService.createTaskQuery().or().taskId("invalid").processInstanceIdIn(Arrays.asList(processInstance1.getId(), processInstance2.getId(), "unexisting")).count());
assertEquals(0, taskService.createTaskQuery().or().taskId("invalid").processInstanceIdIn(Arrays.asList("unexisting1", "unexisting2")).count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"}) @Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessInstanceBusinessKey() throws Exception { public void testProcessInstanceBusinessKey() throws Exception {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册