Search in sources :

Example 31 with WorkItemNode

use of org.jbpm.workflow.core.node.WorkItemNode 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 32 with WorkItemNode

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

Example 33 with WorkItemNode

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

the class SingleSessionCommandServiceTest method getProcessWorkItems.

private Collection<KiePackage> getProcessWorkItems() {
    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);
    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);
    WorkItemNode workItemNode2 = new WorkItemNode();
    workItemNode2.setId(4);
    workItemNode2.setName("WorkItem2");
    work = new WorkImpl();
    work.setName("MyWork");
    workItemNode2.setWork(work);
    process.addNode(workItemNode2);
    new ConnectionImpl(workItemNode, Node.CONNECTION_DEFAULT_TYPE, workItemNode2, Node.CONNECTION_DEFAULT_TYPE);
    WorkItemNode workItemNode3 = new WorkItemNode();
    workItemNode3.setId(5);
    workItemNode3.setName("WorkItem3");
    work = new WorkImpl();
    work.setName("MyWork");
    workItemNode3.setWork(work);
    process.addNode(workItemNode3);
    new ConnectionImpl(workItemNode2, Node.CONNECTION_DEFAULT_TYPE, workItemNode3, Node.CONNECTION_DEFAULT_TYPE);
    EndNode end = new EndNode();
    end.setId(6);
    end.setName("End");
    process.addNode(end);
    new ConnectionImpl(workItemNode3, Node.CONNECTION_DEFAULT_TYPE, end, Node.CONNECTION_DEFAULT_TYPE);
    KnowledgeBuilderImpl packageBuilder = new KnowledgeBuilderImpl();
    ProcessBuilderImpl processBuilder = new ProcessBuilderImpl(packageBuilder);
    processBuilder.buildProcess(process, null);
    List<KiePackage> list = new ArrayList<KiePackage>();
    list.addAll(packageBuilder.getKnowledgePackages());
    return list;
}
Also used : RuleFlowProcess(org.jbpm.ruleflow.core.RuleFlowProcess) StartNode(org.jbpm.workflow.core.node.StartNode) DroolsConsequenceAction(org.jbpm.workflow.core.impl.DroolsConsequenceAction) ActionNode(org.jbpm.workflow.core.node.ActionNode) ArrayList(java.util.ArrayList) ConnectionImpl(org.jbpm.workflow.core.impl.ConnectionImpl) ProcessBuilderImpl(org.jbpm.compiler.ProcessBuilderImpl) EndNode(org.jbpm.workflow.core.node.EndNode) KiePackage(org.kie.api.definition.KiePackage) KnowledgeBuilderImpl(org.drools.compiler.builder.impl.KnowledgeBuilderImpl) WorkItemNode(org.jbpm.workflow.core.node.WorkItemNode) Work(org.jbpm.process.core.Work) WorkImpl(org.jbpm.process.core.impl.WorkImpl)

Aggregations

WorkItemNode (org.jbpm.workflow.core.node.WorkItemNode)33 EndNode (org.jbpm.workflow.core.node.EndNode)15 StartNode (org.jbpm.workflow.core.node.StartNode)15 Work (org.jbpm.process.core.Work)14 ActionNode (org.jbpm.workflow.core.node.ActionNode)13 RuleFlowProcess (org.jbpm.ruleflow.core.RuleFlowProcess)12 ArrayList (java.util.ArrayList)10 WorkImpl (org.jbpm.process.core.impl.WorkImpl)10 SubProcessNode (org.jbpm.workflow.core.node.SubProcessNode)9 DroolsConsequenceAction (org.jbpm.workflow.core.impl.DroolsConsequenceAction)8 Variable (org.jbpm.process.core.context.variable.Variable)7 ObjectDataType (org.jbpm.process.core.datatype.impl.type.ObjectDataType)7 EventTypeFilter (org.jbpm.process.core.event.EventTypeFilter)7 RuleSetNode (org.jbpm.workflow.core.node.RuleSetNode)7 CompositeNode (org.jbpm.workflow.core.node.CompositeNode)6 EventSubProcessNode (org.jbpm.workflow.core.node.EventSubProcessNode)6 ForEachNode (org.jbpm.workflow.core.node.ForEachNode)6 NodeCreator (org.jbpm.process.test.NodeCreator)5 DroolsAction (org.jbpm.workflow.core.DroolsAction)5 Node (org.jbpm.workflow.core.Node)5