Search in sources :

Example 16 with SubProcessNode

use of org.jbpm.workflow.core.node.SubProcessNode 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)

Example 17 with SubProcessNode

use of org.jbpm.workflow.core.node.SubProcessNode in project jbpm by kiegroup.

the class SingleSessionCommandServiceTest method getProcessSubProcess.

private InternalKnowledgePackage getProcessSubProcess() {
    RuleFlowProcess process = new RuleFlowProcess();
    process.setId("org.drools.test.TestProcess");
    process.setName("TestProcess");
    process.setPackageName("org.drools.test");
    StartNode start = new StartNode();
    start.setId(1);
    start.setName("Start");
    process.addNode(start);
    ActionNode actionNode = new ActionNode();
    actionNode.setId(2);
    actionNode.setName("Action");
    DroolsConsequenceAction action = new DroolsConsequenceAction();
    action.setDialect("java");
    action.setConsequence("System.out.println(\"Executed action\");");
    actionNode.setAction(action);
    process.addNode(actionNode);
    new ConnectionImpl(start, Node.CONNECTION_DEFAULT_TYPE, actionNode, Node.CONNECTION_DEFAULT_TYPE);
    SubProcessNode subProcessNode = new SubProcessNode();
    subProcessNode.setId(3);
    subProcessNode.setName("SubProcess");
    subProcessNode.setProcessId("org.drools.test.SubProcess");
    process.addNode(subProcessNode);
    new ConnectionImpl(actionNode, Node.CONNECTION_DEFAULT_TYPE, subProcessNode, Node.CONNECTION_DEFAULT_TYPE);
    EndNode end = new EndNode();
    end.setId(4);
    end.setName("End");
    process.addNode(end);
    new ConnectionImpl(subProcessNode, Node.CONNECTION_DEFAULT_TYPE, end, Node.CONNECTION_DEFAULT_TYPE);
    KnowledgeBuilderImpl packageBuilder = new KnowledgeBuilderImpl();
    ProcessBuilderImpl processBuilder = new ProcessBuilderImpl(packageBuilder);
    processBuilder.buildProcess(process, null);
    process = new RuleFlowProcess();
    process.setId("org.drools.test.SubProcess");
    process.setName("SubProcess");
    process.setPackageName("org.drools.test");
    start = new StartNode();
    start.setId(1);
    start.setName("Start");
    process.addNode(start);
    actionNode = new ActionNode();
    actionNode.setId(2);
    actionNode.setName("Action");
    action = new DroolsConsequenceAction();
    action.setDialect("java");
    action.setConsequence("System.out.println(\"Executed action\");");
    actionNode.setAction(action);
    process.addNode(actionNode);
    new ConnectionImpl(start, Node.CONNECTION_DEFAULT_TYPE, actionNode, Node.CONNECTION_DEFAULT_TYPE);
    WorkItemNode workItemNode = new WorkItemNode();
    workItemNode.setId(3);
    workItemNode.setName("WorkItem1");
    Work work = new WorkImpl();
    work.setName("MyWork");
    workItemNode.setWork(work);
    process.addNode(workItemNode);
    new ConnectionImpl(actionNode, Node.CONNECTION_DEFAULT_TYPE, workItemNode, Node.CONNECTION_DEFAULT_TYPE);
    end = new EndNode();
    end.setId(6);
    end.setName("End");
    process.addNode(end);
    new ConnectionImpl(workItemNode, Node.CONNECTION_DEFAULT_TYPE, end, Node.CONNECTION_DEFAULT_TYPE);
    processBuilder.buildProcess(process, null);
    return packageBuilder.getPackage("org.drools.test");
}
Also used : RuleFlowProcess(org.jbpm.ruleflow.core.RuleFlowProcess) StartNode(org.jbpm.workflow.core.node.StartNode) DroolsConsequenceAction(org.jbpm.workflow.core.impl.DroolsConsequenceAction) EndNode(org.jbpm.workflow.core.node.EndNode) SubProcessNode(org.jbpm.workflow.core.node.SubProcessNode) KnowledgeBuilderImpl(org.drools.compiler.builder.impl.KnowledgeBuilderImpl) ActionNode(org.jbpm.workflow.core.node.ActionNode) WorkItemNode(org.jbpm.workflow.core.node.WorkItemNode) Work(org.jbpm.process.core.Work) WorkImpl(org.jbpm.process.core.impl.WorkImpl) ConnectionImpl(org.jbpm.workflow.core.impl.ConnectionImpl) ProcessBuilderImpl(org.jbpm.compiler.ProcessBuilderImpl)

Aggregations

SubProcessNode (org.jbpm.workflow.core.node.SubProcessNode)17 WorkItemNode (org.jbpm.workflow.core.node.WorkItemNode)9 EndNode (org.jbpm.workflow.core.node.EndNode)8 StartNode (org.jbpm.workflow.core.node.StartNode)8 HashMap (java.util.HashMap)6 RuleFlowProcess (org.jbpm.ruleflow.core.RuleFlowProcess)6 ActionNode (org.jbpm.workflow.core.node.ActionNode)6 RuleSetNode (org.jbpm.workflow.core.node.RuleSetNode)6 ConnectionImpl (org.jbpm.workflow.core.impl.ConnectionImpl)5 Test (org.junit.Test)5 Map (java.util.Map)4 Work (org.jbpm.process.core.Work)4 DroolsConsequenceAction (org.jbpm.workflow.core.impl.DroolsConsequenceAction)4 EventNode (org.jbpm.workflow.core.node.EventNode)4 FaultNode (org.jbpm.workflow.core.node.FaultNode)4 ForEachNode (org.jbpm.workflow.core.node.ForEachNode)4 HumanTaskNode (org.jbpm.workflow.core.node.HumanTaskNode)4 StateNode (org.jbpm.workflow.core.node.StateNode)4 ArrayList (java.util.ArrayList)3 EventTypeFilter (org.jbpm.process.core.event.EventTypeFilter)3