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();
}
}
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());
}
}
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();
}
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);
}
}
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);
}
}
Aggregations