Search in sources :

Example 1 with UserTaskDefinitionImpl

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);
        }
    }
}
Also used : HashMap(java.util.HashMap) RuleSetNode(org.jbpm.workflow.core.node.RuleSetNode) UserTaskDefinitionImpl(org.jbpm.kie.services.impl.bpmn2.UserTaskDefinitionImpl) SubProcessNode(org.jbpm.workflow.core.node.SubProcessNode) WorkItemNode(org.jbpm.workflow.core.node.WorkItemNode) HashMap(java.util.HashMap) Map(java.util.Map) HumanTaskNode(org.jbpm.workflow.core.node.HumanTaskNode)

Aggregations

HashMap (java.util.HashMap)1 Map (java.util.Map)1 UserTaskDefinitionImpl (org.jbpm.kie.services.impl.bpmn2.UserTaskDefinitionImpl)1 HumanTaskNode (org.jbpm.workflow.core.node.HumanTaskNode)1 RuleSetNode (org.jbpm.workflow.core.node.RuleSetNode)1 SubProcessNode (org.jbpm.workflow.core.node.SubProcessNode)1 WorkItemNode (org.jbpm.workflow.core.node.WorkItemNode)1