From 0bd4d10b454c75459062048502aef6a52ae9ef6e Mon Sep 17 00:00:00 2001 From: tombaeyens Date: Mon, 4 Apr 2011 14:13:42 +0000 Subject: [PATCH] ACT-741 refactoring persistence: refactoring RuuntimeSession into ExecutionManager and JobManager --- .../engine/impl/ExecutionQueryImpl.java | 4 +- .../activiti/engine/impl/JobQueryImpl.java | 4 +- .../engine/impl/ProcessInstanceQueryImpl.java | 4 +- .../impl/bpmn/deployer/BpmnDeployer.java | 7 +- .../cfg/ProcessEngineConfigurationImpl.java | 4 +- .../engine/impl/cfg/RuntimeSession.java | 55 ------ .../engine/impl/cmd/AcquireJobsCmd.java | 3 +- .../impl/cmd/DecrementJobRetriesCmd.java | 7 +- .../engine/impl/cmd/DeleteDeploymentCmd.java | 1 - .../engine/impl/cmd/DeleteJobsCmd.java | 7 +- .../impl/cmd/DeleteProcessInstanceCmd.java | 2 +- .../engine/impl/cmd/ExecuteJobsCmd.java | 4 +- .../impl/cmd/FindActiveActivityIdsCmd.java | 2 +- .../impl/cmd/GetExecutionVariableCmd.java | 2 +- .../impl/cmd/GetExecutionVariablesCmd.java | 2 +- .../cmd/GetJobExceptionStacktraceCmd.java | 5 +- .../impl/cmd/SetExecutionVariablesCmd.java | 2 +- .../activiti/engine/impl/cmd/SignalCmd.java | 2 +- .../engine/impl/db/DbRuntimeSession.java | 166 ------------------ .../impl/db/DbRuntimeSessionFactory.java | 33 ---- .../impl/interceptor/CommandContext.java | 13 +- .../GetUnlockedTimersByDuedateCmd.java | 6 +- .../jobexecutor/JobExecutorTimerSession.java | 2 +- .../persistence/mgr/ExecutionManager.java | 33 +++- .../mgr/HistoricDetailManager.java | 1 - .../impl/persistence/mgr/JobManager.java | 73 ++++++++ .../mgr/VariableInstanceManager.java | 14 +- .../engine/impl/runtime/ExecutionEntity.java | 20 ++- .../engine/impl/runtime/JobEntity.java | 4 +- .../activiti/engine/impl/task/TaskEntity.java | 7 +- .../activiti/db/ibatis/runtime.mapping.xml | 2 +- 31 files changed, 182 insertions(+), 309 deletions(-) delete mode 100644 modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/RuntimeSession.java delete mode 100644 modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbRuntimeSession.java delete mode 100644 modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbRuntimeSessionFactory.java create mode 100644 modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/JobManager.java diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ExecutionQueryImpl.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ExecutionQueryImpl.java index 98c265bd73..893063ad4e 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ExecutionQueryImpl.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ExecutionQueryImpl.java @@ -116,7 +116,7 @@ public class ExecutionQueryImpl extends ExecutionVariableQueryImpl implements JobQue public long executeCount(CommandContext commandContext) { checkQueryOk(); return commandContext - .getRuntimeSession() + .getJobManager() .findJobCountByQueryCriteria(this); } public List executeList(CommandContext commandContext, Page page) { checkQueryOk(); return commandContext - .getRuntimeSession() + .getJobManager() .findJobsByQueryCriteria(this, page); } diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ProcessInstanceQueryImpl.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ProcessInstanceQueryImpl.java index b43e1a52de..6fbeea0776 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ProcessInstanceQueryImpl.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ProcessInstanceQueryImpl.java @@ -125,7 +125,7 @@ public class ProcessInstanceQueryImpl extends ExecutionVariableQueryImpl jobsToDelete = Context.getCommandContext().getRuntimeSession(). - findJobsByConfiguration(TimerStartEventJobHandler.TYPE, processDefinition.getKey()); + List jobsToDelete = Context + .getCommandContext() + .getJobManager() + .findJobsByConfiguration(TimerStartEventJobHandler.TYPE, processDefinition.getKey()); + for (Job job :jobsToDelete) { new DeleteJobsCmd(job.getId()).execute(Context.getCommandContext()); } diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/ProcessEngineConfigurationImpl.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/ProcessEngineConfigurationImpl.java index 25e5253489..222bb170fc 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/ProcessEngineConfigurationImpl.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/ProcessEngineConfigurationImpl.java @@ -64,7 +64,6 @@ import org.activiti.engine.impl.db.DbHistorySessionFactory; import org.activiti.engine.impl.db.DbIdGenerator; import org.activiti.engine.impl.db.DbIdentitySessionFactory; import org.activiti.engine.impl.db.DbManagementSessionFactory; -import org.activiti.engine.impl.db.DbRuntimeSessionFactory; import org.activiti.engine.impl.db.DbSqlSessionFactory; import org.activiti.engine.impl.db.DbTaskSessionFactory; import org.activiti.engine.impl.db.IbatisVariableTypeHandler; @@ -99,6 +98,7 @@ import org.activiti.engine.impl.persistence.mgr.HistoricDetailManager; import org.activiti.engine.impl.persistence.mgr.HistoricProcessInstanceManager; import org.activiti.engine.impl.persistence.mgr.HistoricTaskInstanceManager; import org.activiti.engine.impl.persistence.mgr.IdentityLinkManager; +import org.activiti.engine.impl.persistence.mgr.JobManager; import org.activiti.engine.impl.persistence.mgr.ProcessDefinitionManager; import org.activiti.engine.impl.persistence.mgr.ResourceManager; import org.activiti.engine.impl.persistence.mgr.TaskManager; @@ -512,7 +512,6 @@ public abstract class ProcessEngineConfigurationImpl extends ProcessEngineConfig if (sessionFactories==null) { sessionFactories = new HashMap, SessionFactory>(); - addSessionFactory(new DbRuntimeSessionFactory()); addSessionFactory(new DbTaskSessionFactory()); addSessionFactory(new DbIdentitySessionFactory()); addSessionFactory(new DbManagementSessionFactory()); @@ -542,6 +541,7 @@ public abstract class ProcessEngineConfigurationImpl extends ProcessEngineConfig addSessionFactory(new GenericManagerFactory(HistoricActivityInstanceManager.class)); addSessionFactory(new GenericManagerFactory(HistoricTaskInstanceManager.class)); addSessionFactory(new GenericManagerFactory(HistoricDetailManager.class)); + addSessionFactory(new GenericManagerFactory(JobManager.class)); } if (customSessionFactories!=null) { for (SessionFactory sessionFactory: customSessionFactories) { diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/RuntimeSession.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/RuntimeSession.java deleted file mode 100644 index 01342da6fc..0000000000 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/RuntimeSession.java +++ /dev/null @@ -1,55 +0,0 @@ -/* Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.activiti.engine.impl.cfg; - -import java.util.Date; -import java.util.List; - -import org.activiti.engine.impl.JobQueryImpl; -import org.activiti.engine.impl.Page; -import org.activiti.engine.impl.runtime.ExecutionEntity; -import org.activiti.engine.impl.runtime.JobEntity; -import org.activiti.engine.impl.runtime.TimerEntity; -import org.activiti.engine.impl.runtime.VariableInstanceEntity; -import org.activiti.engine.runtime.Job; -import org.activiti.engine.runtime.ProcessInstance; - - -/** - * @author Tom Baeyens - */ -public interface RuntimeSession { - - void deleteProcessInstance(String processInstanceId, String deleteReason); - ExecutionEntity findSubProcessInstanceBySuperExecutionId(String superExecutionId); - long findExecutionCountByQueryCriteria(Object executionQuery); - List findExecutionsByQueryCriteria(Object executionQuery, Page page); - long findProcessInstanceCountByQueryCriteria(Object executionQuery); - List findProcessInstanceByQueryCriteria(Object executionQuery, Page page); - List findChildExecutionsByParentExecutionId(String executionId); - ExecutionEntity findExecutionById(String executionId); - - List findVariableInstancesByExecutionId(String executionId); - List findVariablesByTaskId(String taskId); - - byte[] getByteArrayBytes(String byteArrayId); - - JobEntity findJobById(String jobId); - List findNextJobsToExecute(Page page); - List findUnlockedTimersByDuedate(Date duedate, Page page); - List findTimersByExecutionId(String executionId); - List findJobsByQueryCriteria(JobQueryImpl jobQuery, Page page); - List findJobsByConfiguration(String jobHandlerType, String jobHandlerConfiguration); - long findJobCountByQueryCriteria(JobQueryImpl jobQuery); -} diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/AcquireJobsCmd.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/AcquireJobsCmd.java index e0a60ab4b9..d8b65a9fd9 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/AcquireJobsCmd.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/AcquireJobsCmd.java @@ -45,8 +45,9 @@ public class AcquireJobsCmd implements Command { AcquiredJobs acquiredJobs = new AcquiredJobs(); List jobs = commandContext - .getRuntimeSession() + .getJobManager() .findNextJobsToExecute(new Page(0, maxJobsPerAcquisition)); + for (JobEntity job: jobs) { List jobIds = new ArrayList(); diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DecrementJobRetriesCmd.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DecrementJobRetriesCmd.java index 80aad9b071..0ae1ae64ca 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DecrementJobRetriesCmd.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DecrementJobRetriesCmd.java @@ -16,7 +16,6 @@ package org.activiti.engine.impl.cmd; import java.io.PrintWriter; import java.io.StringWriter; -import org.activiti.engine.impl.cfg.RuntimeSession; import org.activiti.engine.impl.cfg.TransactionContext; import org.activiti.engine.impl.cfg.TransactionState; import org.activiti.engine.impl.context.Context; @@ -40,8 +39,10 @@ public class DecrementJobRetriesCmd implements Command { } public Object execute(CommandContext commandContext) { - RuntimeSession runtimeSession = commandContext.getRuntimeSession(); - JobEntity job = runtimeSession.findJobById(jobId); + JobEntity job = Context + .getCommandContext() + .getJobManager() + .findJobById(jobId); job.setRetries(job.getRetries() - 1); job.setLockOwner(null); job.setLockExpirationTime(null); diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DeleteDeploymentCmd.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DeleteDeploymentCmd.java index d5cd42de58..0bfc5bf95f 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DeleteDeploymentCmd.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DeleteDeploymentCmd.java @@ -13,7 +13,6 @@ package org.activiti.engine.impl.cmd; import org.activiti.engine.ActivitiException; -import org.activiti.engine.impl.context.Context; import org.activiti.engine.impl.interceptor.Command; import org.activiti.engine.impl.interceptor.CommandContext; diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DeleteJobsCmd.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DeleteJobsCmd.java index 9dd4853bad..43628038b6 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DeleteJobsCmd.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DeleteJobsCmd.java @@ -16,6 +16,7 @@ package org.activiti.engine.impl.cmd; import java.util.ArrayList; import java.util.List; +import org.activiti.engine.impl.context.Context; import org.activiti.engine.impl.interceptor.Command; import org.activiti.engine.impl.interceptor.CommandContext; import org.activiti.engine.impl.runtime.JobEntity; @@ -40,7 +41,11 @@ public class DeleteJobsCmd implements Command { public Void execute(CommandContext commandContext) { JobEntity jobToDelete = null; for (String jobId: jobIds) { - jobToDelete = commandContext.getRuntimeSession().findJobById(jobId); + jobToDelete = Context + .getCommandContext() + .getJobManager() + .findJobById(jobId); + if(jobToDelete != null) { // When given job doesn't exist, ignore jobToDelete.delete(); diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DeleteProcessInstanceCmd.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DeleteProcessInstanceCmd.java index eda390f493..85a4a04959 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DeleteProcessInstanceCmd.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/DeleteProcessInstanceCmd.java @@ -36,7 +36,7 @@ public class DeleteProcessInstanceCmd implements Command { } commandContext - .getRuntimeSession() + .getExecutionManager() .deleteProcessInstance(processInstanceId, deleteReason); return null; } diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/ExecuteJobsCmd.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/ExecuteJobsCmd.java index 0e4be78ce9..376a052afc 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/ExecuteJobsCmd.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/ExecuteJobsCmd.java @@ -46,7 +46,9 @@ public class ExecuteJobsCmd implements Command { if (log.isLoggable(Level.FINE)) { log.fine("Executing job " + jobId); } - JobEntity job = commandContext.getRuntimeSession().findJobById(jobId); + JobEntity job = commandContext + .getJobManager() + .findJobById(jobId); if (job == null) { throw new ActivitiException("No job found with id '" + jobId + "'"); diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/FindActiveActivityIdsCmd.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/FindActiveActivityIdsCmd.java index 90d97acbc4..7fe2fe2335 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/FindActiveActivityIdsCmd.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/FindActiveActivityIdsCmd.java @@ -38,7 +38,7 @@ public class FindActiveActivityIdsCmd implements Command> { } ExecutionEntity execution = commandContext - .getRuntimeSession() + .getExecutionManager() .findExecutionById(executionId); if (execution==null) { diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetExecutionVariableCmd.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetExecutionVariableCmd.java index 32ea15b79b..d851496d1e 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetExecutionVariableCmd.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetExecutionVariableCmd.java @@ -42,7 +42,7 @@ public class GetExecutionVariableCmd implements Command { } ExecutionEntity execution = commandContext - .getRuntimeSession() + .getExecutionManager() .findExecutionById(executionId); if (execution==null) { diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetExecutionVariablesCmd.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetExecutionVariablesCmd.java index 2be5d20bab..30a38373d4 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetExecutionVariablesCmd.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetExecutionVariablesCmd.java @@ -43,7 +43,7 @@ public class GetExecutionVariablesCmd implements Command> { } ExecutionEntity execution = commandContext - .getRuntimeSession() + .getExecutionManager() .findExecutionById(executionId); if (execution==null) { diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetJobExceptionStacktraceCmd.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetJobExceptionStacktraceCmd.java index 2aeb53ae87..f6be01c267 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetJobExceptionStacktraceCmd.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/GetJobExceptionStacktraceCmd.java @@ -36,7 +36,10 @@ public class GetJobExceptionStacktraceCmd implements Command{ throw new ActivitiException("jobId is null"); } - JobEntity job = commandContext.getRuntimeSession().findJobById(jobId); + JobEntity job = commandContext + .getJobManager() + .findJobById(jobId); + if(job == null) { throw new ActivitiException("No job found with id " + jobId); } diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/SetExecutionVariablesCmd.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/SetExecutionVariablesCmd.java index 68bb05546e..d109c0c9f2 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/SetExecutionVariablesCmd.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/SetExecutionVariablesCmd.java @@ -41,7 +41,7 @@ public class SetExecutionVariablesCmd implements Command { } ExecutionEntity execution = commandContext - .getRuntimeSession() + .getExecutionManager() .findExecutionById(executionId); if (execution==null) { diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/SignalCmd.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/SignalCmd.java index 4623941d8e..6031c9dc04 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/SignalCmd.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cmd/SignalCmd.java @@ -40,7 +40,7 @@ public class SignalCmd implements Command { } ExecutionEntity execution = commandContext - .getRuntimeSession() + .getExecutionManager() .findExecutionById(executionId); if (execution==null) { diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbRuntimeSession.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbRuntimeSession.java deleted file mode 100644 index 180a4d077e..0000000000 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbRuntimeSession.java +++ /dev/null @@ -1,166 +0,0 @@ -/* Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.activiti.engine.impl.db; - -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.activiti.engine.ActivitiException; -import org.activiti.engine.impl.JobQueryImpl; -import org.activiti.engine.impl.Page; -import org.activiti.engine.impl.TaskQueryImpl; -import org.activiti.engine.impl.cfg.RuntimeSession; -import org.activiti.engine.impl.context.Context; -import org.activiti.engine.impl.interceptor.Session; -import org.activiti.engine.impl.runtime.ByteArrayEntity; -import org.activiti.engine.impl.runtime.ExecutionEntity; -import org.activiti.engine.impl.runtime.JobEntity; -import org.activiti.engine.impl.runtime.TimerEntity; -import org.activiti.engine.impl.runtime.VariableInstanceEntity; -import org.activiti.engine.impl.task.TaskEntity; -import org.activiti.engine.impl.util.ClockUtil; -import org.activiti.engine.runtime.Job; -import org.activiti.engine.runtime.ProcessInstance; - -/** - * @author Joram Barrez - * @author Tom Baeyens - */ -public class DbRuntimeSession implements Session, RuntimeSession { - - protected DbSqlSession dbSqlSession; - - public DbRuntimeSession() { - this.dbSqlSession = Context.getCommandContext().getDbSqlSession(); - } - - @SuppressWarnings("unchecked") - public void deleteProcessInstance(String processInstanceId, String deleteReason) { - ExecutionEntity execution = findExecutionById(processInstanceId); - - if(execution == null) { - throw new ActivitiException("No process instance found for id '" + processInstanceId + "'"); - } - - List tasks = (List) new TaskQueryImpl(Context.getCommandContext()) - .processInstanceId(processInstanceId) - .list(); - for (TaskEntity task: tasks) { - task.delete(TaskEntity.DELETE_REASON_DELETED); - } - - execution.deleteCascade(deleteReason); - } - - public ExecutionEntity findSubProcessInstanceBySuperExecutionId(String superExecutionId) { - return (ExecutionEntity) dbSqlSession.selectOne("selectSubProcessInstanceBySuperExecutionId", superExecutionId); - } - - public long findExecutionCountByQueryCriteria(Object executionQuery) { - return (Long) dbSqlSession.selectOne("selectExecutionCountByQueryCriteria", executionQuery); - } - - @SuppressWarnings("unchecked") - public List findExecutionsByQueryCriteria(Object executionQuery, Page page) { - return dbSqlSession.selectList("selectExecutionsByQueryCriteria", executionQuery, page); - } - - public long findProcessInstanceCountByQueryCriteria(Object executionQuery) { - return (Long) dbSqlSession.selectOne("selectProcessInstanceCountByQueryCriteria", executionQuery); - } - - @SuppressWarnings("unchecked") - public List findProcessInstanceByQueryCriteria(Object executionQuery, Page page) { - return dbSqlSession.selectList("selectProcessInstanceByQueryCriteria", executionQuery, page); - } - - public ExecutionEntity findExecutionById(String executionId) { - return (ExecutionEntity) dbSqlSession.selectOne("selectExecutionById", executionId); - } - - @SuppressWarnings("unchecked") - public List findChildExecutionsByParentExecutionId(String parentExecutionId) { - return dbSqlSession.selectList("selectExecutionsByParentExecutionId", parentExecutionId); - } - - @SuppressWarnings("unchecked") - public List findVariableInstancesByExecutionId(String executionId) { - return dbSqlSession.selectList("selectVariablesByExecutionId", executionId); - } - - @SuppressWarnings("unchecked") - public List findVariablesByTaskId(String taskId) { - return dbSqlSession.selectList("selectVariablesByTaskId", taskId); - } - - public void insertByteArray(ByteArrayEntity byteArrayEntity) { - dbSqlSession.insert(byteArrayEntity); - } - - public void deleteByteArray(String byteArrayId) { - dbSqlSession.delete(ByteArrayEntity.class, byteArrayId); - } - - @SuppressWarnings("unchecked") - public byte[] getByteArrayBytes(String byteArrayId) { - Map temp = (Map) dbSqlSession.selectOne("selectBytesOfByteArray", byteArrayId); - return (byte[]) temp.get("BYTES_"); - } - - public JobEntity findJobById(String jobId) { - return (JobEntity) dbSqlSession.selectOne("selectJob", jobId); - } - - @SuppressWarnings("unchecked") - public List findNextJobsToExecute(Page page) { - Date now = ClockUtil.getCurrentTime(); - return dbSqlSession.selectList("selectNextJobsToExecute", now, page); - } - - @SuppressWarnings("unchecked") - public List findUnlockedTimersByDuedate(Date duedate, Page page) { - final String query = "selectUnlockedTimersByDuedate"; - return dbSqlSession.selectList(query, duedate, page); - } - - @SuppressWarnings("unchecked") - public List findTimersByExecutionId(String executionId) { - return dbSqlSession.selectList("selectTimersByExecutionId", executionId); - } - - @SuppressWarnings("unchecked") - public List findJobsByQueryCriteria(JobQueryImpl jobQuery, Page page) { - final String query = "org.activiti.persistence.selectJobByQueryCriteria"; - return dbSqlSession.selectList(query, jobQuery, page); - } - - @SuppressWarnings("unchecked") - public List findJobsByConfiguration(String jobHandlerType, String jobHandlerConfiguration) { - Map params = new HashMap(); - params.put("handlerType", jobHandlerType); - params.put("handlerConfiguration", jobHandlerConfiguration); - return dbSqlSession.selectList("org.activiti.persistence.selectJobsByConfiguration", params); - } - - public long findJobCountByQueryCriteria(JobQueryImpl jobQuery) { - return (Long) dbSqlSession.selectOne("org.activiti.persistence.selectJobCountByQueryCriteria", jobQuery); - } - - public void close() { - } - - public void flush() { - } -} diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbRuntimeSessionFactory.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbRuntimeSessionFactory.java deleted file mode 100644 index 450134de96..0000000000 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/DbRuntimeSessionFactory.java +++ /dev/null @@ -1,33 +0,0 @@ -/* Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.activiti.engine.impl.db; - -import org.activiti.engine.impl.cfg.RuntimeSession; -import org.activiti.engine.impl.interceptor.Session; -import org.activiti.engine.impl.interceptor.SessionFactory; - - -/** - * @author Tom Baeyens - */ -public class DbRuntimeSessionFactory implements SessionFactory { - - public Class< ? > getSessionType() { - return RuntimeSession.class; - } - - public Session openSession() { - return new DbRuntimeSession(); - } -} diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/interceptor/CommandContext.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/interceptor/CommandContext.java index 2ec6a5b553..aaad390ae9 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/interceptor/CommandContext.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/interceptor/CommandContext.java @@ -24,7 +24,6 @@ import org.activiti.engine.impl.cfg.IdentitySession; import org.activiti.engine.impl.cfg.ManagementSession; import org.activiti.engine.impl.cfg.MessageSession; import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl; -import org.activiti.engine.impl.cfg.RuntimeSession; import org.activiti.engine.impl.cfg.TaskSession; import org.activiti.engine.impl.cfg.TimerSession; import org.activiti.engine.impl.cfg.TransactionContext; @@ -37,6 +36,7 @@ import org.activiti.engine.impl.persistence.mgr.HistoricDetailManager; import org.activiti.engine.impl.persistence.mgr.HistoricProcessInstanceManager; import org.activiti.engine.impl.persistence.mgr.HistoricTaskInstanceManager; import org.activiti.engine.impl.persistence.mgr.IdentityLinkManager; +import org.activiti.engine.impl.persistence.mgr.JobManager; import org.activiti.engine.impl.persistence.mgr.ProcessDefinitionManager; import org.activiti.engine.impl.persistence.mgr.ResourceManager; import org.activiti.engine.impl.persistence.mgr.TaskManager; @@ -194,7 +194,7 @@ public class CommandContext { return getSession(ProcessDefinitionManager.class); } - public ExecutionManager getProcessInstanceManager() { + public ExecutionManager getExecutionManager() { return getSession(ExecutionManager.class); } @@ -225,12 +225,15 @@ public class CommandContext { public HistoricTaskInstanceManager getHistoricTaskInstanceManager() { return getSession(HistoricTaskInstanceManager.class); } + + public JobManager getJobManager() { + return getSession(JobManager.class); + } + - public RuntimeSession getRuntimeSession() { - return getSession(RuntimeSession.class); - } + public IdentitySession getIdentitySession() { return getSession(IdentitySession.class); } diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/jobexecutor/GetUnlockedTimersByDuedateCmd.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/jobexecutor/GetUnlockedTimersByDuedateCmd.java index de3dddca2d..4343263826 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/jobexecutor/GetUnlockedTimersByDuedateCmd.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/jobexecutor/GetUnlockedTimersByDuedateCmd.java @@ -16,6 +16,7 @@ import java.util.Date; import java.util.List; import org.activiti.engine.impl.Page; +import org.activiti.engine.impl.context.Context; import org.activiti.engine.impl.interceptor.Command; import org.activiti.engine.impl.interceptor.CommandContext; import org.activiti.engine.impl.runtime.TimerEntity; @@ -36,6 +37,9 @@ public class GetUnlockedTimersByDuedateCmd implements Command> } public List execute(CommandContext commandContext) { - return commandContext.getRuntimeSession().findUnlockedTimersByDuedate(duedate, page); + return Context + .getCommandContext() + .getJobManager() + .findUnlockedTimersByDuedate(duedate, page); } } diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/jobexecutor/JobExecutorTimerSession.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/jobexecutor/JobExecutorTimerSession.java index ca1c11de1d..39060cd518 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/jobexecutor/JobExecutorTimerSession.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/jobexecutor/JobExecutorTimerSession.java @@ -63,7 +63,7 @@ public class JobExecutorTimerSession implements TimerSession, Session { public void cancelTimers(ExecutionEntity execution) { List timers = Context .getCommandContext() - .getRuntimeSession() + .getJobManager() .findTimersByExecutionId(execution.getId()); for (TimerEntity timer: timers) { diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/ExecutionManager.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/ExecutionManager.java index b74dbf2e20..6770627f5a 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/ExecutionManager.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/ExecutionManager.java @@ -16,6 +16,7 @@ package org.activiti.engine.impl.persistence.mgr; import java.util.List; import org.activiti.engine.ActivitiException; +import org.activiti.engine.impl.Page; import org.activiti.engine.impl.context.Context; import org.activiti.engine.impl.runtime.ExecutionEntity; import org.activiti.engine.impl.task.TaskEntity; @@ -27,7 +28,7 @@ import org.activiti.engine.runtime.ProcessInstance; * @author Tom Baeyens */ public class ExecutionManager extends AbstractManager { - + public void deleteProcessInstancesByProcessDefinition(ProcessDefinition processDefinition, String deleteReason) { List processInstances = getPersistenceSession() .createProcessInstanceQuery() @@ -63,7 +64,35 @@ public class ExecutionManager extends AbstractManager { execution.deleteCascade(deleteReason); } + public ExecutionEntity findSubProcessInstanceBySuperExecutionId(String superExecutionId) { + return (ExecutionEntity) getPersistenceSession().selectOne("selectSubProcessInstanceBySuperExecutionId", superExecutionId); + } + + @SuppressWarnings("unchecked") + public List findChildExecutionsByParentExecutionId(String parentExecutionId) { + return getPersistenceSession().selectList("selectExecutionsByParentExecutionId", parentExecutionId); + } + public ExecutionEntity findExecutionById(String executionId) { - return (ExecutionEntity) getPersistenceSession().selectOne("selectExecutionById", executionId); + return (ExecutionEntity) getPersistenceSession().selectById(ExecutionEntity.class, executionId); + } + + public long findExecutionCountByQueryCriteria(Object executionQuery) { + return (Long) getPersistenceSession().selectOne("selectExecutionCountByQueryCriteria", executionQuery); } + + @SuppressWarnings("unchecked") + public List findExecutionsByQueryCriteria(Object executionQuery, Page page) { + return getPersistenceSession().selectList("selectExecutionsByQueryCriteria", executionQuery, page); + } + + public long findProcessInstanceCountByQueryCriteria(Object executionQuery) { + return (Long) getPersistenceSession().selectOne("selectProcessInstanceCountByQueryCriteria", executionQuery); + } + + @SuppressWarnings("unchecked") + public List findProcessInstanceByQueryCriteria(Object executionQuery, Page page) { + return getPersistenceSession().selectList("selectProcessInstanceByQueryCriteria", executionQuery, page); + } + } diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/HistoricDetailManager.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/HistoricDetailManager.java index 21a576ac29..4e76880684 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/HistoricDetailManager.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/HistoricDetailManager.java @@ -15,7 +15,6 @@ package org.activiti.engine.impl.persistence.mgr; import java.util.List; -import org.activiti.engine.history.HistoricVariableUpdate; import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl; import org.activiti.engine.impl.context.Context; import org.activiti.engine.impl.db.DbSqlSession; diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/JobManager.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/JobManager.java new file mode 100644 index 0000000000..a652b678a8 --- /dev/null +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/JobManager.java @@ -0,0 +1,73 @@ +/* Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.activiti.engine.impl.persistence.mgr; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.activiti.engine.impl.JobQueryImpl; +import org.activiti.engine.impl.Page; +import org.activiti.engine.impl.runtime.JobEntity; +import org.activiti.engine.impl.runtime.TimerEntity; +import org.activiti.engine.impl.util.ClockUtil; +import org.activiti.engine.runtime.Job; + + +/** + * @author Tom Baeyens + */ +public class JobManager extends AbstractManager { + + public JobEntity findJobById(String jobId) { + return (JobEntity) getPersistenceSession().selectOne("selectJob", jobId); + } + + @SuppressWarnings("unchecked") + public List findNextJobsToExecute(Page page) { + Date now = ClockUtil.getCurrentTime(); + return getPersistenceSession().selectList("selectNextJobsToExecute", now, page); + } + + @SuppressWarnings("unchecked") + public List findUnlockedTimersByDuedate(Date duedate, Page page) { + final String query = "selectUnlockedTimersByDuedate"; + return getPersistenceSession().selectList(query, duedate, page); + } + + @SuppressWarnings("unchecked") + public List findTimersByExecutionId(String executionId) { + return getPersistenceSession().selectList("selectTimersByExecutionId", executionId); + } + + @SuppressWarnings("unchecked") + public List findJobsByQueryCriteria(JobQueryImpl jobQuery, Page page) { + final String query = "org.activiti.persistence.selectJobByQueryCriteria"; + return getPersistenceSession().selectList(query, jobQuery, page); + } + + @SuppressWarnings("unchecked") + public List findJobsByConfiguration(String jobHandlerType, String jobHandlerConfiguration) { + Map params = new HashMap(); + params.put("handlerType", jobHandlerType); + params.put("handlerConfiguration", jobHandlerConfiguration); + return getPersistenceSession().selectList("org.activiti.persistence.selectJobsByConfiguration", params); + } + + public long findJobCountByQueryCriteria(JobQueryImpl jobQuery) { + return (Long) getPersistenceSession().selectOne("org.activiti.persistence.selectJobCountByQueryCriteria", jobQuery); + } + +} diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/VariableInstanceManager.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/VariableInstanceManager.java index 24b8e7ec0f..f4b83fec3a 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/VariableInstanceManager.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/mgr/VariableInstanceManager.java @@ -24,11 +24,6 @@ import org.activiti.engine.impl.runtime.VariableInstanceEntity; */ public class VariableInstanceManager extends AbstractManager { - @SuppressWarnings("unchecked") - public List findVariableInstancesByTaskId(String taskId) { - return getPersistenceSession().selectList("selectVariablesByTaskId", taskId); - } - public void deleteVariableInstance(VariableInstanceEntity variableInstance) { getPersistenceSession().delete(VariableInstanceEntity.class, variableInstance.getId()); @@ -42,4 +37,13 @@ public class VariableInstanceManager extends AbstractManager { } } + @SuppressWarnings("unchecked") + public List findVariableInstancesByTaskId(String taskId) { + return getPersistenceSession().selectList("selectVariablesByTaskId", taskId); + } + + @SuppressWarnings("unchecked") + public List findVariableInstancesByExecutionId(String executionId) { + return getPersistenceSession().selectList("selectVariablesByExecutionId", executionId); + } } diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/runtime/ExecutionEntity.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/runtime/ExecutionEntity.java index a54645217f..28381090d7 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/runtime/ExecutionEntity.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/runtime/ExecutionEntity.java @@ -25,7 +25,6 @@ import org.activiti.engine.impl.JobQueryImpl; import org.activiti.engine.impl.TaskQueryImpl; import org.activiti.engine.impl.bpmn.parser.BpmnParse; import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl; -import org.activiti.engine.impl.cfg.RuntimeSession; import org.activiti.engine.impl.context.Context; import org.activiti.engine.impl.db.DbSqlSession; import org.activiti.engine.impl.db.PersistentObject; @@ -510,7 +509,7 @@ public class ExecutionEntity extends VariableScopeImpl implements ActivityExecut if (executions==null) { this.executions = (List) Context .getCommandContext() - .getRuntimeSession() + .getExecutionManager() .findChildExecutionsByParentExecutionId(id); } } @@ -607,7 +606,7 @@ public class ExecutionEntity extends VariableScopeImpl implements ActivityExecut if ((processInstance == null) && (processInstanceId != null)) { processInstance = Context .getCommandContext() - .getRuntimeSession() + .getExecutionManager() .findExecutionById(processInstanceId); } } @@ -659,7 +658,7 @@ public class ExecutionEntity extends VariableScopeImpl implements ActivityExecut if (parent == null && parentId != null) { parent = Context .getCommandContext() - .getRuntimeSession() + .getExecutionManager() .findExecutionById(parentId); } } @@ -702,7 +701,7 @@ public class ExecutionEntity extends VariableScopeImpl implements ActivityExecut if (superExecution == null && superExecutionId != null) { superExecution = Context .getCommandContext() - .getRuntimeSession() + .getExecutionManager() .findExecutionById(superExecutionId); } } @@ -720,7 +719,7 @@ public class ExecutionEntity extends VariableScopeImpl implements ActivityExecut if (subProcessInstance == null) { subProcessInstance = Context .getCommandContext() - .getRuntimeSession() + .getExecutionManager() .findSubProcessInstanceBySuperExecutionId(id); } } @@ -831,7 +830,10 @@ public class ExecutionEntity extends VariableScopeImpl implements ActivityExecut } // update the related jobs - List variables = (List) commandContext.getRuntimeSession().findVariableInstancesByExecutionId(id); + List variables = (List) commandContext + .getVariableInstanceManager() + .findVariableInstancesByExecutionId(id); + for (VariableInstanceEntity variable: variables) { variable.setExecutionId(replacedBy.getId()); } @@ -874,7 +876,9 @@ public class ExecutionEntity extends VariableScopeImpl implements ActivityExecut @Override protected List loadVariableInstances() { - return Context.getCommandContext().getSession(RuntimeSession.class) + return Context + .getCommandContext() + .getVariableInstanceManager() .findVariableInstancesByExecutionId(id); } diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/runtime/JobEntity.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/runtime/JobEntity.java index 5e1b22f392..eacebac592 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/runtime/JobEntity.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/runtime/JobEntity.java @@ -19,7 +19,6 @@ import java.util.HashMap; import java.util.Map; import org.activiti.engine.ActivitiException; -import org.activiti.engine.impl.cfg.RuntimeSession; import org.activiti.engine.impl.context.Context; import org.activiti.engine.impl.db.DbSqlSession; import org.activiti.engine.impl.db.PersistentObject; @@ -68,10 +67,9 @@ public abstract class JobEntity implements Serializable, Job, PersistentObject { protected String exceptionMessage; public void execute(CommandContext commandContext) { - RuntimeSession runtimeSession = commandContext.getRuntimeSession(); ExecutionEntity execution = null; if (executionId != null) { - execution = runtimeSession.findExecutionById(executionId); + execution = commandContext.getExecutionManager().findExecutionById(executionId); } Map jobHandlers = Context.getProcessEngineConfiguration().getJobHandlers(); diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/task/TaskEntity.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/task/TaskEntity.java index 9cf14d8ea5..65448a0266 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/task/TaskEntity.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/task/TaskEntity.java @@ -28,7 +28,6 @@ import org.activiti.engine.delegate.DelegateExecution; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl; -import org.activiti.engine.impl.cfg.RuntimeSession; import org.activiti.engine.impl.context.Context; import org.activiti.engine.impl.db.DbSqlSession; import org.activiti.engine.impl.db.PersistentObject; @@ -231,8 +230,8 @@ public class TaskEntity extends VariableScopeImpl implements Task, DelegateTask, protected List loadVariableInstances() { return Context .getCommandContext() - .getSession(RuntimeSession.class) - .findVariablesByTaskId(id); + .getVariableInstanceManager() + .findVariableInstancesByTaskId(id); } // execution //////////////////////////////////////////////////////////////// @@ -241,7 +240,7 @@ public class TaskEntity extends VariableScopeImpl implements Task, DelegateTask, if ( (execution==null) && (executionId!=null) ) { this.execution = Context .getCommandContext() - .getRuntimeSession() + .getExecutionManager() .findExecutionById(executionId); } return execution; diff --git a/modules/activiti-engine/src/main/resources/org/activiti/db/ibatis/runtime.mapping.xml b/modules/activiti-engine/src/main/resources/org/activiti/db/ibatis/runtime.mapping.xml index ea0b4e66f2..e9665b946e 100644 --- a/modules/activiti-engine/src/main/resources/org/activiti/db/ibatis/runtime.mapping.xml +++ b/modules/activiti-engine/src/main/resources/org/activiti/db/ibatis/runtime.mapping.xml @@ -63,7 +63,7 @@ - select * from ACT_RU_EXECUTION where ID_ = #{id} -- GitLab