提交 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
protected String deploymentId;
protected List<String> deploymentIds;
protected String processInstanceId;
protected List<String> processInstanceIds;
protected String processInstanceBusinessKey;
protected String processInstanceBusinessKeyLike;
protected String processInstanceBusinessKeyLikeIgnoreCase;
......@@ -145,6 +146,28 @@ public class HistoricTaskInstanceQueryImpl extends AbstractVariableQueryImpl<His
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) {
if (inOrStatement) {
this.orQueryObject.processInstanceBusinessKey = processInstanceBusinessKey;
......@@ -1189,6 +1212,9 @@ public class HistoricTaskInstanceQueryImpl extends AbstractVariableQueryImpl<His
public String getProcessInstanceId() {
return processInstanceId;
}
public List<String> getProcessInstanceIds() {
return processInstanceIds;
}
public String getProcessInstanceBusinessKey() {
return processInstanceBusinessKey;
}
......
......@@ -67,6 +67,7 @@ public class TaskQueryImpl extends AbstractVariableQueryImpl<TaskQuery, Task> im
protected String tenantIdLike;
protected boolean withoutTenantId;
protected String processInstanceId;
protected List<String> processInstanceIds;
protected String executionId;
protected Date createTime;
protected Date createTimeBefore;
......@@ -550,6 +551,28 @@ public class TaskQueryImpl extends AbstractVariableQueryImpl<TaskQuery, Task> im
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) {
if(orActive) {
orQueryObject.processInstanceBusinessKey = processInstanceBusinessKey;
......@@ -1238,6 +1261,9 @@ public class TaskQueryImpl extends AbstractVariableQueryImpl<TaskQuery, Task> im
public String getProcessInstanceId() {
return processInstanceId;
}
public List<String> getProcessInstanceIds() {
return processInstanceIds;
}
public String getExecutionId() {
return executionId;
}
......
......@@ -175,6 +175,11 @@ public interface TaskInfoQuery<T extends TaskInfoQuery<?, ?>, V extends TaskInfo
*/
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 */
T processInstanceBusinessKey(String processInstanceBusinessKey);
......
......@@ -339,6 +339,13 @@
<if test="processInstanceId != null">
and RES.PROC_INST_ID_ = #{processInstanceId}
</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">
and HPI.BUSINESS_KEY_ = #{processInstanceBusinessKey}
</if>
......@@ -615,6 +622,13 @@
<if test="orQueryObject.processInstanceId != null">
or RES.PROC_INST_ID_ = #{orQueryObject.processInstanceId}
</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">
or HPI.BUSINESS_KEY_ = #{orQueryObject.processInstanceBusinessKey}
</if>
......
......@@ -393,6 +393,13 @@
<if test="processInstanceId != null">
and RES.PROC_INST_ID_ = #{processInstanceId}
</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">
and E.BUSINESS_KEY_ = #{processInstanceBusinessKey}
</if>
......@@ -691,6 +698,13 @@
<if test="orQueryObject.processInstanceId != null">
or RES.PROC_INST_ID_ = #{orQueryObject.processInstanceId}
</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">
or E.BUSINESS_KEY_ = #{orQueryObject.processInstanceBusinessKey}
</if>
......
......@@ -1986,6 +1986,59 @@ public class TaskQueryTest extends PluggableActivitiTestCase {
.taskId("invalid")
.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"})
public void testProcessInstanceBusinessKey() throws Exception {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册