@Override public Task convert(org.jbpm.task.query.TaskSummary source) { Task target = new Task(); target.setDescription(source.getDescription()); if (source.getActualOwner() != null) { target.setAssignee(source.getActualOwner().getId()); } if (source.getCreatedOn() != null) { target.setCreateTime(convert(source.getCreatedOn(), XMLGregorianCalendar.class)); } if (source.getExpirationTime() != null) { target.setDueDate(convert(source.getExpirationTime(), XMLGregorianCalendar.class)); } target.setId(String.valueOf(source.getId())); if (source.getName() != null) { String[] parts = source.getName().split("/"); target.setActivityName(parts[0]); target.setName(parts[1]); } target.setState(source.getStatus().name()); target.setPriority(new Integer(source.getPriority())); target.setProcessInstanceId( source.getProcessId() + "." + Long.toString(source.getProcessInstanceId())); BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler(); taskClient.getTask(source.getId(), getTaskResponseHandler); org.jbpm.task.Task task = getTaskResponseHandler.getTask(); BlockingGetContentResponseHandler getContentResponseHandler = new BlockingGetContentResponseHandler(); taskClient.getContent(task.getTaskData().getDocumentContentId(), getContentResponseHandler); Content content = getContentResponseHandler.getContent(); Map<String, Object> map = (Map<String, Object>) ContentMarshallerHelper.unmarshall(content.getContent(), null); for (String key : map.keySet()) { log.debug("Key: " + key); } // add task outcomes using the "Options" variable from the task String optionsString = (String) map.get("Options"); if (optionsString != null) { String[] options = ((String) map.get("Options")).split(","); target.getOutcomes().addAll(Arrays.asList(options)); } // get ad-hoc variables map Map<String, Object> contentMap = (Map<String, Object>) map.get(Bpmn20UserTaskNodeBuilder.TASK_INPUT_VARIABLES_NAME); if (contentMap != null) { for (Entry<String, Object> entry : contentMap.entrySet()) { log.debug(entry.getKey() + "=" + entry.getValue()); addVariable(target, entry.getKey(), entry.getValue()); } } else { log.debug("No Content found for task"); } // add variables /*Set<String> names = taskService.getVariableNames(source.getId()); Map<String, Object> variables = taskService.getVariables(source.getId(), names); // remove process name var variables.remove("_name"); for (String key : variables.keySet()) { Variable var = new Variable(); var.setName(key); // Support strings only. Other types will cause ClassCastException try { var.setValue((String) variables.get(key)); } catch (ClassCastException e) { var.setValue("Variable type " + variables.get(key).getClass().getName() + " is not supported"); } addVariable(target, var); } // Do this only if the task is not an ad-hoc task (as indicated by null executionId) if (source.getExecutionId() != null) { // name is the 'form' attribute in JPDL // this is used in the COW schema to store the display name, as distinct from the system-generated name target.setName(source.getFormResourceName()); // activityName is the 'name' from JPDL target.setActivityName(source.getActivityName()); Execution ex = executionService.findExecutionById(source.getExecutionId()); target.setProcessInstanceId(ex.getProcessInstance().getId()); // outcomes Set<String> outcomes = taskService.getOutcomes(source.getId()); for (String outcome : outcomes) { target.getOutcomes().add(outcome); } // Workaround to the fact that we cannot use autowiring here if (this.cowTaskService == null) { this.cowTaskService = (org.wiredwidgets.cow.server.service.TaskService) this.factory.getBean("taskService"); } // add process level task varibles ( String executionId = getTopLevelExecutionId(source.getExecutionId()); org.wiredwidgets.cow.server.api.model.v2.Activity activity = cowTaskService.getWorkflowActivity(executionId, source.getActivityName()); if (activity != null && activity instanceof org.wiredwidgets.cow.server.api.model.v2.Task) { org.wiredwidgets.cow.server.api.model.v2.Task cowTask = (org.wiredwidgets.cow.server.api.model.v2.Task) activity; if (cowTask.getVariables() != null) { for (org.wiredwidgets.cow.server.api.model.v2.Variable var : cowTask.getVariables().getVariables()) { Variable newVar = new Variable(); newVar.setName(var.getName()); newVar.setValue(var.getValue()); addVariable(target, newVar); } } } } else { // for ad-hoc tasks target.setName(source.getName()); }*/ return target; }