提交 ad20ce3a 编写于 作者: B bernd.ruecker

ACT-1086: Add "businessKey" query capabilities to TaskQuery and ExecutionQuery

上级 dc74ff4d
......@@ -41,6 +41,7 @@ public class ExecutionQueryImpl extends ExecutionVariableQueryImpl<ExecutionQuer
protected String superProcessInstanceId;
protected String subProcessInstanceId;
protected SuspensionState suspensionState;
private String businessKey;
public ExecutionQueryImpl() {
}
......@@ -81,6 +82,14 @@ public class ExecutionQueryImpl extends ExecutionVariableQueryImpl<ExecutionQuer
return this;
}
public ExecutionQuery processInstanceBusinessKey(String businessKey) {
if (businessKey == null) {
throw new ActivitiException("Business key is null");
}
this.businessKey = businessKey;
return this;
}
public ExecutionQueryImpl executionId(String executionId) {
if (executionId == null) {
throw new ActivitiException("Execution id is null");
......@@ -152,7 +161,7 @@ public class ExecutionQueryImpl extends ExecutionVariableQueryImpl<ExecutionQuer
return null;
}
public String getBusinessKey() {
return null;
return businessKey;
}
public String getExecutionId() {
return executionId;
......
......@@ -58,6 +58,7 @@ public class TaskQueryImpl extends AbstractQuery<TaskQuery, Task> implements Tas
protected String processDefinitionKey;
protected String processDefinitionId;
protected String processDefinitionName;
protected String processInstanceBusinessKey;
protected List<TaskQueryVariableValue> variables = new ArrayList<TaskQueryVariableValue>();
protected Date dueDate;
protected Date dueBefore;
......@@ -216,6 +217,11 @@ public class TaskQueryImpl extends AbstractQuery<TaskQuery, Task> implements Tas
return this;
}
public TaskQueryImpl processInstanceBusinessKey(String processInstanceBusinessKey) {
this.processInstanceBusinessKey = processInstanceBusinessKey;
return this;
}
public TaskQueryImpl executionId(String executionId) {
this.executionId = executionId;
return this;
......@@ -437,4 +443,9 @@ public class TaskQueryImpl extends AbstractQuery<TaskQuery, Task> implements Tas
public String getProcessDefinitionName() {
return processDefinitionName;
}
public String getProcessInstanceBusinessKey() {
return processInstanceBusinessKey;
}
}
......@@ -35,6 +35,9 @@ public interface ExecutionQuery extends Query<ExecutionQuery, Execution>{
/** Only select executions which have the given process instance id. **/
ExecutionQuery processInstanceId(String processInstanceId);
/** Only executions with the given business key */
ExecutionQuery processInstanceBusinessKey(String processInstanceBusinessKey);
/** Only select executions with the given id. **/
ExecutionQuery executionId(String executionId);
......
......@@ -84,6 +84,9 @@ public interface TaskQuery extends Query<TaskQuery, Task>{
/** Only select tasks for the given process instance id. */
TaskQuery processInstanceId(String processInstanceId);
/** Only select tasks foe the given business key */
TaskQuery processInstanceBusinessKey(String processInstanceBusinessKey);
/** Only select tasks for the given execution. */
TaskQuery executionId(String executionId);
......
......@@ -138,7 +138,10 @@
<if test="processDefinitionKey != null || processDefinitionName != null">
inner join ACT_RE_PROCDEF D on T.PROC_DEF_ID_ = D.ID_
</if>
<where>
<if test="processInstanceBusinessKey != null">
inner join ACT_RU_EXECUTION E on T.PROC_INST_ID_ = E.ID_
</if>
<where>
<if test="taskId != null">
T.ID_ = #{taskId}
</if>
......@@ -175,6 +178,9 @@
<if test="processInstanceId != null">
and T.PROC_INST_ID_ = #{processInstanceId}
</if>
<if test="processInstanceBusinessKey != null">
and E.BUSINESS_KEY_ = #{processInstanceBusinessKey}
</if>
<if test="executionId != null">
and T.EXECUTION_ID_ = #{executionId}
</if>
......
......@@ -68,7 +68,7 @@ public class ExecutionQueryTest extends PluggableActivitiTestCase {
sequentialProcessInstanceIds = new ArrayList<String>();
for (int i = 0; i < 4; i++) {
concurrentProcessInstanceIds.add(runtimeService.startProcessInstanceByKey(CONCURRENT_PROCESS_KEY).getId());
concurrentProcessInstanceIds.add(runtimeService.startProcessInstanceByKey(CONCURRENT_PROCESS_KEY, "BUSINESS-KEY-" + i).getId());
}
sequentialProcessInstanceIds.add(runtimeService.startProcessInstanceByKey(SEQUENTIAL_PROCESS_KEY).getId());
}
......@@ -172,6 +172,12 @@ public class ExecutionQueryTest extends PluggableActivitiTestCase {
}
}
public void testQueryByBusinessKey() {
assertEquals(1, runtimeService.createExecutionQuery().processDefinitionKey(CONCURRENT_PROCESS_KEY).processInstanceBusinessKey("BUSINESS-KEY-1").list().size());
assertEquals(1, runtimeService.createExecutionQuery().processDefinitionKey(CONCURRENT_PROCESS_KEY).processInstanceBusinessKey("BUSINESS-KEY-2").list().size());
assertEquals(0, runtimeService.createExecutionQuery().processDefinitionKey(CONCURRENT_PROCESS_KEY).processInstanceBusinessKey("NON-EXISTING").list().size());
}
@Deployment(resources={
"org/activiti/engine/test/api/oneTaskProcess.bpmn20.xml"})
public void testQueryStringVariable() {
......
......@@ -577,7 +577,16 @@ public class TaskQueryTest extends PluggableActivitiTestCase {
assertEquals(0, taskService.createTaskQuery().processDefinitionName("unexisting").count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testProcessInstanceBusinessKey() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess", "BUSINESS-KEY-1");
assertEquals(1, taskService.createTaskQuery().processDefinitionName("The One Task Process").processInstanceBusinessKey("BUSINESS-KEY-1").list().size());
assertEquals(1, taskService.createTaskQuery().processInstanceBusinessKey("BUSINESS-KEY-1").list().size());
assertEquals(0, taskService.createTaskQuery().processInstanceBusinessKey("NON-EXISTING").count());
}
@Deployment(resources={"org/activiti/engine/test/api/task/TaskQueryTest.testProcessDefinition.bpmn20.xml"})
public void testTaskDueDate() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册