提交 3ceb36a1 编写于 作者: J Joram Barrez

Cmmn: fix end time of historic task not always set + identitylinks not cleaned...

Cmmn: fix end time of historic task not always set + identitylinks not cleaned up after test + sql server upgrade fix
上级 ea842503
...@@ -25,6 +25,7 @@ import org.flowable.cmmn.engine.impl.persistence.entity.PlanItemInstanceEntityMa ...@@ -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.context.Context;
import org.flowable.engine.common.impl.db.DbSqlSession; import org.flowable.engine.common.impl.db.DbSqlSession;
import org.flowable.engine.common.impl.interceptor.CommandContext; 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.HistoricVariableInstanceEntityManager;
import org.flowable.variable.service.impl.persistence.entity.VariableInstanceEntityManager; import org.flowable.variable.service.impl.persistence.entity.VariableInstanceEntityManager;
...@@ -90,6 +91,10 @@ public abstract class AbstractCmmnManager { ...@@ -90,6 +91,10 @@ public abstract class AbstractCmmnManager {
protected HistoricVariableInstanceEntityManager getHistoricVariableInstanceEntityManager() { protected HistoricVariableInstanceEntityManager getHistoricVariableInstanceEntityManager() {
return cmmnEngineConfiguration.getVariableServiceConfiguration().getHistoricVariableInstanceEntityManager(); return cmmnEngineConfiguration.getVariableServiceConfiguration().getHistoricVariableInstanceEntityManager();
} }
protected HistoricTaskInstanceEntityManager getHistoricTaskInstanceEntityManager() {
return cmmnEngineConfiguration.getTaskServiceConfiguration().getHistoricTaskInstanceEntityManager();
}
protected CmmnEngineConfiguration getCmmnEngineConfiguration() { protected CmmnEngineConfiguration getCmmnEngineConfiguration() {
return cmmnEngineConfiguration; return cmmnEngineConfiguration;
......
...@@ -56,7 +56,9 @@ public abstract class AbstractDeleteCaseInstanceOperation extends AbstractChange ...@@ -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();
} }
...@@ -40,5 +40,10 @@ public class CompleteCaseInstanceOperation extends AbstractDeleteCaseInstanceOpe ...@@ -40,5 +40,10 @@ public class CompleteCaseInstanceOperation extends AbstractDeleteCaseInstanceOpe
protected void changeStateForChildPlanItemInstance(PlanItemInstanceEntity planItemInstanceEntity) { protected void changeStateForChildPlanItemInstance(PlanItemInstanceEntity planItemInstanceEntity) {
CommandContextUtil.getAgenda(commandContext).planCompletePlanItemInstance(planItemInstanceEntity); CommandContextUtil.getAgenda(commandContext).planCompletePlanItemInstance(planItemInstanceEntity);
} }
@Override
protected String getDeleteReason() {
return "cmmn-state-transition-complete-case";
}
} }
...@@ -42,5 +42,10 @@ public class TerminateCaseInstanceOperation extends AbstractDeleteCaseInstanceOp ...@@ -42,5 +42,10 @@ public class TerminateCaseInstanceOperation extends AbstractDeleteCaseInstanceOp
CommandContextUtil.getAgenda(commandContext).planExitPlanItemInstance(planItemInstanceEntity); CommandContextUtil.getAgenda(commandContext).planExitPlanItemInstance(planItemInstanceEntity);
} }
} }
@Override
protected String getDeleteReason() {
return "cmmn-state-transition-terminate-case";
}
} }
...@@ -21,6 +21,7 @@ import org.apache.commons.lang3.StringUtils; ...@@ -21,6 +21,7 @@ import org.apache.commons.lang3.StringUtils;
import org.flowable.cmmn.engine.delegate.DelegatePlanItemInstance; import org.flowable.cmmn.engine.delegate.DelegatePlanItemInstance;
import org.flowable.cmmn.engine.impl.behavior.PlanItemActivityBehavior; import org.flowable.cmmn.engine.impl.behavior.PlanItemActivityBehavior;
import org.flowable.cmmn.engine.impl.persistence.entity.PlanItemInstanceEntity; 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.impl.util.CommandContextUtil;
import org.flowable.cmmn.engine.runtime.PlanItemInstanceState; import org.flowable.cmmn.engine.runtime.PlanItemInstanceState;
import org.flowable.cmmn.model.HumanTask; import org.flowable.cmmn.model.HumanTask;
...@@ -285,8 +286,7 @@ public class HumanTaskActivityBehavior extends TaskActivityBehavior implements P ...@@ -285,8 +286,7 @@ public class HumanTaskActivityBehavior extends TaskActivityBehavior implements P
// Should be only one // Should be only one
for (TaskEntity taskEntity : taskEntities) { for (TaskEntity taskEntity : taskEntities) {
if (!taskEntity.isDeleted()) { if (!taskEntity.isDeleted()) {
taskService.deleteTask(taskEntity, true); TaskHelper.deleteTask(taskEntity, null, false, true);
CommandContextUtil.getCmmnHistoryManager(commandContext).recordTaskEnd(taskEntity, null);
} }
} }
...@@ -299,7 +299,7 @@ public class HumanTaskActivityBehavior extends TaskActivityBehavior implements P ...@@ -299,7 +299,7 @@ public class HumanTaskActivityBehavior extends TaskActivityBehavior implements P
TaskService taskService = CommandContextUtil.getTaskService(commandContext); TaskService taskService = CommandContextUtil.getTaskService(commandContext);
List<TaskEntity> taskEntities = taskService.findTasksBySubScopeIdScopeType(planItemInstance.getId(), VariableScopeType.CMMN); List<TaskEntity> taskEntities = taskService.findTasksBySubScopeIdScopeType(planItemInstance.getId(), VariableScopeType.CMMN);
for (TaskEntity taskEntity : taskEntities) { for (TaskEntity taskEntity : taskEntities) {
taskService.deleteTask(taskEntity, true); TaskHelper.deleteTask(taskEntity, "cmmn-state-transition-" + transition, false, true);
} }
} }
} }
......
...@@ -18,11 +18,14 @@ import java.util.List; ...@@ -18,11 +18,14 @@ import java.util.List;
import org.flowable.cmmn.engine.CmmnEngineConfiguration; import org.flowable.cmmn.engine.CmmnEngineConfiguration;
import org.flowable.cmmn.engine.impl.persistence.entity.data.CaseDefinitionDataManager; import org.flowable.cmmn.engine.impl.persistence.entity.data.CaseDefinitionDataManager;
import org.flowable.cmmn.engine.impl.repository.CaseDefinitionQueryImpl; 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.CaseDefinition;
import org.flowable.cmmn.engine.repository.CaseDefinitionQuery; import org.flowable.cmmn.engine.repository.CaseDefinitionQuery;
import org.flowable.cmmn.engine.runtime.CaseInstance; import org.flowable.cmmn.engine.runtime.CaseInstance;
import org.flowable.engine.common.impl.persistence.entity.data.DataManager; 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.HistoricVariableInstanceEntity;
import org.flowable.variable.service.impl.persistence.entity.HistoricVariableInstanceEntityManager; import org.flowable.variable.service.impl.persistence.entity.HistoricVariableInstanceEntityManager;
import org.flowable.variable.service.type.VariableScopeType; import org.flowable.variable.service.type.VariableScopeType;
...@@ -83,12 +86,19 @@ public class CaseDefinitionEntityManagerImpl extends AbstractCmmnEntityManager<C ...@@ -83,12 +86,19 @@ public class CaseDefinitionEntityManagerImpl extends AbstractCmmnEntityManager<C
List<CaseInstanceEntity> caseInstances = caseInstanceEntityManager.findCaseInstancesByCaseDefinitionId(caseDefinitionId); List<CaseInstanceEntity> caseInstances = caseInstanceEntityManager.findCaseInstancesByCaseDefinitionId(caseDefinitionId);
for (CaseInstance caseInstance : caseInstances) { for (CaseInstance caseInstance : caseInstances) {
caseInstanceEntityManager.deleteCaseInstanceAndRelatedData(caseInstance.getId()); caseInstanceEntityManager.deleteCaseInstanceAndRelatedData(caseInstance.getId(), null);
} }
if (cascadeHistory) { if (cascadeHistory) {
getHistoricMilestoneInstanceEntityManager().deleteByCaseDefinitionId(caseDefinitionId); getHistoricMilestoneInstanceEntityManager().deleteByCaseDefinitionId(caseDefinitionId);
HistoricTaskInstanceEntityManager historicTaskInstanceEntityManager = getHistoricTaskInstanceEntityManager();
List<HistoricTaskInstance> historicTaskInstances = historicTaskInstanceEntityManager
.findHistoricTaskInstancesByQueryCriteria(new HistoricTaskInstanceQueryImpl().scopeDefinitionId(caseDefinitionId).scopeType(VariableScopeType.CMMN));
for (HistoricTaskInstance historicTaskInstance : historicTaskInstances) {
historicTaskInstanceEntityManager.delete((HistoricTaskInstanceEntity) historicTaskInstance);
}
HistoricCaseInstanceEntityManager historicCaseInstanceEntityManager = getHistoricCaseInstanceEntityManager(); HistoricCaseInstanceEntityManager historicCaseInstanceEntityManager = getHistoricCaseInstanceEntityManager();
List<HistoricCaseInstanceEntity> historicCaseInstanceEntities = historicCaseInstanceEntityManager.findHistoricCaseInstancesByCaseDefinitionId(caseDefinitionId); List<HistoricCaseInstanceEntity> historicCaseInstanceEntities = historicCaseInstanceEntityManager.findHistoricCaseInstancesByCaseDefinitionId(caseDefinitionId);
for (HistoricCaseInstanceEntity historicCaseInstanceEntity : historicCaseInstanceEntities) { for (HistoricCaseInstanceEntity historicCaseInstanceEntity : historicCaseInstanceEntities) {
......
...@@ -33,6 +33,6 @@ public interface CaseInstanceEntityManager extends EntityManager<CaseInstanceEnt ...@@ -33,6 +33,6 @@ public interface CaseInstanceEntityManager extends EntityManager<CaseInstanceEnt
void deleteByCaseDefinitionId(String caseDefinitionId); void deleteByCaseDefinitionId(String caseDefinitionId);
void deleteCaseInstanceAndRelatedData(String caseInstanceId); void deleteCaseInstanceAndRelatedData(String caseInstanceId, String deleteReason);
} }
\ No newline at end of file
...@@ -18,6 +18,7 @@ import java.util.List; ...@@ -18,6 +18,7 @@ import java.util.List;
import org.flowable.cmmn.engine.CmmnEngineConfiguration; import org.flowable.cmmn.engine.CmmnEngineConfiguration;
import org.flowable.cmmn.engine.impl.persistence.entity.data.CaseInstanceDataManager; import org.flowable.cmmn.engine.impl.persistence.entity.data.CaseInstanceDataManager;
import org.flowable.cmmn.engine.impl.runtime.CaseInstanceQueryImpl; import org.flowable.cmmn.engine.impl.runtime.CaseInstanceQueryImpl;
import org.flowable.cmmn.engine.impl.task.TaskHelper;
import org.flowable.cmmn.engine.impl.util.CommandContextUtil; import org.flowable.cmmn.engine.impl.util.CommandContextUtil;
import org.flowable.cmmn.engine.runtime.CaseInstance; import org.flowable.cmmn.engine.runtime.CaseInstance;
import org.flowable.cmmn.engine.runtime.CaseInstanceQuery; import org.flowable.cmmn.engine.runtime.CaseInstanceQuery;
...@@ -72,11 +73,11 @@ public class CaseInstanceEntityManagerImpl extends AbstractCmmnEntityManager<Cas ...@@ -72,11 +73,11 @@ public class CaseInstanceEntityManagerImpl extends AbstractCmmnEntityManager<Cas
} }
@Override @Override
public void deleteCaseInstanceAndRelatedData(String caseInstanceId) { public void deleteCaseInstanceAndRelatedData(String caseInstanceId, String deleteReason) {
CaseInstanceEntity caseInstanceEntity = caseInstanceDataManager.findById(caseInstanceId); CaseInstanceEntity caseInstanceEntity = caseInstanceDataManager.findById(caseInstanceId);
CommandContext commandContext = CommandContextUtil.getCommandContext(); CommandContext commandContext = CommandContextUtil.getCommandContext();
// Variables // Variables
VariableInstanceEntityManager variableInstanceEntityManager VariableInstanceEntityManager variableInstanceEntityManager
= CommandContextUtil.getVariableServiceConfiguration(commandContext).getVariableInstanceEntityManager(); = CommandContextUtil.getVariableServiceConfiguration(commandContext).getVariableInstanceEntityManager();
...@@ -90,7 +91,7 @@ public class CaseInstanceEntityManagerImpl extends AbstractCmmnEntityManager<Cas ...@@ -90,7 +91,7 @@ public class CaseInstanceEntityManagerImpl extends AbstractCmmnEntityManager<Cas
TaskEntityManager taskEntityManager = CommandContextUtil.getTaskServiceConfiguration(commandContext).getTaskEntityManager(); TaskEntityManager taskEntityManager = CommandContextUtil.getTaskServiceConfiguration(commandContext).getTaskEntityManager();
List<TaskEntity> taskEntities = taskEntityManager.findTasksByScopeIdAndScopeType(caseInstanceId, VariableScopeType.CMMN); List<TaskEntity> taskEntities = taskEntityManager.findTasksByScopeIdAndScopeType(caseInstanceId, VariableScopeType.CMMN);
for (TaskEntity taskEntity : taskEntities) { for (TaskEntity taskEntity : taskEntities) {
taskEntityManager.delete(taskEntity); TaskHelper.deleteTask(taskEntity, deleteReason, false, true);
} }
// Sentry part instances // Sentry part instances
......
...@@ -28,6 +28,10 @@ import org.flowable.cmmn.engine.impl.persistence.entity.SentryPartInstanceEntity ...@@ -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.persistence.entity.data.TableDataManager;
import org.flowable.cmmn.engine.impl.util.CommandContextUtil; import org.flowable.cmmn.engine.impl.util.CommandContextUtil;
import org.flowable.engine.common.impl.persistence.entity.Entity; 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.HistoricVariableInstanceEntity;
import org.flowable.variable.service.impl.persistence.entity.VariableInstanceEntity; import org.flowable.variable.service.impl.persistence.entity.VariableInstanceEntity;
...@@ -48,8 +52,13 @@ public class TableDataManagerImpl implements TableDataManager { ...@@ -48,8 +52,13 @@ public class TableDataManagerImpl implements TableDataManager {
entityToTableNameMap.put(MilestoneInstanceEntity.class, "ACT_CMMN_RU_MIL_INST"); entityToTableNameMap.put(MilestoneInstanceEntity.class, "ACT_CMMN_RU_MIL_INST");
entityToTableNameMap.put(HistoricCaseInstanceEntity.class, "ACT_CMMN_HI_CASE_INST"); entityToTableNameMap.put(HistoricCaseInstanceEntity.class, "ACT_CMMN_HI_CASE_INST");
entityToTableNameMap.put(HistoricMilestoneInstanceEntity.class, "ACT_CMMN_HI_MIL_INST"); entityToTableNameMap.put(HistoricMilestoneInstanceEntity.class, "ACT_CMMN_HI_MIL_INST");
entityToTableNameMap.put(VariableInstanceEntity.class, "ACT_RU_VARIABLE"); entityToTableNameMap.put(VariableInstanceEntity.class, "ACT_RU_VARIABLE");
entityToTableNameMap.put(HistoricVariableInstanceEntity.class, "ACT_HI_VARINST"); 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() { public TableDataManagerImpl() {
......
/* 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<Task> 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);
}
}
}
...@@ -23,6 +23,7 @@ import org.flowable.cmmn.engine.test.CmmnDeployment; ...@@ -23,6 +23,7 @@ import org.flowable.cmmn.engine.test.CmmnDeployment;
import org.flowable.cmmn.engine.test.FlowableCmmnTestCase; import org.flowable.cmmn.engine.test.FlowableCmmnTestCase;
import org.flowable.engine.common.impl.identity.Authentication; import org.flowable.engine.common.impl.identity.Authentication;
import org.flowable.task.service.Task; import org.flowable.task.service.Task;
import org.flowable.task.service.history.HistoricTaskInstance;
import org.junit.Test; import org.junit.Test;
/** /**
...@@ -87,6 +88,16 @@ public class HumanTaskTest extends FlowableCmmnTestCase { ...@@ -87,6 +88,16 @@ public class HumanTaskTest extends FlowableCmmnTestCase {
assertEquals(0, cmmnTaskService.createTaskQuery().caseInstanceId(caseInstance.getId()).count()); assertEquals(0, cmmnTaskService.createTaskQuery().caseInstanceId(caseInstance.getId()).count());
assertCaseInstanceEnded(caseInstance); assertCaseInstanceEnded(caseInstance);
List<HistoricTaskInstance> 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 // Completing C should delete B
CaseInstance caseInstance2 = cmmnRuntimeService.createCaseInstanceBuilder() CaseInstance caseInstance2 = cmmnRuntimeService.createCaseInstanceBuilder()
.caseDefinitionKey("humanTaskCompletionExits") .caseDefinitionKey("humanTaskCompletionExits")
...@@ -100,6 +111,15 @@ public class HumanTaskTest extends FlowableCmmnTestCase { ...@@ -100,6 +111,15 @@ public class HumanTaskTest extends FlowableCmmnTestCase {
cmmnTaskService.complete(taskA.getId()); cmmnTaskService.complete(taskA.getId());
assertCaseInstanceEnded(caseInstance2); 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());
}
}
} }
} }
alter table ACT_HI_PROCINST add column CALLBACK_ID_ nvarchar(255); alter table ACT_HI_PROCINST add CALLBACK_ID_ nvarchar(255);
alter table ACT_HI_PROCINST add column CALLBACK_TYPE_ nvarchar(255); alter table ACT_HI_PROCINST add CALLBACK_TYPE_ nvarchar(255);
\ No newline at end of file \ No newline at end of file
...@@ -18,6 +18,7 @@ import java.util.Collection; ...@@ -18,6 +18,7 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import org.flowable.engine.common.api.delegate.event.FlowableEngineEventType; 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.engine.common.impl.persistence.entity.data.DataManager;
import org.flowable.identitylink.service.IdentityLinkServiceConfiguration; import org.flowable.identitylink.service.IdentityLinkServiceConfiguration;
import org.flowable.identitylink.service.IdentityLinkType; import org.flowable.identitylink.service.IdentityLinkType;
...@@ -47,7 +48,8 @@ public class IdentityLinkEntityManagerImpl extends AbstractEntityManager<Identit ...@@ -47,7 +48,8 @@ public class IdentityLinkEntityManagerImpl extends AbstractEntityManager<Identit
public void deleteIdentityLink(IdentityLinkEntity identityLink) { public void deleteIdentityLink(IdentityLinkEntity identityLink) {
delete(identityLink, false); delete(identityLink, false);
if (getEventDispatcher().isEnabled()) { FlowableEventDispatcher eventDispatcher = getEventDispatcher();
if (eventDispatcher != null && eventDispatcher.isEnabled()) {
getEventDispatcher().dispatchEvent(FlowableIdentityLinkEventBuilder.createEntityEvent(FlowableEngineEventType.ENTITY_DELETED, identityLink)); getEventDispatcher().dispatchEvent(FlowableIdentityLinkEventBuilder.createEntityEvent(FlowableEngineEventType.ENTITY_DELETED, identityLink));
} }
} }
...@@ -81,7 +83,7 @@ public class IdentityLinkEntityManagerImpl extends AbstractEntityManager<Identit ...@@ -81,7 +83,7 @@ public class IdentityLinkEntityManagerImpl extends AbstractEntityManager<Identit
public List<IdentityLinkEntity> findIdentityLinkByProcessDefinitionUserAndGroup(String processDefinitionId, String userId, String groupId) { public List<IdentityLinkEntity> findIdentityLinkByProcessDefinitionUserAndGroup(String processDefinitionId, String userId, String groupId) {
return identityLinkDataManager.findIdentityLinkByProcessDefinitionUserAndGroup(processDefinitionId, userId, groupId); return identityLinkDataManager.findIdentityLinkByProcessDefinitionUserAndGroup(processDefinitionId, userId, groupId);
} }
@Override @Override
public IdentityLinkEntity addProcessInstanceIdentityLink(String processInstanceId, String userId, String groupId, String type) { public IdentityLinkEntity addProcessInstanceIdentityLink(String processInstanceId, String userId, String groupId, String type) {
IdentityLinkEntity identityLinkEntity = identityLinkDataManager.create(); IdentityLinkEntity identityLinkEntity = identityLinkDataManager.create();
......
alter table ACT_HI_VARINST add column SCOPE_ID_ nvarchar(255); alter table ACT_HI_VARINST add SCOPE_ID_ nvarchar(255);
alter table ACT_HI_VARINST add column SUB_SCOPE_ID_ nvarchar(255); alter table ACT_HI_VARINST add SUB_SCOPE_ID_ nvarchar(255);
alter table ACT_HI_VARINST add column SCOPE_TYPE_ 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_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_); create index ACT_IDX_HI_VAR_SUB_ID_TYPE on ACT_HI_VARINST(SUB_SCOPE_ID_, SCOPE_TYPE_);
\ No newline at end of file
alter table ACT_RU_VARIABLE add column SCOPE_ID_ nvarchar(255); alter table ACT_RU_VARIABLE add SCOPE_ID_ nvarchar(255);
alter table ACT_RU_VARIABLE add column SUB_SCOPE_ID_ nvarchar(255); alter table ACT_RU_VARIABLE add SUB_SCOPE_ID_ nvarchar(255);
alter table ACT_RU_VARIABLE add column SCOPE_TYPE_ 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_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_); create index ACT_IDX_RU_VAR_SUB_ID_TYPE on ACT_RU_VARIABLE(SUB_SCOPE_ID_, SCOPE_TYPE_);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册