diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/delegate/DelegateExecution.java b/modules/activiti-engine/src/main/java/org/activiti/engine/delegate/DelegateExecution.java index ad61841042af5290e8c1c5e49eedb5e21ed8575d..88b265b76d6732676459d361e424051af3e717bd 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/delegate/DelegateExecution.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/delegate/DelegateExecution.java @@ -33,10 +33,14 @@ public interface DelegateExecution extends VariableScope { /** Reference to the overall process instance */ String getProcessInstanceId(); + /** + * The 'root' process instance. When using call activity for example, the processInstance + * set will not always be the root. This method returns the topmost process instance. + */ String getRootProcessInstanceId(); /** - * The {@link ExecutionListener#EVENTNAME_START event name} in case this execution is passed in for an {@link ExecutionListener} + * Will contain the event name in case this execution is passed in for an {@link ExecutionListener}. */ String getEventName(); @@ -70,8 +74,14 @@ public interface DelegateExecution extends VariableScope { */ String getTenantId(); + /** + * The BPMN element where the execution currently is at. + */ FlowElement getCurrentFlowElement(); + /** + * Change the current BPMN element the execution is at. + */ void setCurrentFlowElement(FlowElement flowElement); /* Execution management */ diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ProcessEngineImpl.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ProcessEngineImpl.java index ecef16cb285b590e0fbe227756aa14edad0ef326..8bf1f38f3c3ec5c266050d95761a246ccda6c7f2 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ProcessEngineImpl.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/ProcessEngineImpl.java @@ -74,7 +74,7 @@ public class ProcessEngineImpl implements ProcessEngine { this.sessionFactories = processEngineConfiguration.getSessionFactories(); this.transactionContextFactory = processEngineConfiguration.getTransactionContextFactory(); - if (processEngineConfiguration.isUsingRelationalDatabase()) { + if (processEngineConfiguration.isUsingRelationalDatabase() && processEngineConfiguration.getDatabaseSchemaUpdate() != null) { commandExecutor.execute(processEngineConfiguration.getSchemaCommandConfig(), new SchemaOperationsProcessEngineBuild()); } 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 ee186fde73ad14e933e04a9093d8edf836bb1cca..d566b7b91f76b9c9aecc5f22f8a7da3e884a56c9 100755 --- 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 @@ -902,9 +902,8 @@ public abstract class ProcessEngineConfigurationImpl extends ProcessEngineConfig if (sqlSessionFactory == null) { InputStream inputStream = null; try { - inputStream = getMyBatisXmlConfigurationSteam(); + inputStream = getMyBatisXmlConfigurationStream(); - // update the jdbc parameters to the configured ones... Environment environment = new Environment("default", transactionFactory, dataSource); Reader reader = new InputStreamReader(inputStream); Properties properties = new Properties(); @@ -971,7 +970,7 @@ public abstract class ProcessEngineConfigurationImpl extends ProcessEngineConfig return ReflectUtil.getResourceAsStream(resource); } - protected InputStream getMyBatisXmlConfigurationSteam() { + protected InputStream getMyBatisXmlConfigurationStream() { return getResourceAsStream(DEFAULT_MYBATIS_MAPPING_FILE); } @@ -1065,21 +1064,7 @@ public abstract class ProcessEngineConfigurationImpl extends ProcessEngineConfig sessionFactories = new HashMap, SessionFactory>(); if (usingRelationalDatabase) { - if (dbSqlSessionFactory == null) { - dbSqlSessionFactory = new DbSqlSessionFactory(); - } - dbSqlSessionFactory.setDatabaseType(databaseType); - dbSqlSessionFactory.setIdGenerator(idGenerator); - dbSqlSessionFactory.setSqlSessionFactory(sqlSessionFactory); - dbSqlSessionFactory.setDbIdentityUsed(isDbIdentityUsed); - dbSqlSessionFactory.setDbHistoryUsed(isDbHistoryUsed); - dbSqlSessionFactory.setDatabaseTablePrefix(databaseTablePrefix); - dbSqlSessionFactory.setTablePrefixIsSchema(tablePrefixIsSchema); - dbSqlSessionFactory.setDatabaseCatalog(databaseCatalog); - dbSqlSessionFactory.setDatabaseSchema(databaseSchema); - dbSqlSessionFactory.setBulkInsertEnabled(isBulkInsertEnabled, databaseType); - dbSqlSessionFactory.setMaxNrOfStatementsInBulkInsert(maxNrOfStatementsInBulkInsert); - addSessionFactory(dbSqlSessionFactory); + initDbSqlSessionFactory(); } addSessionFactory(new GenericManagerFactory(EntityCache.class, EntityCacheImpl.class)); @@ -1092,6 +1077,28 @@ public abstract class ProcessEngineConfigurationImpl extends ProcessEngineConfig } } + protected void initDbSqlSessionFactory() { + if (dbSqlSessionFactory == null) { + dbSqlSessionFactory = createDbSqlSessionFactory(); + } + dbSqlSessionFactory.setDatabaseType(databaseType); + dbSqlSessionFactory.setIdGenerator(idGenerator); + dbSqlSessionFactory.setSqlSessionFactory(sqlSessionFactory); + dbSqlSessionFactory.setDbIdentityUsed(isDbIdentityUsed); + dbSqlSessionFactory.setDbHistoryUsed(isDbHistoryUsed); + dbSqlSessionFactory.setDatabaseTablePrefix(databaseTablePrefix); + dbSqlSessionFactory.setTablePrefixIsSchema(tablePrefixIsSchema); + dbSqlSessionFactory.setDatabaseCatalog(databaseCatalog); + dbSqlSessionFactory.setDatabaseSchema(databaseSchema); + dbSqlSessionFactory.setBulkInsertEnabled(isBulkInsertEnabled, databaseType); + dbSqlSessionFactory.setMaxNrOfStatementsInBulkInsert(maxNrOfStatementsInBulkInsert); + addSessionFactory(dbSqlSessionFactory); + } + + protected DbSqlSessionFactory createDbSqlSessionFactory() { + return new DbSqlSessionFactory(); + } + protected void addSessionFactory(SessionFactory sessionFactory) { sessionFactories.put(sessionFactory.getSessionType(), sessionFactory); } diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/Entity.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/Entity.java index 443836b057c98835a18f9541082d2319da9e8cc9..6d011cc480711b2ed2d787807bc8b89e50025338 100644 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/Entity.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/db/Entity.java @@ -14,6 +14,7 @@ package org.activiti.engine.impl.db; /** * @author Tom Baeyens + * @author Joram Barrez */ public interface Entity { diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntity.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntity.java index 414c82f66461de7cc8f49c1506cd65bec10b7e82..125863112de2d87d68feac20dd893b1d433ef1df 100755 --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntity.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntity.java @@ -17,7 +17,6 @@ import java.util.Date; import java.util.List; import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.VariableScope; import org.activiti.engine.impl.db.Entity; import org.activiti.engine.impl.db.HasRevision; import org.activiti.engine.runtime.Execution; @@ -31,7 +30,7 @@ import org.activiti.engine.runtime.ProcessInstance; * @author Joram Barrez */ -public interface ExecutionEntity extends VariableScope, DelegateExecution, Execution, ProcessInstance, Entity, HasRevision { +public interface ExecutionEntity extends DelegateExecution, Execution, ProcessInstance, Entity, HasRevision { void setBusinessKey(String businessKey);