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

ACT-1293: SQL query extensions for HistoricProcessInstance,...

ACT-1293: SQL query extensions for HistoricProcessInstance, HistoricActivityInstance, HistoricTaskInstance
上级 4ecc7435
......@@ -20,9 +20,13 @@ import org.activiti.engine.history.HistoricDetail;
import org.activiti.engine.history.HistoricDetailQuery;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.history.HistoricProcessInstanceQuery;
import org.activiti.engine.history.HistoricProcessVariable;
import org.activiti.engine.history.HistoricProcessVariableQuery;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.history.HistoricTaskInstanceQuery;
import org.activiti.engine.history.NativeHistoricActivityInstanceQuery;
import org.activiti.engine.history.NativeHistoricProcessInstanceQuery;
import org.activiti.engine.history.NativeHistoricTaskInstanceQuery;
/**
* Service exposing information about ongoing and past process instances. This is different
......@@ -64,4 +68,19 @@ public interface HistoryService {
*/
void deleteHistoricProcessInstance(String processInstanceId);
/**
* creates a native query to search for {@link HistoricProcessInstance}s via SQL
*/
NativeHistoricProcessInstanceQuery createNativeHistoricProcessInstanceQuery();
/**
* creates a native query to search for {@link HistoricTaskInstance}s via SQL
*/
NativeHistoricTaskInstanceQuery createNativeHistoricTaskInstanceQuery();
/**
* creates a native query to search for {@link HistoricActivityInstance}s via SQL
*/
NativeHistoricActivityInstanceQuery createNativeHistoricActivityInstanceQuery();
}
package org.activiti.engine.history;
import org.activiti.engine.query.NativeQuery;
/**
* Allows querying of {@link HistoricActivityInstanceQuery}s via native (SQL) queries
* @author Bernd Ruecker (camunda)
*/
public interface NativeHistoricActivityInstanceQuery extends NativeQuery<NativeHistoricActivityInstanceQuery, HistoricActivityInstance> {
}
package org.activiti.engine.history;
import org.activiti.engine.query.NativeQuery;
/**
* Allows querying of {@link HistoricTaskInstanceQuery}s via native (SQL) queries
* @author Bernd Ruecker (camunda)
*/
public interface NativeHistoricProcessInstanceQuery extends NativeQuery<NativeHistoricProcessInstanceQuery, HistoricProcessInstance> {
}
package org.activiti.engine.history;
import org.activiti.engine.query.NativeQuery;
/**
* Allows querying of {@link HistoricTaskInstanceQuery}s via native (SQL) queries
* @author Bernd Ruecker (camunda)
*/
public interface NativeHistoricTaskInstanceQuery extends NativeQuery<NativeHistoricTaskInstanceQuery, HistoricTaskInstance> {
}
......@@ -20,11 +20,15 @@ import org.activiti.engine.history.HistoricDetailQuery;
import org.activiti.engine.history.HistoricProcessInstanceQuery;
import org.activiti.engine.history.HistoricProcessVariableQuery;
import org.activiti.engine.history.HistoricTaskInstanceQuery;
import org.activiti.engine.history.NativeHistoricActivityInstanceQuery;
import org.activiti.engine.history.NativeHistoricProcessInstanceQuery;
import org.activiti.engine.history.NativeHistoricTaskInstanceQuery;
import org.activiti.engine.impl.cmd.DeleteHistoricProcessInstanceCmd;
import org.activiti.engine.impl.cmd.DeleteHistoricTaskInstanceCmd;
/**
* @author Tom Baeyens
* @author Bernd Ruecker (camunda)
* @author Christian Stettler
*/
public class HistoryServiceImpl extends ServiceImpl implements HistoryService {
......@@ -57,4 +61,17 @@ public class HistoryServiceImpl extends ServiceImpl implements HistoryService {
commandExecutor.execute(new DeleteHistoricProcessInstanceCmd(processInstanceId));
}
public NativeHistoricProcessInstanceQuery createNativeHistoricProcessInstanceQuery() {
return new NativeHistoricProcessInstanceQueryImpl(commandExecutor);
}
public NativeHistoricTaskInstanceQuery createNativeHistoricTaskInstanceQuery() {
return new NativeHistoricTaskInstanceQueryImpl(commandExecutor);
}
public NativeHistoricActivityInstanceQuery createNativeHistoricActivityInstanceQuery() {
return new NativeHistoricActivityInstanceQueryImpl(commandExecutor);
}
}
package org.activiti.engine.impl;
import java.util.List;
import java.util.Map;
import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.history.NativeHistoricActivityInstanceQuery;
import org.activiti.engine.impl.interceptor.CommandContext;
import org.activiti.engine.impl.interceptor.CommandExecutor;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.NativeExecutionQuery;
import org.activiti.engine.task.NativeTaskQuery;
import org.activiti.engine.task.Task;
public class NativeHistoricActivityInstanceQueryImpl extends AbstractNativeQuery<NativeHistoricActivityInstanceQuery, HistoricActivityInstance> implements NativeHistoricActivityInstanceQuery {
private static final long serialVersionUID = 1L;
public NativeHistoricActivityInstanceQueryImpl() {
super();
}
public NativeHistoricActivityInstanceQueryImpl(CommandContext commandContext) {
super(commandContext);
}
public NativeHistoricActivityInstanceQueryImpl(CommandExecutor commandExecutor) {
super(commandExecutor);
}
//results ////////////////////////////////////////////////////////////////
public List<HistoricActivityInstance> executeList(CommandContext commandContext, Map<String, Object> parameterMap, int firstResult, int maxResults) {
return commandContext
.getHistoricActivityInstanceManager()
.findHistoricActivityInstancesByNativeQuery(parameterMap, firstResult, maxResults);
}
public long executeCount(CommandContext commandContext, Map<String, Object> parameterMap) {
return commandContext
.getHistoricActivityInstanceManager()
.findHistoricActivityInstanceCountByNativeQuery(parameterMap);
}
}
package org.activiti.engine.impl;
import java.util.List;
import java.util.Map;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.history.NativeHistoricProcessInstanceQuery;
import org.activiti.engine.impl.interceptor.CommandContext;
import org.activiti.engine.impl.interceptor.CommandExecutor;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.NativeExecutionQuery;
import org.activiti.engine.task.NativeTaskQuery;
import org.activiti.engine.task.Task;
public class NativeHistoricProcessInstanceQueryImpl extends AbstractNativeQuery<NativeHistoricProcessInstanceQuery, HistoricProcessInstance> implements NativeHistoricProcessInstanceQuery {
private static final long serialVersionUID = 1L;
public NativeHistoricProcessInstanceQueryImpl() {
super();
}
public NativeHistoricProcessInstanceQueryImpl(CommandContext commandContext) {
super(commandContext);
}
public NativeHistoricProcessInstanceQueryImpl(CommandExecutor commandExecutor) {
super(commandExecutor);
}
//results ////////////////////////////////////////////////////////////////
public List<HistoricProcessInstance> executeList(CommandContext commandContext, Map<String, Object> parameterMap, int firstResult, int maxResults) {
return commandContext
.getHistoricProcessInstanceManager()
.findHistoricProcessInstancesByNativeQuery(parameterMap, firstResult, maxResults);
}
public long executeCount(CommandContext commandContext, Map<String, Object> parameterMap) {
return commandContext
.getHistoricProcessInstanceManager()
.findHistoricProcessInstanceCountByNativeQuery(parameterMap);
}
}
package org.activiti.engine.impl;
import java.util.List;
import java.util.Map;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.history.NativeHistoricTaskInstanceQuery;
import org.activiti.engine.impl.interceptor.CommandContext;
import org.activiti.engine.impl.interceptor.CommandExecutor;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.NativeExecutionQuery;
import org.activiti.engine.task.NativeTaskQuery;
import org.activiti.engine.task.Task;
public class NativeHistoricTaskInstanceQueryImpl extends AbstractNativeQuery<NativeHistoricTaskInstanceQuery, HistoricTaskInstance> implements NativeHistoricTaskInstanceQuery {
private static final long serialVersionUID = 1L;
public NativeHistoricTaskInstanceQueryImpl() {
super();
}
public NativeHistoricTaskInstanceQueryImpl(CommandContext commandContext) {
super(commandContext);
}
public NativeHistoricTaskInstanceQueryImpl(CommandExecutor commandExecutor) {
super(commandExecutor);
}
//results ////////////////////////////////////////////////////////////////
public List<HistoricTaskInstance> executeList(CommandContext commandContext, Map<String, Object> parameterMap, int firstResult, int maxResults) {
return commandContext
.getHistoricTaskInstanceManager()
.findHistoricTaskInstancesByNativeQuery(parameterMap, firstResult, maxResults);
}
public long executeCount(CommandContext commandContext, Map<String, Object> parameterMap) {
return commandContext
.getHistoricTaskInstanceManager()
.findHistoricTaskInstanceCountByNativeQuery(parameterMap);
}
}
......@@ -59,4 +59,13 @@ public class HistoricActivityInstanceManager extends AbstractHistoricManager {
public List<HistoricActivityInstance> findHistoricActivityInstancesByQueryCriteria(HistoricActivityInstanceQueryImpl historicActivityInstanceQuery, Page page) {
return getDbSqlSession().selectList("selectHistoricActivityInstancesByQueryCriteria", historicActivityInstanceQuery, page);
}
@SuppressWarnings("unchecked")
public List<HistoricActivityInstance> findHistoricActivityInstancesByNativeQuery(Map<String, Object> parameterMap, int firstResult, int maxResults) {
return getDbSqlSession().selectListWithRawParameter("selectHistoricActivityInstanceByNativeQuery", parameterMap, firstResult, maxResults);
}
public long findHistoricActivityInstanceCountByNativeQuery(Map<String, Object> parameterMap) {
return (Long) getDbSqlSession().selectOne("selectHistoricActivityInstanceCountByNativeQuery", parameterMap);
}
}
......@@ -15,6 +15,7 @@ package org.activiti.engine.impl.persistence.entity;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.impl.HistoricProcessInstanceQueryImpl;
......@@ -88,4 +89,13 @@ public class HistoricProcessInstanceManager extends AbstractHistoricManager {
}
return Collections.EMPTY_LIST;
}
@SuppressWarnings("unchecked")
public List<HistoricProcessInstance> findHistoricProcessInstancesByNativeQuery(Map<String, Object> parameterMap, int firstResult, int maxResults) {
return getDbSqlSession().selectListWithRawParameter("selectHistoricProcessInstanceByNativeQuery", parameterMap, firstResult, maxResults);
}
public long findHistoricProcessInstanceCountByNativeQuery(Map<String, Object> parameterMap) {
return (Long) getDbSqlSession().selectOne("selectHistoricProcessInstanceCountByNativeQuery", parameterMap);
}
}
......@@ -16,6 +16,7 @@ package org.activiti.engine.impl.persistence.entity;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.history.HistoricTaskInstance;
......@@ -161,4 +162,13 @@ public class HistoricTaskInstanceManager extends AbstractHistoricManager {
}
}
}
@SuppressWarnings("unchecked")
public List<HistoricTaskInstance> findHistoricTaskInstancesByNativeQuery(Map<String, Object> parameterMap, int firstResult, int maxResults) {
return getDbSqlSession().selectListWithRawParameter("selectHistoricTaskInstanceByNativeQuery", parameterMap, firstResult, maxResults);
}
public long findHistoricTaskInstanceCountByNativeQuery(Map<String, Object> parameterMap) {
return (Long) getDbSqlSession().selectOne("selectHistoricTaskInstanceCountByNativeQuery", parameterMap);
}
}
......@@ -17,13 +17,11 @@ import java.util.List;
import java.util.Map;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.impl.NativeTaskQueryImpl;
import org.activiti.engine.impl.Page;
import org.activiti.engine.impl.TaskQueryImpl;
import org.activiti.engine.impl.context.Context;
import org.activiti.engine.impl.interceptor.CommandContext;
import org.activiti.engine.impl.persistence.AbstractManager;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.task.Task;
......@@ -113,8 +111,7 @@ public class TaskManager extends AbstractManager {
@SuppressWarnings("unchecked")
public List<Task> findTasksByNativeQuery(Map<String, Object> parameterMap, int firstResult, int maxResults) {
final String query = "selectTaskByNativeQuery";
return getDbSqlSession().selectListWithRawParameter(query, parameterMap, firstResult, maxResults);
return getDbSqlSession().selectListWithRawParameter("selectTaskByNativeQuery", parameterMap, firstResult, maxResults);
}
public long findTaskCountByNativeQuery(Map<String, Object> parameterMap) {
......
......@@ -144,4 +144,13 @@
</where>
</sql>
<select id="selectHistoricActivityInstanceByNativeQuery" parameterType="java.util.Map" resultMap="historicActivityInstanceResultMap">
${limitBefore}
SELECT ${selectClause} FROM ${fromClause}
${limitAfter}
</select>
<select id="selectHistoricActivityInstanceCountByNativeQuery" parameterType="java.util.Map" resultType="long">
select count(${selectClause}) FROM ${fromClause}
</select>
</mapper>
......@@ -251,4 +251,13 @@
</choose>
</sql>
<select id="selectHistoricProcessInstanceByNativeQuery" parameterType="java.util.Map" resultMap="historicProcessInstanceResultMap">
${limitBefore}
SELECT ${selectClause} FROM ${fromClause}
${limitAfter}
</select>
<select id="selectHistoricProcessInstanceCountByNativeQuery" parameterType="java.util.Map" resultType="long">
select count(${selectClause}) FROM ${fromClause}
</select>
</mapper>
......@@ -264,4 +264,13 @@
</where>
</sql>
<select id="selectHistoricTaskInstanceByNativeQuery" parameterType="java.util.Map" resultMap="historicTaskInstanceResultMap">
${limitBefore}
SELECT ${selectClause} FROM ${fromClause}
${limitAfter}
</select>
<select id="selectHistoricTaskInstanceCountByNativeQuery" parameterType="java.util.Map" resultType="long">
select count(${selectClause}) FROM ${fromClause}
</select>
</mapper>
......@@ -56,7 +56,6 @@ public class HistoryServiceTest extends PluggableActivitiTestCase {
assertEquals(1, tasks.size());
taskService.complete(tasks.get(0).getId());
assertTrue(historyService.createHistoricProcessInstanceQuery().count() == 1);
}
@Deployment(resources = { "org/activiti/engine/test/api/oneTaskProcess.bpmn20.xml" })
......@@ -410,4 +409,27 @@ public class HistoryServiceTest extends PluggableActivitiTestCase {
historyService.deleteHistoricProcessInstance(processInstance2.getId());
historyService.deleteHistoricProcessInstance(processInstance3.getId());
}
@Deployment(resources = { "org/activiti/engine/test/api/oneTaskProcess.bpmn20.xml" })
public void testNativeHistoricProcessInstanceTest() {
// just test that the query will be constructed and executed, details are tested in the TaskQueryTest
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
assertEquals(1, historyService.createNativeHistoricProcessInstanceQuery().from(managementService.getTableName(HistoricProcessInstance.class)).count());
assertEquals(1, historyService.createNativeHistoricProcessInstanceQuery().from(managementService.getTableName(HistoricProcessInstance.class)).list().size());
}
@Deployment(resources = { "org/activiti/engine/test/api/oneTaskProcess.bpmn20.xml" })
public void testNativeHistoricTaskInstanceTest() {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
assertEquals(1, historyService.createNativeHistoricTaskInstanceQuery().from(managementService.getTableName(HistoricProcessInstance.class)).count());
assertEquals(1, historyService.createNativeHistoricTaskInstanceQuery().from(managementService.getTableName(HistoricProcessInstance.class)).list().size());
}
@Deployment(resources = { "org/activiti/engine/test/api/oneTaskProcess.bpmn20.xml" })
public void testNativeHistoricActivityInstanceTest() {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
assertEquals(1, historyService.createNativeHistoricActivityInstanceQuery().from(managementService.getTableName(HistoricProcessInstance.class)).count());
assertEquals(1, historyService.createNativeHistoricActivityInstanceQuery().from(managementService.getTableName(HistoricProcessInstance.class)).list().size());
}
}
......@@ -1056,6 +1056,7 @@ public void testBooleanVariable() throws Exception {
}
public void testNativeQuery() {
// just test that the query will be constructed and executed, details are tested in the TaskQueryTest
assertEquals("ACT_RU_EXECUTION", managementService.getTableName(Execution.class));
long executionCount = runtimeService.createExecutionQuery().count();
......
......@@ -1100,6 +1100,7 @@ public class ProcessInstanceQueryTest extends PluggableActivitiTestCase {
}
public void testNativeQuery() {
// just test that the query will be constructed and executed, details are tested in the TaskQueryTest
assertEquals("ACT_RU_EXECUTION", managementService.getTableName(ProcessInstance.class));
long piCount = runtimeService.createProcessInstanceQuery().count();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册