use of org.jbpm.kie.services.impl.bpmn2.UserTaskDefinitionImpl in project jbpm by kiegroup.
the class ServicesProcessDataEventListener method onNodeAdded.
@SuppressWarnings("unchecked")
@Override
public void onNodeAdded(Node node) {
logger.debug("Added node " + node);
if (node instanceof HumanTaskNode) {
HumanTaskNode humanTaskNode = (HumanTaskNode) node;
String name = humanTaskNode.getName();
UserTaskDefinitionImpl task = (UserTaskDefinitionImpl) processDescriptor.getTasks().get(name);
if (task == null) {
task = new UserTaskDefinitionImpl();
task.setId(humanTaskNode.getUniqueId());
task.setName(name);
processDescriptor.getTasks().put(task.getName(), task);
}
Map<String, Object> parameters = humanTaskNode.getWork().getParameters();
Collection<String> currentAssignment = processDescriptor.getTaskAssignments().get(humanTaskNode.getName());
for (String parameter : parameters.keySet()) {
if (parameter.equals("GroupId") || parameter.equals("ActorId")) {
if (currentAssignment == null) {
currentAssignment = new ArrayList<String>();
processDescriptor.getTaskAssignments().put(humanTaskNode.getName(), currentAssignment);
}
currentAssignment.add(humanTaskNode.getWork().getParameter(parameter).toString());
}
}
((UserTaskDefinitionImpl) processDescriptor.getTasks().get(humanTaskNode.getName())).setAssociatedEntities(currentAssignment);
Map<String, String> inputParams = new HashMap<String, String>();
for (Map.Entry<String, String> in : ((Map<String, String>) humanTaskNode.getMetaData("DataInputs")).entrySet()) {
inputParams.put(in.getKey(), in.getValue());
}
Map<String, String> outputParams = new HashMap<String, String>();
for (Map.Entry<String, String> out : ((Map<String, String>) humanTaskNode.getMetaData("DataOutputs")).entrySet()) {
outputParams.put(out.getKey(), out.getValue());
}
task.setTaskInputMappings(inputParams);
task.setTaskOutputMappings(outputParams);
task.setComment(asString(humanTaskNode.getWork().getParameter("Comment")));
task.setCreatedBy(asString(humanTaskNode.getWork().getParameter("CreatedBy")));
task.setPriority(asInt(humanTaskNode.getWork().getParameter("Priority")));
task.setSkippable(asBoolean(humanTaskNode.getWork().getParameter("Skippable")));
task.setFormName(asString(humanTaskNode.getWork().getParameter("TaskName")));
processDescriptor.getTaskInputMappings().put(task.getName(), inputParams);
processDescriptor.getTaskOutputMappings().put(task.getName(), outputParams);
} else if (node instanceof RuleSetNode) {
RuleSetNode ruleSetNode = (RuleSetNode) node;
String ruleFlowGroup = ruleSetNode.getRuleFlowGroup();
if (ruleFlowGroup != null) {
processDescriptor.getReferencedRules().add(ruleFlowGroup);
}
} else if (node instanceof WorkItemNode) {
processDescriptor.getServiceTasks().put(node.getName(), ((WorkItemNode) node).getWork().getName());
} else if (node instanceof SubProcessNode) {
SubProcessNode subProcess = (SubProcessNode) node;
String processId = subProcess.getProcessId();
if (subProcess.getProcessName() != null) {
processDescriptor.addReusableSubProcessName(subProcess.getProcessName());
} else {
processDescriptor.getReusableSubProcesses().add(processId);
}
}
}
Aggregations