@SuppressWarnings({"unchecked", "rawtypes"})
public void deleteTasksByProcessInstanceId(String processInstanceId, String deleteReason, boolean cascade) {
List<TaskEntity> tasks = (List) getDbSqlSession()
.createTaskQuery()
.processInstanceId(processInstanceId)
.list();
String reason = (deleteReason == null || deleteReason.length() == 0) ? TaskEntity.DELETE_REASON_DELETED : deleteReason;
CommandContext commandContext = Context.getCommandContext();
for (TaskEntity task : tasks) {
if (commandContext.getProcessEngineConfiguration().getEventDispatcher().isEnabled()) {
commandContext.getProcessEngineConfiguration().getEventDispatcher().dispatchEvent(
ActivitiEventBuilder.createActivityCancelledEvent(
task.getExecution().getActivityId(),
task.getName(),
task.getExecutionId(),
task.getProcessInstanceId(),
task.getProcessDefinitionId(),
"userTask", UserTaskActivityBehavior.class.getName(), deleteReason));
}
deleteTask(task, reason, cascade);
}
}