Skip to content

Commit

Permalink
Merge pull request Activiti#501 from gokceng/ACT-1662
Browse files Browse the repository at this point in the history
Regarding the issue ACT-1662, org.activiti.engine.runtime.ProcessInstanc...
  • Loading branch information
tijsrademakers committed Feb 2, 2015
2 parents 7bc2be3 + c18f513 commit e6b8161
Show file tree
Hide file tree
Showing 5 changed files with 223 additions and 55 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,17 @@
*/
package org.activiti.engine.impl;

import java.util.ArrayList;
import java.util.List;

import org.activiti.engine.ActivitiIllegalArgumentException;
import org.activiti.engine.impl.interceptor.CommandContext;
import org.activiti.engine.impl.interceptor.CommandExecutor;
import org.activiti.engine.impl.persistence.entity.SuspensionState;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ExecutionQuery;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;


/**
* @author Joram Barrez
Expand Down Expand Up @@ -54,6 +55,8 @@ public class ExecutionQueryImpl extends AbstractVariableQueryImpl<ExecutionQuery
protected boolean includeChildExecutionsWithBusinessKeyQuery;
protected boolean isActive;
protected String involvedUser;
protected Set<String> processDefinitionKeys;
protected Set<String> processDefinitionIds;

// Not exposed in API, but here for the ProcessInstanceQuery support, since the name lives on the
// Execution entity/table
Expand Down Expand Up @@ -330,6 +333,12 @@ public String getInvolvedUser() {
public void setInvolvedUser(String involvedUser) {
this.involvedUser = involvedUser;
}
public Set<String> getProcessDefinitionIds() {
return processDefinitionIds;
}
public Set<String> getProcessDefinitionKeys() {
return processDefinitionKeys;
}
public String getParentId() {
return parentId;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,6 @@

package org.activiti.engine.impl;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

import org.activiti.engine.ActivitiException;
import org.activiti.engine.ActivitiIllegalArgumentException;
import org.activiti.engine.impl.interceptor.CommandContext;
Expand All @@ -25,6 +21,10 @@
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.runtime.ProcessInstanceQuery;

import java.io.Serializable;
import java.util.List;
import java.util.Set;


/**
* @author Tom Baeyens
Expand All @@ -41,9 +41,11 @@ public class ProcessInstanceQueryImpl extends AbstractVariableQueryImpl<ProcessI
protected String businessKey;
protected boolean includeChildExecutionsWithBusinessKeyQuery;
protected String processDefinitionId;
protected Set<String> processDefinitionIds;
protected String processDefinitionName;
protected Set<String> processInstanceIds;
protected String processDefinitionKey;
protected Set<String> processDefinitionKeys;
protected String deploymentId;
protected List<String> deploymentIds;
protected String superProcessInstanceId;
Expand Down Expand Up @@ -191,6 +193,23 @@ public ProcessInstanceQueryImpl processDefinitionId(String processDefinitionId)
return this;
}

@Override
public ProcessInstanceQuery processDefinitionIds(Set<String> processDefinitionIds) {
if (processDefinitionIds == null) {
throw new ActivitiIllegalArgumentException("Set of process definition ids is null");
}
if (processDefinitionIds.isEmpty()) {
throw new ActivitiIllegalArgumentException("Set of process definition ids is empty");
}

if (inOrStatement) {
this.orQueryObject.processDefinitionIds = processDefinitionIds;
} else {
this.processDefinitionIds = processDefinitionIds;
}
return this;
}

public ProcessInstanceQueryImpl processDefinitionKey(String processDefinitionKey) {
if (processDefinitionKey == null) {
throw new ActivitiIllegalArgumentException("Process definition key is null");
Expand All @@ -203,7 +222,24 @@ public ProcessInstanceQueryImpl processDefinitionKey(String processDefinitionKey
}
return this;
}


@Override
public ProcessInstanceQuery processDefinitionKeys(Set<String> processDefinitionKeys) {
if (processDefinitionKeys == null) {
throw new ActivitiIllegalArgumentException("Set of process definition keys is null");
}
if (processDefinitionKeys.isEmpty()) {
throw new ActivitiIllegalArgumentException("Set of process definition keys is empty");
}

if (inOrStatement) {
this.orQueryObject.processDefinitionKeys = processDefinitionKeys;
} else {
this.processDefinitionKeys = processDefinitionKeys;
}
return this;
}

public ProcessInstanceQueryImpl deploymentId(String deploymentId) {
if (inOrStatement) {
this.orQueryObject.deploymentId = deploymentId;
Expand Down Expand Up @@ -517,12 +553,18 @@ public boolean isIncludeChildExecutionsWithBusinessKeyQuery() {
public String getProcessDefinitionId() {
return processDefinitionId;
}
public Set<String> getProcessDefinitionIds() {
return processDefinitionIds;
}
public String getProcessDefinitionName() {
return processDefinitionName;
}
public String getProcessDefinitionKey() {
return processDefinitionKey;
}
public Set<String> getProcessDefinitionKeys() {
return processDefinitionKeys;
}
public String getActivityId() {
return null; // Unused, see dynamic query
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@
*/
package org.activiti.engine.runtime;

import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.query.Query;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.query.Query;

/**
* Allows programmatic querying of {@link ProcessInstance}s.
*
Expand Down Expand Up @@ -65,11 +65,23 @@ public interface ProcessInstanceQuery extends Query<ProcessInstanceQuery, Proces
*/
ProcessInstanceQuery processDefinitionKey(String processDefinitionKey);

/**
* Select the process instances which are defined by process definitions with
* the given keys.
*/
ProcessInstanceQuery processDefinitionKeys(Set<String> processDefinitionKeys);

/**
* Select the process instances which are defined by a process definition
* with the given id.
*/
ProcessInstanceQuery processDefinitionId(String processDefinitionId);

/**
* Select the process instances which are defined by process definitions
* with the given ids.
*/
ProcessInstanceQuery processDefinitionIds(Set<String> processDefinitionIds);

/**
* Select the process instances which are defined by a deployment
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -366,9 +366,21 @@
<if test="processDefinitionId != null">
and P.ID_ = #{processDefinitionId}
</if>
<if test="processDefinitionIds != null and !processDefinitionIds.isEmpty()">
and P.ID_ in
<foreach item="item" index="index" collection="processDefinitionIds" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="processDefinitionKey != null">
and P.KEY_ = #{processDefinitionKey}
</if>
<if test="processDefinitionKeys != null and !processDefinitionKeys.isEmpty()">
and P.KEY_ in
<foreach item="item" index="index" collection="processDefinitionKeys" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="processDefinitionName != null">
and P.NAME_ = #{processDefinitionName}
</if>
Expand Down Expand Up @@ -517,9 +529,21 @@
<if test="orQueryObject.processDefinitionId != null">
P.ID_ = #{orQueryObject.processDefinitionId}
</if>
<if test="orQueryObject.processDefinitionIds != null and !orQueryObject.processDefinitionIds.isEmpty()">
or P.ID_ in
<foreach item="item" index="index" collection="orQueryObject.processDefinitionIds" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="orQueryObject.processDefinitionKey != null">
or P.KEY_ = #{orQueryObject.processDefinitionKey}
</if>
<if test="orQueryObject.processDefinitionKeys != null and !orQueryObject.processDefinitionKeys.isEmpty()">
or P.KEY_ in
<foreach item="item" index="index" collection="orQueryObject.processDefinitionKeys" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="orQueryObject.processDefinitionName != null">
or P.NAME_ = #{orQueryObject.processDefinitionName}
</if>
Expand Down
Loading

0 comments on commit e6b8161

Please sign in to comment.