Search in sources :

Example 21 with OrganizationalEntityDAO

use of org.wso2.carbon.humantask.core.dao.OrganizationalEntityDAO in project carbon-business-process by wso2.

the class Delegate method checkPreConditions.

/**
 * Checks the Pre-conditions before executing the task operation.
 */
@Override
protected void checkPreConditions() {
    checkForValidTask();
    OrganizationalEntityDAO caller = getOperationInvoker();
    TaskDAO task = getTask();
    // if the delegatee is not an existing user
    if (!getEngine().getPeopleQueryEvaluator().isExistingUser(delegatee.getName())) {
        String errMsg = String.format("The user[%s] cannot delegate task[id:%d] to the given" + " delegatee[name:%s] as he/she does not exist in the user store", caller.getName(), task.getId(), delegatee.getName());
        log.error(errMsg);
        throw new HumanTaskIllegalArgumentException(errMsg);
    }
    if (isExcludedOwner(delegatee.getName())) {
        String errMsg = String.format("The user[%s] cannot delegate task[id:%d] to the given" + " delegatee[name:%s] as he/she is an exclude owner for this task.", caller.getName(), task.getId(), delegatee.getName());
        log.error(errMsg);
        throw new HumanTaskIllegalArgumentException(errMsg);
    }
    // if the task is in reserved or in-progress we have to release it first.
    if (TaskStatus.RESERVED.equals(task.getStatus()) || TaskStatus.IN_PROGRESS.equals(task.getStatus())) {
        // task releasing can be done only by bus admins and the actual owner.
        List<GenericHumanRoleDAO.GenericHumanRoleType> allowedRoles = new ArrayList<GenericHumanRoleDAO.GenericHumanRoleType>();
        allowedRoles.add(GenericHumanRoleDAO.GenericHumanRoleType.BUSINESS_ADMINISTRATORS);
        allowedRoles.add(GenericHumanRoleDAO.GenericHumanRoleType.ACTUAL_OWNER);
        try {
            authoriseRoles(allowedRoles);
        } catch (Exception ex) {
            String err = String.format("The task[id:%d] can be only delegated after it's released. " + "But for the task to be released you need to be a business " + "administrator or the actual owner of the task. " + "Given user[%s] is not in those roles!", task.getId(), caller.getName());
            log.error(err);
            throw new HumanTaskIllegalAccessException(err, ex);
        }
        task.release();
    }
    // Add delegatee as a potential owner.
    GenericHumanRoleDAO potentialOwnersRole = task.getGenericHumanRole(GenericHumanRoleDAO.GenericHumanRoleType.POTENTIAL_OWNERS);
    if (getEngine().getPeopleQueryEvaluator().isOrgEntityInRole(delegatee, potentialOwnersRole)) {
        task.persistToPotentialOwners(delegatee);
    }
}
Also used : HumanTaskIllegalAccessException(org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskIllegalAccessException) HumanTaskIllegalArgumentException(org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskIllegalArgumentException) ArrayList(java.util.ArrayList) HumanTaskIllegalArgumentException(org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskIllegalArgumentException) HumanTaskIllegalAccessException(org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskIllegalAccessException) HumanTaskRuntimeException(org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskRuntimeException)

Example 22 with OrganizationalEntityDAO

use of org.wso2.carbon.humantask.core.dao.OrganizationalEntityDAO in project carbon-business-process by wso2.

the class Nominate method checkPreConditions.

/**
 * Checks the Pre-conditions before executing the task operation.
 */
@Override
protected void checkPreConditions() {
    PeopleQueryEvaluator pqe = getEngine().getPeopleQueryEvaluator();
    pqe.checkOrgEntitiesExist(nominees);
    // Check for Excluded Owners.
    GenericHumanRoleDAO excludedOwnerRoles = getTask().getGenericHumanRole(GenericHumanRoleDAO.GenericHumanRoleType.EXCLUDED_OWNERS);
    if (excludedOwnerRoles != null) {
        List<OrganizationalEntityDAO> excludedOrgEntities = excludedOwnerRoles.getOrgEntities();
        // Case 1 : Matching Excluded OrgEntity List.
        for (OrganizationalEntityDAO nominee : nominees) {
            for (OrganizationalEntityDAO excludedOrgEntity : excludedOrgEntities) {
                if (nominee.getOrgEntityType() == excludedOrgEntity.getOrgEntityType() && nominee.getName().equals(excludedOrgEntity.getName())) {
                    String errMsg = String.format("The task nomination failed. One nominee is in the excluded Owner List for task " + getTask().getId() + ".");
                    log.error(errMsg);
                    throw new HumanTaskIllegalArgumentException(errMsg);
                }
            }
        }
        // Case 2: Checking OrgEntity Users in Excluded OrgEntity Groups.
        for (OrganizationalEntityDAO nominee : nominees) {
            if (nominee.getOrgEntityType() == OrganizationalEntityDAO.OrganizationalEntityType.USER) {
                List<String> roleNameListForUser = getEngine().getPeopleQueryEvaluator().getRoleNameListForUser(nominee.getName());
                for (OrganizationalEntityDAO excludedOrgEntity : excludedOrgEntities) {
                    if (excludedOrgEntity.getOrgEntityType() == OrganizationalEntityDAO.OrganizationalEntityType.GROUP && roleNameListForUser.contains(excludedOrgEntity.getName())) {
                        String errMsg = String.format("The task nomination failed. One nominee is in an excluded Owner Group for task " + getTask().getId() + ".");
                        log.error(errMsg);
                        throw new HumanTaskIllegalArgumentException(errMsg);
                    }
                }
            }
        }
    }
}
Also used : HumanTaskIllegalArgumentException(org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskIllegalArgumentException) PeopleQueryEvaluator(org.wso2.carbon.humantask.core.engine.PeopleQueryEvaluator)

Aggregations

OrganizationalEntityDAO (org.wso2.carbon.humantask.core.dao.OrganizationalEntityDAO)10 HumanTaskRuntimeException (org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskRuntimeException)10 ArrayList (java.util.ArrayList)7 Node (org.w3c.dom.Node)5 GenericHumanRoleDAO (org.wso2.carbon.humantask.core.dao.GenericHumanRoleDAO)5 HumanTaskIllegalArgumentException (org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskIllegalArgumentException)5 Element (org.w3c.dom.Element)4 NodeList (org.w3c.dom.NodeList)4 HumanTaskException (org.wso2.carbon.humantask.core.engine.HumanTaskException)4 HumanTaskIllegalAccessException (org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskIllegalAccessException)4 RegistryException (org.wso2.carbon.registry.core.exceptions.RegistryException)4 UserStoreException (org.wso2.carbon.user.core.UserStoreException)4 HumanTaskEngine (org.wso2.carbon.humantask.core.engine.HumanTaskEngine)3 PeopleQueryEvaluator (org.wso2.carbon.humantask.core.engine.PeopleQueryEvaluator)3 HumanTaskIllegalOperationException (org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskIllegalOperationException)3 HumanTaskIllegalStateException (org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskIllegalStateException)3 OrganizationalEntityProvider (org.wso2.carbon.humantask.core.dao.jpa.openjpa.model.provider.OrganizationalEntityProvider)2 TaskConfiguration (org.wso2.carbon.humantask.core.store.TaskConfiguration)2 List (java.util.List)1 Callable (java.util.concurrent.Callable)1