Search in sources :

Example 1 with AssignmentType

use of org.kie.api.task.TaskLifeCycleEventListener.AssignmentType in project jbpm by kiegroup.

the class AddPeopleAssignmentsCommand method execute.

@Override
public Void execute(Context cntxt) {
    TaskContext context = (TaskContext) cntxt;
    TaskEventSupport taskEventSupport = context.getTaskEventSupport();
    Task task = context.getTaskQueryService().getTaskInstanceById(taskId);
    // security check
    if (!isBusinessAdmin(userId, task.getPeopleAssignments().getBusinessAdministrators(), context)) {
        throw new PermissionDeniedException("User " + userId + " is not business admin of task " + taskId);
    }
    List<OrganizationalEntity> entityList = Arrays.asList(entities);
    AssignmentType assignmentType = null;
    switch(type) {
        case POT_OWNER:
            if (removeExisting) {
                task.getPeopleAssignments().getPotentialOwners().clear();
            }
            task.getPeopleAssignments().getPotentialOwners().addAll(entityList);
            assignmentType = AssignmentType.POT_OWNER;
            break;
        case EXCL_OWNER:
            if (removeExisting) {
                ((InternalPeopleAssignments) task.getPeopleAssignments()).getExcludedOwners().clear();
            }
            ((InternalPeopleAssignments) task.getPeopleAssignments()).getExcludedOwners().addAll(entityList);
            assignmentType = AssignmentType.EXCL_OWNER;
            break;
        case ADMIN:
            if (removeExisting) {
                task.getPeopleAssignments().getBusinessAdministrators().clear();
            }
            task.getPeopleAssignments().getBusinessAdministrators().addAll(entityList);
            assignmentType = AssignmentType.ADMIN;
            break;
        default:
            break;
    }
    taskEventSupport.fireBeforeTaskAssignmentsAddedEvent(task, context, assignmentType, entityList);
    doCallbackOperationForPeopleAssignments(((InternalPeopleAssignments) task.getPeopleAssignments()), context);
    taskEventSupport.fireAfterTaskAssignmentsAddedEvent(task, context, assignmentType, entityList);
    return null;
}
Also used : Task(org.kie.api.task.model.Task) InternalPeopleAssignments(org.kie.internal.task.api.model.InternalPeopleAssignments) TaskContext(org.jbpm.services.task.commands.TaskContext) OrganizationalEntity(org.kie.api.task.model.OrganizationalEntity) AssignmentType(org.kie.api.task.TaskLifeCycleEventListener.AssignmentType) PermissionDeniedException(org.jbpm.services.task.exception.PermissionDeniedException) TaskEventSupport(org.jbpm.services.task.events.TaskEventSupport)

Example 2 with AssignmentType

use of org.kie.api.task.TaskLifeCycleEventListener.AssignmentType in project jbpm by kiegroup.

the class RemovePeopleAssignmentsCommand method execute.

@Override
public Void execute(Context cntxt) {
    TaskContext context = (TaskContext) cntxt;
    TaskEventSupport taskEventSupport = context.getTaskEventSupport();
    Task task = context.getTaskQueryService().getTaskInstanceById(taskId);
    // security check
    if (!isBusinessAdmin(userId, task.getPeopleAssignments().getBusinessAdministrators(), context)) {
        throw new PermissionDeniedException("User " + userId + " is not business admin of task " + taskId);
    }
    List<OrganizationalEntity> entityList = Arrays.asList(entities);
    AssignmentType assignmentType = null;
    taskEventSupport.fireBeforeTaskUpdated(task, context);
    switch(type) {
        case POT_OWNER:
            assignmentType = AssignmentType.POT_OWNER;
            taskEventSupport.fireBeforeTaskAssignmentsRemovedEvent(task, context, assignmentType, entityList);
            task.getPeopleAssignments().getPotentialOwners().removeAll(entityList);
            break;
        case EXCL_OWNER:
            assignmentType = AssignmentType.EXCL_OWNER;
            taskEventSupport.fireBeforeTaskAssignmentsRemovedEvent(task, context, assignmentType, entityList);
            ((InternalPeopleAssignments) task.getPeopleAssignments()).getExcludedOwners().removeAll(entityList);
            break;
        case ADMIN:
            assignmentType = AssignmentType.ADMIN;
            taskEventSupport.fireBeforeTaskAssignmentsRemovedEvent(task, context, assignmentType, entityList);
            task.getPeopleAssignments().getBusinessAdministrators().removeAll(entityList);
            break;
        default:
            break;
    }
    taskEventSupport.fireAfterTaskAssignmentsRemovedEvent(task, context, assignmentType, entityList);
    return null;
}
Also used : Task(org.kie.api.task.model.Task) TaskContext(org.jbpm.services.task.commands.TaskContext) OrganizationalEntity(org.kie.api.task.model.OrganizationalEntity) AssignmentType(org.kie.api.task.TaskLifeCycleEventListener.AssignmentType) PermissionDeniedException(org.jbpm.services.task.exception.PermissionDeniedException) TaskEventSupport(org.jbpm.services.task.events.TaskEventSupport)

Aggregations

TaskContext (org.jbpm.services.task.commands.TaskContext)2 TaskEventSupport (org.jbpm.services.task.events.TaskEventSupport)2 PermissionDeniedException (org.jbpm.services.task.exception.PermissionDeniedException)2 AssignmentType (org.kie.api.task.TaskLifeCycleEventListener.AssignmentType)2 OrganizationalEntity (org.kie.api.task.model.OrganizationalEntity)2 Task (org.kie.api.task.model.Task)2 InternalPeopleAssignments (org.kie.internal.task.api.model.InternalPeopleAssignments)1