Search in sources :

Example 31 with ConnectionImpl

use of org.jbpm.workflow.core.impl.ConnectionImpl in project jbpm by kiegroup.

the class ProcessHandler method linkIntermediateLinks.

public static void linkIntermediateLinks(NodeContainer process, List<IntermediateLink> links) {
    if (null != links) {
        // Search throw links
        ArrayList<IntermediateLink> throwLinks = new ArrayList<IntermediateLink>();
        for (IntermediateLink aLinks : links) {
            if (aLinks.isThrowLink()) {
                throwLinks.add(aLinks);
            }
        }
        // Look for catch links for a throw link
        for (IntermediateLink throwLink : throwLinks) {
            ArrayList<IntermediateLink> linksWithSharedNames = new ArrayList<IntermediateLink>();
            for (IntermediateLink aLink : links) {
                if (throwLink.getName().equals(aLink.getName())) {
                    linksWithSharedNames.add(aLink);
                }
            }
            if (linksWithSharedNames.size() < 2) {
                throw new IllegalArgumentException("There should be at least 2 link events to make a connection");
            }
            linksWithSharedNames.remove(throwLink);
            // Make the connections
            Node t = findNodeByIdOrUniqueIdInMetadata(process, throwLink.getUniqueId());
            // connect throw to catch
            for (IntermediateLink catchLink : linksWithSharedNames) {
                Node c = findNodeByIdOrUniqueIdInMetadata(process, catchLink.getUniqueId());
                if (t != null && c != null) {
                    Connection result = new ConnectionImpl(t, NodeImpl.CONNECTION_DEFAULT_TYPE, c, NodeImpl.CONNECTION_DEFAULT_TYPE);
                    result.setMetaData("linkNodeHidden", "yes");
                }
            }
            // Remove processed links
            links.remove(throwLink);
            links.removeAll(linksWithSharedNames);
        }
        if (links.size() > 0) {
            throw new IllegalArgumentException(links.size() + " links were not processed");
        }
    }
}
Also used : HumanTaskNode(org.jbpm.workflow.core.node.HumanTaskNode) BoundaryEventNode(org.jbpm.workflow.core.node.BoundaryEventNode) StartNode(org.jbpm.workflow.core.node.StartNode) CompositeNode(org.jbpm.workflow.core.node.CompositeNode) StateNode(org.jbpm.workflow.core.node.StateNode) RuleSetNode(org.jbpm.workflow.core.node.RuleSetNode) SubProcessNode(org.jbpm.workflow.core.node.SubProcessNode) CompositeContextNode(org.jbpm.workflow.core.node.CompositeContextNode) StateBasedNode(org.jbpm.workflow.core.node.StateBasedNode) EventSubProcessNode(org.jbpm.workflow.core.node.EventSubProcessNode) FaultNode(org.jbpm.workflow.core.node.FaultNode) WorkItemNode(org.jbpm.workflow.core.node.WorkItemNode) ActionNode(org.jbpm.workflow.core.node.ActionNode) EndNode(org.jbpm.workflow.core.node.EndNode) EventNode(org.jbpm.workflow.core.node.EventNode) Node(org.kie.api.definition.process.Node) ArrayList(java.util.ArrayList) Connection(org.jbpm.workflow.core.Connection) ConnectionImpl(org.jbpm.workflow.core.impl.ConnectionImpl) IntermediateLink(org.jbpm.bpmn2.core.IntermediateLink)

Example 32 with ConnectionImpl

use of org.jbpm.workflow.core.impl.ConnectionImpl in project jbpm by kiegroup.

the class SingleSessionCommandServiceTest method getProcessTimer2.

private List<KiePackage> getProcessTimer2() {
    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);
    TimerNode timerNode = new TimerNode();
    timerNode.setId(2);
    timerNode.setName("Timer");
    Timer timer = new Timer();
    timer.setDelay("0");
    timerNode.setTimer(timer);
    process.addNode(timerNode);
    new ConnectionImpl(start, Node.CONNECTION_DEFAULT_TYPE, timerNode, Node.CONNECTION_DEFAULT_TYPE);
    ActionNode actionNode = new ActionNode();
    actionNode.setId(3);
    actionNode.setName("Action");
    DroolsConsequenceAction action = new DroolsConsequenceAction();
    action.setDialect("java");
    action.setConsequence("try { Thread.sleep(1000); } catch (Throwable t) {} System.out.println(\"Executed action\");");
    actionNode.setAction(action);
    process.addNode(actionNode);
    new ConnectionImpl(timerNode, Node.CONNECTION_DEFAULT_TYPE, actionNode, Node.CONNECTION_DEFAULT_TYPE);
    EndNode end = new EndNode();
    end.setId(6);
    end.setName("End");
    process.addNode(end);
    new ConnectionImpl(actionNode, Node.CONNECTION_DEFAULT_TYPE, end, Node.CONNECTION_DEFAULT_TYPE);
    KnowledgeBuilderImpl packageBuilder = new KnowledgeBuilderImpl();
    ProcessBuilderImpl processBuilder = new ProcessBuilderImpl(packageBuilder);
    processBuilder.buildProcess(process, null);
    return Arrays.asList(packageBuilder.getPackages());
}
Also used : RuleFlowProcess(org.jbpm.ruleflow.core.RuleFlowProcess) StartNode(org.jbpm.workflow.core.node.StartNode) Timer(org.jbpm.process.core.timer.Timer) DroolsConsequenceAction(org.jbpm.workflow.core.impl.DroolsConsequenceAction) EndNode(org.jbpm.workflow.core.node.EndNode) KnowledgeBuilderImpl(org.drools.compiler.builder.impl.KnowledgeBuilderImpl) ActionNode(org.jbpm.workflow.core.node.ActionNode) ConnectionImpl(org.jbpm.workflow.core.impl.ConnectionImpl) TimerNode(org.jbpm.workflow.core.node.TimerNode) ProcessBuilderImpl(org.jbpm.compiler.ProcessBuilderImpl)

Example 33 with ConnectionImpl

use of org.jbpm.workflow.core.impl.ConnectionImpl 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 34 with ConnectionImpl

use of org.jbpm.workflow.core.impl.ConnectionImpl 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

ConnectionImpl (org.jbpm.workflow.core.impl.ConnectionImpl)34 EndNode (org.jbpm.workflow.core.node.EndNode)23 StartNode (org.jbpm.workflow.core.node.StartNode)23 ActionNode (org.jbpm.workflow.core.node.ActionNode)21 RuleFlowProcess (org.jbpm.ruleflow.core.RuleFlowProcess)19 ArrayList (java.util.ArrayList)17 DroolsConsequenceAction (org.jbpm.workflow.core.impl.DroolsConsequenceAction)17 Test (org.junit.Test)16 AbstractBaseTest (org.jbpm.test.util.AbstractBaseTest)15 KieSession (org.kie.api.runtime.KieSession)15 DroolsAction (org.jbpm.workflow.core.DroolsAction)13 Action (org.jbpm.process.instance.impl.Action)12 EventNode (org.jbpm.workflow.core.node.EventNode)12 ProcessContext (org.kie.api.runtime.process.ProcessContext)12 EventTypeFilter (org.jbpm.process.core.event.EventTypeFilter)11 TestProcessEventListener (org.jbpm.process.test.TestProcessEventListener)9 Variable (org.jbpm.process.core.context.variable.Variable)8 ObjectDataType (org.jbpm.process.core.datatype.impl.type.ObjectDataType)8 SubProcessNode (org.jbpm.workflow.core.node.SubProcessNode)8 WorkItemNode (org.jbpm.workflow.core.node.WorkItemNode)8