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");
}
}
}
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());
}
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");
}
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;
}
Aggregations