Search in sources :

Example 86 with Task

use of org.wso2.carbon.humantask.core.dao.jpa.openjpa.model.Task in project carbon-business-process by wso2.

the class TerminationTask method run.

@Override
public void run() {
    PrivilegedCarbonContext.startTenantFlow();
    PrivilegedCarbonContext privilegedCarbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
    privilegedCarbonContext.setTenantId(tenantID, true);
    try {
        List<TaskProtocolHandler> taskProtocolHandlers = null;
        try {
            taskProtocolHandlers = getHTProtocolHandlerURLWithTasks(instanceID);
        } catch (Exception e) {
            log.error("Error occurred while retrieving coordination data", e);
        }
        String currentProtocolHandler = "";
        ExitProtocolMessage currentExitMessage = null;
        for (TaskProtocolHandler taskProtocolHandler : taskProtocolHandlers) {
            // Task Protocol Handler and Task ID should be not null
            if (taskProtocolHandler.getProtocolHandlerURL() != null && taskProtocolHandler.getTaskID() != null) {
                if (!currentProtocolHandler.equals(taskProtocolHandler.getProtocolHandlerURL())) {
                    // found a new protocol handler URL, so invoking old exit message.
                    if (currentExitMessage != null) {
                        // To ignore initial condition, we do null check here.
                        invokeProtocolHandler(currentExitMessage);
                    }
                    currentExitMessage = new ExitProtocolMessage(taskProtocolHandler.getProtocolHandlerURL());
                    currentProtocolHandler = taskProtocolHandler.getProtocolHandlerURL();
                }
                currentExitMessage.getTaskIDs().add(taskProtocolHandler.getTaskID());
                if (log.isDebugEnabled()) {
                    log.debug("building exit protocol message for task id:" + taskProtocolHandler.getTaskID());
                }
            }
        }
        if (currentExitMessage != null) {
            // Here we do last invocation.
            invokeProtocolHandler(currentExitMessage);
        }
        // Cleaning coordination data.
        boolean deleted = false;
        try {
            deleted = deleteCoordinationData(instanceID);
        } catch (Exception e) {
            log.error("Error occurred while cleaning coordination data for process instance id " + instanceID, e);
        }
        if (deleted && log.isDebugEnabled()) {
            log.debug("Coordination data are removed from database for process instance id " + instanceID);
        }
    } finally {
        PrivilegedCarbonContext.endTenantFlow();
    }
}
Also used : ExitProtocolMessage(org.wso2.carbon.bpel.b4p.coordination.context.ExitProtocolMessage) TaskProtocolHandler(org.wso2.carbon.bpel.b4p.coordination.dao.TaskProtocolHandler) PrivilegedCarbonContext(org.wso2.carbon.context.PrivilegedCarbonContext) RegistryException(org.wso2.carbon.registry.core.exceptions.RegistryException)

Example 87 with Task

use of org.wso2.carbon.humantask.core.dao.jpa.openjpa.model.Task in project carbon-business-process by wso2.

the class HistoricTaskInstanceService method getVariableFromRequest.

protected RestVariable getVariableFromRequest(boolean includeBinary, String taskId, String variableName, String scope) {
    HistoryService historyService = BPMNOSGIService.getHistoryService();
    RestVariable.RestVariableScope variableScope = RestVariable.getScopeFromString(scope);
    HistoricTaskInstanceQuery taskQuery = historyService.createHistoricTaskInstanceQuery().taskId(taskId);
    if (variableScope != null) {
        if (variableScope == RestVariable.RestVariableScope.GLOBAL) {
            taskQuery.includeProcessVariables();
        } else {
            taskQuery.includeTaskLocalVariables();
        }
    } else {
        taskQuery.includeTaskLocalVariables().includeProcessVariables();
    }
    HistoricTaskInstance taskObject = taskQuery.singleResult();
    if (taskObject == null) {
        throw new ActivitiObjectNotFoundException("Historic task instance '" + taskId + "' couldn't be found.", HistoricTaskInstanceEntity.class);
    }
    Object value = null;
    if (variableScope != null) {
        if (variableScope == RestVariable.RestVariableScope.GLOBAL) {
            value = taskObject.getProcessVariables().get(variableName);
        } else {
            value = taskObject.getTaskLocalVariables().get(variableName);
        }
    } else {
        // look for local task restVariables first
        if (taskObject.getTaskLocalVariables().containsKey(variableName)) {
            value = taskObject.getTaskLocalVariables().get(variableName);
        } else {
            value = taskObject.getProcessVariables().get(variableName);
        }
    }
    if (value == null) {
        throw new ActivitiObjectNotFoundException("Historic task instance '" + taskId + "' variable value for " + variableName + " couldn't be found.", VariableInstanceEntity.class);
    } else {
        return new RestResponseFactory().createRestVariable(variableName, value, null, taskId, RestResponseFactory.VARIABLE_HISTORY_TASK, includeBinary, uriInfo.getBaseUri().toString());
    }
}
Also used : RestVariable(org.wso2.carbon.bpmn.rest.engine.variable.RestVariable) HistoricTaskInstance(org.activiti.engine.history.HistoricTaskInstance) RestResponseFactory(org.wso2.carbon.bpmn.rest.common.RestResponseFactory) HistoryService(org.activiti.engine.HistoryService) HistoricTaskInstanceQuery(org.activiti.engine.history.HistoricTaskInstanceQuery) ActivitiObjectNotFoundException(org.activiti.engine.ActivitiObjectNotFoundException)

Example 88 with Task

use of org.wso2.carbon.humantask.core.dao.jpa.openjpa.model.Task in project carbon-business-process by wso2.

the class HistoricTaskInstanceService method getHistoricProcessInstances.

@GET
@Path("/")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public Response getHistoricProcessInstances() {
    Map<String, String> allRequestParams = new HashMap<>();
    for (String property : allPropertiesList) {
        String value = uriInfo.getQueryParameters().getFirst(property);
        if (value != null) {
            allRequestParams.put(property, value);
        }
    }
    // Populate query based on request
    HistoricTaskInstanceQueryRequest queryRequest = new HistoricTaskInstanceQueryRequest();
    if (allRequestParams.get("taskId") != null) {
        queryRequest.setTaskId(allRequestParams.get("taskId"));
    }
    if (allRequestParams.get("processInstanceId") != null) {
        queryRequest.setProcessInstanceId(allRequestParams.get("processInstanceId"));
    }
    if (allRequestParams.get("processBusinessKey") != null) {
        queryRequest.setProcessBusinessKey(allRequestParams.get("processBusinessKey"));
    }
    if (allRequestParams.get("processDefinitionKey") != null) {
        queryRequest.setProcessDefinitionKey(allRequestParams.get("processDefinitionKey"));
    }
    if (allRequestParams.get("processDefinitionId") != null) {
        queryRequest.setProcessDefinitionId(allRequestParams.get("processDefinitionId"));
    }
    if (allRequestParams.get("processDefinitionName") != null) {
        queryRequest.setProcessDefinitionName(allRequestParams.get("processDefinitionName"));
    }
    if (allRequestParams.get("executionId") != null) {
        queryRequest.setExecutionId(allRequestParams.get("executionId"));
    }
    if (allRequestParams.get("taskName") != null) {
        queryRequest.setTaskName(allRequestParams.get("taskName"));
    }
    if (allRequestParams.get("taskNameLike") != null) {
        queryRequest.setTaskNameLike(allRequestParams.get("taskNameLike"));
    }
    if (allRequestParams.get("taskDescription") != null) {
        queryRequest.setTaskDescription(allRequestParams.get("taskDescription"));
    }
    if (allRequestParams.get("taskDescriptionLike") != null) {
        queryRequest.setTaskDescriptionLike(allRequestParams.get("taskDescriptionLike"));
    }
    if (allRequestParams.get("taskDefinitionKey") != null) {
        queryRequest.setTaskDefinitionKey(allRequestParams.get("taskDefinitionKey"));
    }
    if (allRequestParams.get("taskDeleteReason") != null) {
        queryRequest.setTaskDeleteReason(allRequestParams.get("taskDeleteReason"));
    }
    if (allRequestParams.get("taskDeleteReasonLike") != null) {
        queryRequest.setTaskDeleteReasonLike(allRequestParams.get("taskDeleteReasonLike"));
    }
    if (allRequestParams.get("taskAssignee") != null) {
        queryRequest.setTaskAssignee(allRequestParams.get("taskAssignee"));
    }
    if (allRequestParams.get("taskAssigneeLike") != null) {
        queryRequest.setTaskAssigneeLike(allRequestParams.get("taskAssigneeLike"));
    }
    if (allRequestParams.get("taskOwner") != null) {
        queryRequest.setTaskOwner(allRequestParams.get("taskOwner"));
    }
    if (allRequestParams.get("taskOwnerLike") != null) {
        queryRequest.setTaskOwnerLike(allRequestParams.get("taskOwnerLike"));
    }
    if (allRequestParams.get("taskInvolvedUser") != null) {
        queryRequest.setTaskInvolvedUser(allRequestParams.get("taskInvolvedUser"));
    }
    if (allRequestParams.get("taskPriority") != null) {
        queryRequest.setTaskPriority(Integer.valueOf(allRequestParams.get("taskPriority")));
    }
    if (allRequestParams.get("finished") != null) {
        queryRequest.setFinished(Boolean.valueOf(allRequestParams.get("finished")));
    }
    if (allRequestParams.get("processFinished") != null) {
        queryRequest.setProcessFinished(Boolean.valueOf(allRequestParams.get("processFinished")));
    }
    if (allRequestParams.get("parentTaskId") != null) {
        queryRequest.setParentTaskId(allRequestParams.get("parentTaskId"));
    }
    if (allRequestParams.get("dueDate") != null) {
        queryRequest.setDueDate(RequestUtil.getDate(allRequestParams, "dueDate"));
    }
    if (allRequestParams.get("dueDateAfter") != null) {
        queryRequest.setDueDateAfter(RequestUtil.getDate(allRequestParams, "dueDateAfter"));
    }
    if (allRequestParams.get("dueDateBefore") != null) {
        queryRequest.setDueDateBefore(RequestUtil.getDate(allRequestParams, "dueDateBefore"));
    }
    if (allRequestParams.get("taskCreatedOn") != null) {
        queryRequest.setTaskCreatedOn(RequestUtil.getDate(allRequestParams, "taskCreatedOn"));
    }
    if (allRequestParams.get("taskCreatedBefore") != null) {
        queryRequest.setTaskCreatedBefore(RequestUtil.getDate(allRequestParams, "taskCreatedBefore"));
    }
    if (allRequestParams.get("taskCreatedAfter") != null) {
        queryRequest.setTaskCreatedAfter(RequestUtil.getDate(allRequestParams, "taskCreatedAfter"));
    }
    if (allRequestParams.get("taskCompletedOn") != null) {
        queryRequest.setTaskCompletedOn(RequestUtil.getDate(allRequestParams, "taskCompletedOn"));
    }
    if (allRequestParams.get("taskCompletedBefore") != null) {
        queryRequest.setTaskCompletedBefore(RequestUtil.getDate(allRequestParams, "taskCompletedBefore"));
    }
    if (allRequestParams.get("taskCompletedAfter") != null) {
        queryRequest.setTaskCompletedAfter(RequestUtil.getDate(allRequestParams, "taskCompletedAfter"));
    }
    if (allRequestParams.get("includeTaskLocalVariables") != null) {
        queryRequest.setIncludeTaskLocalVariables(Boolean.valueOf(allRequestParams.get("includeTaskLocalVariables")));
    }
    if (allRequestParams.get("includeProcessVariables") != null) {
        queryRequest.setIncludeProcessVariables(Boolean.valueOf(allRequestParams.get("includeProcessVariables")));
    }
    if (allRequestParams.get("tenantId") != null) {
        queryRequest.setTenantId(allRequestParams.get("tenantId"));
    }
    if (allRequestParams.get("tenantIdLike") != null) {
        queryRequest.setTenantIdLike(allRequestParams.get("tenantIdLike"));
    }
    if (allRequestParams.get("withoutTenantId") != null) {
        queryRequest.setWithoutTenantId(Boolean.valueOf(allRequestParams.get("withoutTenantId")));
    }
    if (allRequestParams.get("taskCandidateGroup") != null) {
        queryRequest.setTaskCandidateGroup(allRequestParams.get("taskCandidateGroup"));
    }
    String serverRootUrl = uriInfo.getBaseUri().toString().replace("/history/historic-task-instances", "");
    DataResponse dataResponse = getQueryResponse(queryRequest, allRequestParams, serverRootUrl);
    return Response.ok().entity(dataResponse).build();
}
Also used : HistoricTaskInstanceQueryRequest(org.wso2.carbon.bpmn.rest.model.history.HistoricTaskInstanceQueryRequest) HashMap(java.util.HashMap) DataResponse(org.wso2.carbon.bpmn.rest.model.common.DataResponse)

Example 89 with Task

use of org.wso2.carbon.humantask.core.dao.jpa.openjpa.model.Task in project carbon-business-process by wso2.

the class BaseTaskService method addLocalVariables.

protected void addLocalVariables(Task task, Map<String, RestVariable> variableMap, String baseUri) {
    TaskService taskService = BPMNOSGIService.getTaskService();
    Map<String, Object> rawVariables = taskService.getVariablesLocal(task.getId());
    List<RestVariable> localVariables = new RestResponseFactory().createRestVariables(rawVariables, task.getId(), RestResponseFactory.VARIABLE_TASK, RestVariable.RestVariableScope.LOCAL, baseUri);
    for (RestVariable var : localVariables) {
        variableMap.put(var.getName(), var);
    }
}
Also used : RestVariable(org.wso2.carbon.bpmn.rest.engine.variable.RestVariable) RestResponseFactory(org.wso2.carbon.bpmn.rest.common.RestResponseFactory)

Example 90 with Task

use of org.wso2.carbon.humantask.core.dao.jpa.openjpa.model.Task in project carbon-business-process by wso2.

the class BaseTaskService method getVariableFromRequest.

public RestVariable getVariableFromRequest(String taskId, String variableName, String scope, boolean includeBinary, String baseUri) {
    boolean variableFound = false;
    Object value = null;
    RestVariable.RestVariableScope variableScope = RestVariable.getScopeFromString(scope);
    TaskService taskService = BPMNOSGIService.getTaskService();
    RuntimeService runtimeService = BPMNOSGIService.getRuntimeService();
    if (variableScope == null) {
        // First, check local variables (which have precedence when no scope is supplied)
        if (taskService.hasVariableLocal(taskId, variableName)) {
            value = taskService.getVariableLocal(taskId, variableName);
            variableScope = RestVariable.RestVariableScope.LOCAL;
            variableFound = true;
        } else {
            // Revert to execution-variable when not present local on the task
            Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
            if (task.getExecutionId() != null && runtimeService.hasVariable(task.getExecutionId(), variableName)) {
                value = runtimeService.getVariable(task.getExecutionId(), variableName);
                variableScope = RestVariable.RestVariableScope.GLOBAL;
                variableFound = true;
            }
        }
    } else if (variableScope == RestVariable.RestVariableScope.GLOBAL) {
        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
        if (task.getExecutionId() != null && runtimeService.hasVariable(task.getExecutionId(), variableName)) {
            value = runtimeService.getVariable(task.getExecutionId(), variableName);
            variableFound = true;
        }
    } else if (variableScope == RestVariable.RestVariableScope.LOCAL) {
        if (taskService.hasVariableLocal(taskId, variableName)) {
            value = taskService.getVariableLocal(taskId, variableName);
            variableFound = true;
        }
    }
    if (!variableFound) {
        throw new ActivitiObjectNotFoundException("Task '" + taskId + "' doesn't have a variable with name: '" + variableName + "'.", VariableInstanceEntity.class);
    } else {
        return new RestResponseFactory().createRestVariable(variableName, value, variableScope, taskId, RestResponseFactory.VARIABLE_TASK, includeBinary, baseUri);
    }
}
Also used : RestVariable(org.wso2.carbon.bpmn.rest.engine.variable.RestVariable) Task(org.activiti.engine.task.Task) RestResponseFactory(org.wso2.carbon.bpmn.rest.common.RestResponseFactory)

Aggregations

HumanTaskRuntimeException (org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskRuntimeException)41 RegistryException (org.wso2.carbon.registry.core.exceptions.RegistryException)35 HumanTaskIllegalAccessException (org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskIllegalAccessException)28 HumanTaskIllegalArgumentException (org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskIllegalArgumentException)28 HumanTaskIllegalStateException (org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskIllegalStateException)28 UserStoreException (org.wso2.carbon.user.core.UserStoreException)28 TaskDAO (org.wso2.carbon.humantask.core.dao.TaskDAO)27 HumanTaskException (org.wso2.carbon.humantask.core.engine.HumanTaskException)27 RestResponseFactory (org.wso2.carbon.bpmn.rest.common.RestResponseFactory)25 BaseTaskService (org.wso2.carbon.bpmn.rest.service.base.BaseTaskService)25 HumanTaskIllegalOperationException (org.wso2.carbon.humantask.core.engine.runtime.api.HumanTaskIllegalOperationException)25 ArrayList (java.util.ArrayList)14 RestVariable (org.wso2.carbon.bpmn.rest.engine.variable.RestVariable)13 Element (org.w3c.dom.Element)12 QName (javax.xml.namespace.QName)11 HistoricTaskInstance (org.activiti.engine.history.HistoricTaskInstance)11 IOException (java.io.IOException)9 HumanTaskEngine (org.wso2.carbon.humantask.core.engine.HumanTaskEngine)9 AxisFault (org.apache.axis2.AxisFault)8 HumanTaskDeploymentException (org.wso2.carbon.humantask.core.deployment.HumanTaskDeploymentException)8