diff --git a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/AbstractCmmnManager.java b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/AbstractCmmnManager.java index 7dd4418b409516dcddc8dad7e65f656b6f5152c7..0341f8bade2da4416bfcfad4c97f0ee5992cfeff 100644 --- a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/AbstractCmmnManager.java +++ b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/AbstractCmmnManager.java @@ -25,6 +25,7 @@ import org.flowable.cmmn.engine.impl.persistence.entity.PlanItemInstanceEntityMa import org.flowable.engine.common.impl.context.Context; import org.flowable.engine.common.impl.db.DbSqlSession; import org.flowable.engine.common.impl.interceptor.CommandContext; +import org.flowable.task.service.impl.persistence.entity.HistoricTaskInstanceEntityManager; import org.flowable.variable.service.impl.persistence.entity.HistoricVariableInstanceEntityManager; import org.flowable.variable.service.impl.persistence.entity.VariableInstanceEntityManager; @@ -90,6 +91,10 @@ public abstract class AbstractCmmnManager { protected HistoricVariableInstanceEntityManager getHistoricVariableInstanceEntityManager() { return cmmnEngineConfiguration.getVariableServiceConfiguration().getHistoricVariableInstanceEntityManager(); } + + protected HistoricTaskInstanceEntityManager getHistoricTaskInstanceEntityManager() { + return cmmnEngineConfiguration.getTaskServiceConfiguration().getHistoricTaskInstanceEntityManager(); + } protected CmmnEngineConfiguration getCmmnEngineConfiguration() { return cmmnEngineConfiguration; diff --git a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/agenda/operation/AbstractDeleteCaseInstanceOperation.java b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/agenda/operation/AbstractDeleteCaseInstanceOperation.java index 49c4f96ba81761baabbe79526b782c92ff216aec..2f2845ea4bc81bc9b5967b1435e0847a0b60b9a3 100644 --- a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/agenda/operation/AbstractDeleteCaseInstanceOperation.java +++ b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/agenda/operation/AbstractDeleteCaseInstanceOperation.java @@ -56,7 +56,9 @@ public abstract class AbstractDeleteCaseInstanceOperation extends AbstractChange } } } - CommandContextUtil.getCaseInstanceEntityManager(commandContext).deleteCaseInstanceAndRelatedData(caseInstanceEntity.getId()); + CommandContextUtil.getCaseInstanceEntityManager(commandContext).deleteCaseInstanceAndRelatedData(caseInstanceEntity.getId(), getDeleteReason()); } + protected abstract String getDeleteReason(); + } diff --git a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/agenda/operation/CompleteCaseInstanceOperation.java b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/agenda/operation/CompleteCaseInstanceOperation.java index 56f34ec69c2580915438c5dfb932302b0e156bd6..4f5d643839ea4c4f1afb38ac3a924a01b3983bd5 100644 --- a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/agenda/operation/CompleteCaseInstanceOperation.java +++ b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/agenda/operation/CompleteCaseInstanceOperation.java @@ -40,5 +40,10 @@ public class CompleteCaseInstanceOperation extends AbstractDeleteCaseInstanceOpe protected void changeStateForChildPlanItemInstance(PlanItemInstanceEntity planItemInstanceEntity) { CommandContextUtil.getAgenda(commandContext).planCompletePlanItemInstance(planItemInstanceEntity); } + + @Override + protected String getDeleteReason() { + return "cmmn-state-transition-complete-case"; + } } diff --git a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/agenda/operation/TerminateCaseInstanceOperation.java b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/agenda/operation/TerminateCaseInstanceOperation.java index fdbf0e2f3c139d97dea688176c9ecee59d27ccbc..f2aa0fa96fa54544132de844cbbc59dbaf35b68a 100644 --- a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/agenda/operation/TerminateCaseInstanceOperation.java +++ b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/agenda/operation/TerminateCaseInstanceOperation.java @@ -42,5 +42,10 @@ public class TerminateCaseInstanceOperation extends AbstractDeleteCaseInstanceOp CommandContextUtil.getAgenda(commandContext).planExitPlanItemInstance(planItemInstanceEntity); } } + + @Override + protected String getDeleteReason() { + return "cmmn-state-transition-terminate-case"; + } } diff --git a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/behavior/impl/HumanTaskActivityBehavior.java b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/behavior/impl/HumanTaskActivityBehavior.java index 1b13f7fdb0b45d54a4dd515f6cdf06f5ee37cb9c..14bbaa15b5d9dbf107c17cce4a1cebb7d14f4b69 100644 --- a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/behavior/impl/HumanTaskActivityBehavior.java +++ b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/behavior/impl/HumanTaskActivityBehavior.java @@ -21,6 +21,7 @@ import org.apache.commons.lang3.StringUtils; import org.flowable.cmmn.engine.delegate.DelegatePlanItemInstance; import org.flowable.cmmn.engine.impl.behavior.PlanItemActivityBehavior; import org.flowable.cmmn.engine.impl.persistence.entity.PlanItemInstanceEntity; +import org.flowable.cmmn.engine.impl.task.TaskHelper; import org.flowable.cmmn.engine.impl.util.CommandContextUtil; import org.flowable.cmmn.engine.runtime.PlanItemInstanceState; import org.flowable.cmmn.model.HumanTask; @@ -285,8 +286,7 @@ public class HumanTaskActivityBehavior extends TaskActivityBehavior implements P // Should be only one for (TaskEntity taskEntity : taskEntities) { if (!taskEntity.isDeleted()) { - taskService.deleteTask(taskEntity, true); - CommandContextUtil.getCmmnHistoryManager(commandContext).recordTaskEnd(taskEntity, null); + TaskHelper.deleteTask(taskEntity, null, false, true); } } @@ -299,7 +299,7 @@ public class HumanTaskActivityBehavior extends TaskActivityBehavior implements P TaskService taskService = CommandContextUtil.getTaskService(commandContext); List taskEntities = taskService.findTasksBySubScopeIdScopeType(planItemInstance.getId(), VariableScopeType.CMMN); for (TaskEntity taskEntity : taskEntities) { - taskService.deleteTask(taskEntity, true); + TaskHelper.deleteTask(taskEntity, "cmmn-state-transition-" + transition, false, true); } } } diff --git a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/persistence/entity/CaseDefinitionEntityManagerImpl.java b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/persistence/entity/CaseDefinitionEntityManagerImpl.java index 944a0e9694f3a39109e7a4ed9b7d9b62d4583b22..d69cd9074910911004d1d38bdc43a85a82033307 100644 --- a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/persistence/entity/CaseDefinitionEntityManagerImpl.java +++ b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/persistence/entity/CaseDefinitionEntityManagerImpl.java @@ -18,11 +18,14 @@ import java.util.List; import org.flowable.cmmn.engine.CmmnEngineConfiguration; import org.flowable.cmmn.engine.impl.persistence.entity.data.CaseDefinitionDataManager; import org.flowable.cmmn.engine.impl.repository.CaseDefinitionQueryImpl; -import org.flowable.cmmn.engine.impl.runtime.CaseInstanceQueryImpl; import org.flowable.cmmn.engine.repository.CaseDefinition; import org.flowable.cmmn.engine.repository.CaseDefinitionQuery; import org.flowable.cmmn.engine.runtime.CaseInstance; import org.flowable.engine.common.impl.persistence.entity.data.DataManager; +import org.flowable.task.service.history.HistoricTaskInstance; +import org.flowable.task.service.impl.HistoricTaskInstanceQueryImpl; +import org.flowable.task.service.impl.persistence.entity.HistoricTaskInstanceEntity; +import org.flowable.task.service.impl.persistence.entity.HistoricTaskInstanceEntityManager; import org.flowable.variable.service.impl.persistence.entity.HistoricVariableInstanceEntity; import org.flowable.variable.service.impl.persistence.entity.HistoricVariableInstanceEntityManager; import org.flowable.variable.service.type.VariableScopeType; @@ -83,12 +86,19 @@ public class CaseDefinitionEntityManagerImpl extends AbstractCmmnEntityManager caseInstances = caseInstanceEntityManager.findCaseInstancesByCaseDefinitionId(caseDefinitionId); for (CaseInstance caseInstance : caseInstances) { - caseInstanceEntityManager.deleteCaseInstanceAndRelatedData(caseInstance.getId()); + caseInstanceEntityManager.deleteCaseInstanceAndRelatedData(caseInstance.getId(), null); } if (cascadeHistory) { getHistoricMilestoneInstanceEntityManager().deleteByCaseDefinitionId(caseDefinitionId); + HistoricTaskInstanceEntityManager historicTaskInstanceEntityManager = getHistoricTaskInstanceEntityManager(); + List historicTaskInstances = historicTaskInstanceEntityManager + .findHistoricTaskInstancesByQueryCriteria(new HistoricTaskInstanceQueryImpl().scopeDefinitionId(caseDefinitionId).scopeType(VariableScopeType.CMMN)); + for (HistoricTaskInstance historicTaskInstance : historicTaskInstances) { + historicTaskInstanceEntityManager.delete((HistoricTaskInstanceEntity) historicTaskInstance); + } + HistoricCaseInstanceEntityManager historicCaseInstanceEntityManager = getHistoricCaseInstanceEntityManager(); List historicCaseInstanceEntities = historicCaseInstanceEntityManager.findHistoricCaseInstancesByCaseDefinitionId(caseDefinitionId); for (HistoricCaseInstanceEntity historicCaseInstanceEntity : historicCaseInstanceEntities) { diff --git a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/persistence/entity/CaseInstanceEntityManager.java b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/persistence/entity/CaseInstanceEntityManager.java index 7f7ac14c90c90588f9bcdd8b19419bcc2dc0386d..e38c8c00a11a3b083d31664c12799602cb7babef 100644 --- a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/persistence/entity/CaseInstanceEntityManager.java +++ b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/persistence/entity/CaseInstanceEntityManager.java @@ -33,6 +33,6 @@ public interface CaseInstanceEntityManager extends EntityManager taskEntities = taskEntityManager.findTasksByScopeIdAndScopeType(caseInstanceId, VariableScopeType.CMMN); for (TaskEntity taskEntity : taskEntities) { - taskEntityManager.delete(taskEntity); + TaskHelper.deleteTask(taskEntity, deleteReason, false, true); } // Sentry part instances diff --git a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/persistence/entity/data/impl/TableDataManagerImpl.java b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/persistence/entity/data/impl/TableDataManagerImpl.java index 4fd0a3dc2fa4ea0a53c5fca0439f7a1cab1df884..7bef4fa0b4665af17c096f2f8b01300171c92b8e 100644 --- a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/persistence/entity/data/impl/TableDataManagerImpl.java +++ b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/persistence/entity/data/impl/TableDataManagerImpl.java @@ -28,6 +28,10 @@ import org.flowable.cmmn.engine.impl.persistence.entity.SentryPartInstanceEntity import org.flowable.cmmn.engine.impl.persistence.entity.data.TableDataManager; import org.flowable.cmmn.engine.impl.util.CommandContextUtil; import org.flowable.engine.common.impl.persistence.entity.Entity; +import org.flowable.identitylink.service.impl.persistence.entity.HistoricIdentityLinkEntity; +import org.flowable.identitylink.service.impl.persistence.entity.IdentityLinkEntity; +import org.flowable.task.service.impl.persistence.entity.HistoricTaskInstanceEntity; +import org.flowable.task.service.impl.persistence.entity.TaskEntity; import org.flowable.variable.service.impl.persistence.entity.HistoricVariableInstanceEntity; import org.flowable.variable.service.impl.persistence.entity.VariableInstanceEntity; @@ -48,8 +52,13 @@ public class TableDataManagerImpl implements TableDataManager { entityToTableNameMap.put(MilestoneInstanceEntity.class, "ACT_CMMN_RU_MIL_INST"); entityToTableNameMap.put(HistoricCaseInstanceEntity.class, "ACT_CMMN_HI_CASE_INST"); entityToTableNameMap.put(HistoricMilestoneInstanceEntity.class, "ACT_CMMN_HI_MIL_INST"); + entityToTableNameMap.put(VariableInstanceEntity.class, "ACT_RU_VARIABLE"); entityToTableNameMap.put(HistoricVariableInstanceEntity.class, "ACT_HI_VARINST"); + entityToTableNameMap.put(TaskEntity.class, "ACT_RU_TASK"); + entityToTableNameMap.put(HistoricTaskInstanceEntity.class, "ACT_HI_TASKINST"); + entityToTableNameMap.put(IdentityLinkEntity.class, "ACT_RU_IDENTITYLINK"); + entityToTableNameMap.put(HistoricIdentityLinkEntity.class, "ACT_HI_IDENTITYLINK"); } public TableDataManagerImpl() { diff --git a/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/task/TaskHelper.java b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/task/TaskHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..bbea022925bba6c0d7015ef7402a18f6732caad0 --- /dev/null +++ b/modules/flowable-cmmn-engine/src/main/java/org/flowable/cmmn/engine/impl/task/TaskHelper.java @@ -0,0 +1,47 @@ +/* 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.flowable.cmmn.engine.impl.task; + +import java.util.List; + +import org.flowable.cmmn.engine.impl.util.CommandContextUtil; +import org.flowable.engine.common.impl.interceptor.CommandContext; +import org.flowable.task.service.Task; +import org.flowable.task.service.TaskService; +import org.flowable.task.service.impl.persistence.entity.TaskEntity; + +/** + * @author Joram Barrez + */ +public class TaskHelper { + + public static void deleteTask(TaskEntity task, String deleteReason, boolean cascade, boolean fireEvents) { + if (!task.isDeleted()) { + task.setDeleted(true); + + CommandContext commandContext = CommandContextUtil.getCommandContext(); + TaskService taskService = CommandContextUtil.getTaskService(commandContext); + List subTasks = taskService.findTasksByParentTaskId(task.getId()); + for (Task subTask : subTasks) { + deleteTask((TaskEntity) subTask, deleteReason, cascade, fireEvents); + } + + CommandContextUtil.getIdentityLinkService(commandContext).deleteIdentityLinksByTaskId(task.getId()); + CommandContextUtil.getVariableService(commandContext).deleteVariableInstanceMap(task.getVariableInstanceEntities()); + CommandContextUtil.getCmmnHistoryManager(commandContext).recordTaskEnd(task, deleteReason); + CommandContextUtil.getTaskService().deleteTask(task, fireEvents); + } + } + + +} diff --git a/modules/flowable-cmmn-engine/src/test/java/org/flowable/cmmn/test/runtime/HumanTaskTest.java b/modules/flowable-cmmn-engine/src/test/java/org/flowable/cmmn/test/runtime/HumanTaskTest.java index 3ef0f216ed43d9f1203e04a308d6544308686114..950ec770d71c5167b54e8a1191f5adc8df9f3658 100644 --- a/modules/flowable-cmmn-engine/src/test/java/org/flowable/cmmn/test/runtime/HumanTaskTest.java +++ b/modules/flowable-cmmn-engine/src/test/java/org/flowable/cmmn/test/runtime/HumanTaskTest.java @@ -23,6 +23,7 @@ import org.flowable.cmmn.engine.test.CmmnDeployment; import org.flowable.cmmn.engine.test.FlowableCmmnTestCase; import org.flowable.engine.common.impl.identity.Authentication; import org.flowable.task.service.Task; +import org.flowable.task.service.history.HistoricTaskInstance; import org.junit.Test; /** @@ -87,6 +88,16 @@ public class HumanTaskTest extends FlowableCmmnTestCase { assertEquals(0, cmmnTaskService.createTaskQuery().caseInstanceId(caseInstance.getId()).count()); assertCaseInstanceEnded(caseInstance); + List historicTaskInstances = cmmnHistoryService.createHistoricTaskInstanceQuery().list(); + assertEquals(3, historicTaskInstances.size()); + for (HistoricTaskInstance historicTaskInstance : historicTaskInstances) { + assertNotNull(historicTaskInstance.getStartTime()); + assertNotNull(historicTaskInstance.getEndTime()); + if (!historicTaskInstance.getName().equals("A")) { + assertEquals("cmmn-state-transition-terminate-case", historicTaskInstance.getDeleteReason()); + } + } + // Completing C should delete B CaseInstance caseInstance2 = cmmnRuntimeService.createCaseInstanceBuilder() .caseDefinitionKey("humanTaskCompletionExits") @@ -100,6 +111,15 @@ public class HumanTaskTest extends FlowableCmmnTestCase { cmmnTaskService.complete(taskA.getId()); assertCaseInstanceEnded(caseInstance2); + historicTaskInstances = cmmnHistoryService.createHistoricTaskInstanceQuery().caseInstanceId(caseInstance2.getId()).list(); + assertEquals(3, historicTaskInstances.size()); + for (HistoricTaskInstance historicTaskInstance : historicTaskInstances) { + assertNotNull(historicTaskInstance.getStartTime()); + assertNotNull(historicTaskInstance.getEndTime()); + if (historicTaskInstance.getName().equals("B")) { + assertEquals("cmmn-state-transition-exit", historicTaskInstance.getDeleteReason()); + } + } } } diff --git a/modules/flowable-engine/src/main/resources/org/flowable/db/upgrade/flowable.mssql.upgradestep.6120.to.6200.history.sql b/modules/flowable-engine/src/main/resources/org/flowable/db/upgrade/flowable.mssql.upgradestep.6120.to.6200.history.sql index c136406fa36dc38f1262b6d695b2049d1b37f3be..8079378a4a158952d1a7cb0364cb9007162f1fd3 100644 --- a/modules/flowable-engine/src/main/resources/org/flowable/db/upgrade/flowable.mssql.upgradestep.6120.to.6200.history.sql +++ b/modules/flowable-engine/src/main/resources/org/flowable/db/upgrade/flowable.mssql.upgradestep.6120.to.6200.history.sql @@ -1,2 +1,2 @@ -alter table ACT_HI_PROCINST add column CALLBACK_ID_ nvarchar(255); -alter table ACT_HI_PROCINST add column CALLBACK_TYPE_ nvarchar(255); \ No newline at end of file +alter table ACT_HI_PROCINST add CALLBACK_ID_ nvarchar(255); +alter table ACT_HI_PROCINST add CALLBACK_TYPE_ nvarchar(255); \ No newline at end of file diff --git a/modules/flowable-identitylink-service/src/main/java/org/flowable/identitylink/service/impl/persistence/entity/IdentityLinkEntityManagerImpl.java b/modules/flowable-identitylink-service/src/main/java/org/flowable/identitylink/service/impl/persistence/entity/IdentityLinkEntityManagerImpl.java index 213844bff262041c133b2c33d4651b03c58d800b..3193e383630e8b114ad154e1744fbd214b4a6df0 100644 --- a/modules/flowable-identitylink-service/src/main/java/org/flowable/identitylink/service/impl/persistence/entity/IdentityLinkEntityManagerImpl.java +++ b/modules/flowable-identitylink-service/src/main/java/org/flowable/identitylink/service/impl/persistence/entity/IdentityLinkEntityManagerImpl.java @@ -18,6 +18,7 @@ import java.util.Collection; import java.util.List; import org.flowable.engine.common.api.delegate.event.FlowableEngineEventType; +import org.flowable.engine.common.api.delegate.event.FlowableEventDispatcher; import org.flowable.engine.common.impl.persistence.entity.data.DataManager; import org.flowable.identitylink.service.IdentityLinkServiceConfiguration; import org.flowable.identitylink.service.IdentityLinkType; @@ -47,7 +48,8 @@ public class IdentityLinkEntityManagerImpl extends AbstractEntityManager findIdentityLinkByProcessDefinitionUserAndGroup(String processDefinitionId, String userId, String groupId) { return identityLinkDataManager.findIdentityLinkByProcessDefinitionUserAndGroup(processDefinitionId, userId, groupId); } - + @Override public IdentityLinkEntity addProcessInstanceIdentityLink(String processInstanceId, String userId, String groupId, String type) { IdentityLinkEntity identityLinkEntity = identityLinkDataManager.create(); diff --git a/modules/flowable-variable-service/src/main/resources/org/flowable/variable/db/upgrade/flowable.mssql.upgradestep.6120.to.6200.variable.history.sql b/modules/flowable-variable-service/src/main/resources/org/flowable/variable/db/upgrade/flowable.mssql.upgradestep.6120.to.6200.variable.history.sql index 43444d64e7209f8ceb2538d6ffd60ecf55f17256..e2d76668c63325624241b634479895f60ea28d5b 100644 --- a/modules/flowable-variable-service/src/main/resources/org/flowable/variable/db/upgrade/flowable.mssql.upgradestep.6120.to.6200.variable.history.sql +++ b/modules/flowable-variable-service/src/main/resources/org/flowable/variable/db/upgrade/flowable.mssql.upgradestep.6120.to.6200.variable.history.sql @@ -1,6 +1,6 @@ -alter table ACT_HI_VARINST add column SCOPE_ID_ nvarchar(255); -alter table ACT_HI_VARINST add column SUB_SCOPE_ID_ nvarchar(255); -alter table ACT_HI_VARINST add column SCOPE_TYPE_ nvarchar(255); +alter table ACT_HI_VARINST add SCOPE_ID_ nvarchar(255); +alter table ACT_HI_VARINST add SUB_SCOPE_ID_ nvarchar(255); +alter table ACT_HI_VARINST add SCOPE_TYPE_ nvarchar(255); create index ACT_IDX_HI_VAR_SCOPE_ID_TYPE on ACT_HI_VARINST(SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_HI_VAR_SUB_ID_TYPE on ACT_HI_VARINST(SUB_SCOPE_ID_, SCOPE_TYPE_); \ No newline at end of file diff --git a/modules/flowable-variable-service/src/main/resources/org/flowable/variable/db/upgrade/flowable.mssql.upgradestep.6120.to.6200.variable.sql b/modules/flowable-variable-service/src/main/resources/org/flowable/variable/db/upgrade/flowable.mssql.upgradestep.6120.to.6200.variable.sql index 8d20b3e93e70ca1f8549deaca8527a8b043ace83..905d7a00995f741e4476d6edc6db33ee001b7338 100644 --- a/modules/flowable-variable-service/src/main/resources/org/flowable/variable/db/upgrade/flowable.mssql.upgradestep.6120.to.6200.variable.sql +++ b/modules/flowable-variable-service/src/main/resources/org/flowable/variable/db/upgrade/flowable.mssql.upgradestep.6120.to.6200.variable.sql @@ -1,6 +1,6 @@ -alter table ACT_RU_VARIABLE add column SCOPE_ID_ nvarchar(255); -alter table ACT_RU_VARIABLE add column SUB_SCOPE_ID_ nvarchar(255); -alter table ACT_RU_VARIABLE add column SCOPE_TYPE_ nvarchar(255); +alter table ACT_RU_VARIABLE add SCOPE_ID_ nvarchar(255); +alter table ACT_RU_VARIABLE add SUB_SCOPE_ID_ nvarchar(255); +alter table ACT_RU_VARIABLE add SCOPE_TYPE_ nvarchar(255); create index ACT_IDX_RU_VAR_SCOPE_ID_TYPE on ACT_RU_VARIABLE(SCOPE_ID_, SCOPE_TYPE_); create index ACT_IDX_RU_VAR_SUB_ID_TYPE on ACT_RU_VARIABLE(SUB_SCOPE_ID_, SCOPE_TYPE_);